| 
					
					
						
							
						
					
					
				 | 
				@ -8,6 +8,7 @@ use App\Models\User; | 
			
		
		
	
		
			
				 | 
				 | 
				use Dcat\Admin\Admin; | 
				 | 
				 | 
				use Dcat\Admin\Admin; | 
			
		
		
	
		
			
				 | 
				 | 
				use Dcat\Admin\Widgets\ApexCharts\Chart; | 
				 | 
				 | 
				use Dcat\Admin\Widgets\ApexCharts\Chart; | 
			
		
		
	
		
			
				 | 
				 | 
				use Dcat\Admin\Widgets\Metrics\Bar; | 
				 | 
				 | 
				use Dcat\Admin\Widgets\Metrics\Bar; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				use Illuminate\Database\Eloquent\Model; | 
			
		
		
	
		
			
				 | 
				 | 
				use Illuminate\Http\Request; | 
				 | 
				 | 
				use Illuminate\Http\Request; | 
			
		
		
	
		
			
				 | 
				 | 
				use Illuminate\Support\Arr; | 
				 | 
				 | 
				use Illuminate\Support\Arr; | 
			
		
		
	
		
			
				 | 
				 | 
				use Illuminate\Support\Facades\DB; | 
				 | 
				 | 
				use Illuminate\Support\Facades\DB; | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -70,46 +71,53 @@ class UserStatistics extends Chart | 
			
		
		
	
		
			
				 | 
				 | 
					 */ | 
				 | 
				 | 
					 */ | 
			
		
		
	
		
			
				 | 
				 | 
					protected function buildData() | 
				 | 
				 | 
					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)) { | 
				 | 
				 | 
						switch (request('time_key', 0)) { | 
			
		
		
	
		
			
				 | 
				 | 
							case '1': | 
				 | 
				 | 
							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; | 
				 | 
				 | 
								break; | 
			
		
		
	
		
			
				 | 
				 | 
							case '30': | 
				 | 
				 | 
							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; | 
				 | 
				 | 
								break; | 
			
		
		
	
		
			
				 | 
				 | 
							case '365': | 
				 | 
				 | 
							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; | 
				 | 
				 | 
								break; | 
			
		
		
	
		
			
				 | 
				 | 
							default: | 
				 | 
				 | 
							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(); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
						$userNum = 0; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
						$userArr = []; | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						$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'); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						$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([ | 
				 | 
				 | 
						$this->withData([ | 
			
		
		
	
		
			
				 | 
				 | 
								[ | 
				 | 
				 | 
								[ | 
			
		
		
	
		
			
				 | 
				 | 
									'name' => '用户数', | 
				 | 
				 | 
									'name' => '用户数', | 
			
		
		
	
		
			
				 | 
				 | 
									'data' => $userArr | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
									'data' => Arr::pluck($users,'count') | 
			
		
		
	
		
			
				 | 
				 | 
								], | 
				 | 
				 | 
								], | 
			
		
		
	
		
			
				 | 
				 | 
							] | 
				 | 
				 | 
							] | 
			
		
		
	
		
			
				 | 
				 | 
						); | 
				 | 
				 | 
						); | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
					
				 | 
				
  |