| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -8,6 +8,7 @@ use App\Models\User; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use Dcat\Admin\Admin; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use Dcat\Admin\Widgets\ApexCharts\Chart; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use Dcat\Admin\Widgets\Metrics\Bar; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use Illuminate\Database\Eloquent\Model; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use Illuminate\Http\Request; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use Illuminate\Support\Arr; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use Illuminate\Support\Facades\DB; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -70,46 +71,53 @@ class UserStatistics extends Chart | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						protected function buildData() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$query = User::query() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								->where('agent_id',Admin::user()->id) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								->select('*'); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$dateTime = request('created_at', 0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if ($dateTime) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								$query->whereBetween('created_at',$dateTime); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							switch (request('time_key', 0)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case '1': | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at),'-',DAY(created_at)) AS statistics_time")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									$time = "DATE_FORMAT(created_at,'%Y-%m-%d')"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case '30': | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at)) AS statistics_time")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									$time = "DATE_FORMAT(created_at,'%Y-%m')"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								case '365': | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									$query->addSelect(DB::raw("count(id)  as sum_price,CONCAT(YEAR(created_at)) AS statistics_time")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									$time = "DATE_FORMAT(created_at,'%Y')"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								default: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									$query->addSelect(DB::raw("count(id)  as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at),'-',DAY(created_at)) AS statistics_time")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									$time = "DATE_FORMAT(created_at,'%Y-%m-%d')"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$users = $query->groupBy('statistics_time') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								->orderBy('statistics_time') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								->get(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$model = new User; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$table = $model->getTable(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$right = DB::table(function ($query) use ($table,$time){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								$query->selectRaw($time." AS tart_dat") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									->where('agent_id',Admin::user()->id) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									->from($table) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									->groupBy('tart_dat'); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							},'l_tab'); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$userNum = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$userArr = []; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$users = DB::table(function ($query) use ($table,$time) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								$query->selectRaw($time ." AS start_date") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									->where('agent_id',Admin::user()->id) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									->from($table); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							},'r_tab') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								->joinSub($right, 'l_tab', function ($join) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									$join->on('l_tab.tart_dat', '>=', 'r_tab.start_date'); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								}) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								->addSelect(DB::raw('tart_dat as statistics_time,count(tart_dat) as count')) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								->orderBy('tart_dat') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								->groupBy('tart_dat'); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							foreach ($users as $user) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								$userNum += $user->sum_price; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								array_push($userArr,$userNum); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$dateTime = request('created_at', 0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if ($dateTime) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								$users->whereBetween('tart_dat',$dateTime); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$users = $users->get() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								->toArray(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							$this->withData([ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									[ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										'name' => '用户数', | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										'data' => $userArr | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										'data' => Arr::pluck($users,'count') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									], | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |