| 
					
					
						
							
						
					
					
				 | 
				@ -7,6 +7,8 @@ use App\Models\Advertising; | 
			
		
		
	
		
			
				 | 
				 | 
				use App\Models\AgentProduct; | 
				 | 
				 | 
				use App\Models\AgentProduct; | 
			
		
		
	
		
			
				 | 
				 | 
				use App\Models\Category; | 
				 | 
				 | 
				use App\Models\Category; | 
			
		
		
	
		
			
				 | 
				 | 
				use App\Models\UserFav; | 
				 | 
				 | 
				use App\Models\UserFav; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				use App\Models\Views\AgentProduct as AgentProductView; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				use Illuminate\Support\Facades\DB; | 
			
		
		
	
		
			
				 | 
				 | 
				use Illuminate\Support\Facades\Storage; | 
				 | 
				 | 
				use Illuminate\Support\Facades\Storage; | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				/** | 
				 | 
				 | 
				/** | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -19,17 +21,35 @@ class AgentProductController extends Controller | 
			
		
		
	
		
			
				 | 
				 | 
					// 代理商产品列表
 | 
				 | 
				 | 
					// 代理商产品列表
 | 
			
		
		
	
		
			
				 | 
				 | 
					public function index() | 
				 | 
				 | 
					public function index() | 
			
		
		
	
		
			
				 | 
				 | 
					{ | 
				 | 
				 | 
					{ | 
			
		
		
	
		
			
				 | 
				 | 
						$formData = request()->only(['category_id', 'type', 'by']); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						$formData = request()->only(['category_id', 'type', 'by', 'lat', 'lng']); | 
			
		
		
	
		
			
				 | 
				 | 
						$category_id  = $formData['category_id'] ?? 0; | 
				 | 
				 | 
						$category_id  = $formData['category_id'] ?? 0; | 
			
		
		
	
		
			
				 | 
				 | 
						$type = $formData['type'] ?? 0; | 
				 | 
				 | 
						$type = $formData['type'] ?? 0; | 
			
		
		
	
		
			
				 | 
				 | 
						$by = $formData['by'] ?? 0; | 
				 | 
				 | 
						$by = $formData['by'] ?? 0; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						$lat = $formData['lat'] ?? 0; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						$lng = $formData['lng'] ?? 0; | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
						$list = AgentProduct::list($this->agent_id); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						$list = AgentProductView::list($this->agent_id); | 
			
		
		
	
		
			
				 | 
				 | 
						if ($category_id) { | 
				 | 
				 | 
						if ($category_id) { | 
			
		
		
	
		
			
				 | 
				 | 
							$list = $list->whereIn('category_id', [$category_id, ...$this->get_category_child_ids($category_id)]); | 
				 | 
				 | 
							$list = $list->whereIn('category_id', [$category_id, ...$this->get_category_child_ids($category_id)]); | 
			
		
		
	
		
			
				 | 
				 | 
						} | 
				 | 
				 | 
						} | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
						$fields = ['id', 'sale', 'updated_at', 'price']; //排序字段 TODO 还有距离排序
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						// 距离排序,TODO 优化
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						if ($type == 4) { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
							$list = $list->addSelect(DB::raw(<<<SQL | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				round( | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
					(((6371.393 * 2) * asin( | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						sqrt(( | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
							pow( sin((((( {$lat} * 3.1415926 ) / 180 ) - (( `latitude` * pi()) / 180 )) / 2 )), 2 ) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
							+ | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
							( | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
								(cos((({$lat} * 3.1415926) / 180)) * cos(((`latitude` * pi()) / 180))) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
								* | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
								pow( sin((((( {$lng} * 3.1415926 ) / 180 ) - (( `logitude` * pi()) / 180 )) / 2 )), 2 )))) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
					)) * 1000),0) AS `distance_m` | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				SQL)); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						$fields = ['id', 'sale', 'updated_at', 'price', 'distance_m']; //排序字段 TODO 还有距离排序
 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
						$field = $fields[$type] ?? $fields[0]; | 
				 | 
				 | 
						$field = $fields[$type] ?? $fields[0]; | 
			
		
		
	
		
			
				 | 
				 | 
						$by = $by == 0 ? 'desc' : 'asc'; | 
				 | 
				 | 
						$by = $by == 0 ? 'desc' : 'asc'; | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
					
				 | 
				
  |