Răsfoiți Sursa

工程师范围查询和部分搜索字段去掉

liugc 1 an în urmă
părinte
comite
1487d63458
1 a modificat fișierele cu 25 adăugiri și 0 ștergeri
  1. 25 0
      app/adminapi/lists/master_worker/MasterWorkerLists.php

+ 25 - 0
app/adminapi/lists/master_worker/MasterWorkerLists.php

@@ -33,6 +33,7 @@ use think\facade\Log;
 class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterface
 {
     public $count = 0;
+    public $range = 0;
     public $lon = 0;
     public $lat = 0;
     //所有派单限制条件: 工程师保护期  工程师可用金额限制(除去保护期工程师)     工程师接单状态   订单产品分类  订单坐标筛选    订单坐标距离排序
@@ -65,6 +66,27 @@ class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterfa
             $period_ids = MasterWorker::where('time_period','<>', '')->whereRaw($query_sql)->column('id');
             $where[] = [ 'mw.id','IN',$period_ids?:[0]];
         }
+        if(isset($this->params['category_ids']) && !empty($this->params['category_ids'])){
+            $sqls = [];
+            $category_ids =[];
+            foreach ($this->params['category_ids'] as $val){
+                ($val = json_decode($val,true))?($category_ids[] = end($val)):($category_ids[] = $val);
+            }
+            foreach ($category_ids as $item) {
+                $sqls[] = "FIND_IN_SET({$item}, category_ids) > 0";
+            }
+            $query_sql = implode(' OR ', $sqls);
+            Log::write('query_sql:'.$query_sql);
+
+            $period_ids = MasterWorker::where('category_ids','<>', '')->whereRaw($query_sql)->column('id');
+            $where[] = [ 'mw.id','IN',$period_ids?:[0]];
+        }
+        if( isset($this->params['longitude']) && isset($this->params['latitude']) && isset($this->params['range'])
+            && !empty($this->params['longitude']) && !empty($this->params['latitude']) && !empty($this->params['range']) ){
+            $this->lon = $this->params['longitude'];
+            $this->lat = $this->params['latitude'];
+            $this->range = $this->params['range'];
+        }
         // 用户昵称
         if (isset($this->params['nickname']) && !empty($this->params['nickname'])) {
             $where[] = ['mw.nickname|mw.worker_number', 'like','%' .$this->params['nickname'] . '%'];
@@ -115,6 +137,9 @@ class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterfa
             $fields[] = Db::raw('ROUND(6371* 1000 * ACOS(COS(RADIANS('.$this->lat.')) * COS(RADIANS(mw.lat)) * COS(RADIANS(mw.lon) - RADIANS('.$this->lon.')) + SIN(RADIANS('.$this->lat.')) * SIN(RADIANS(mw.lat))), 2) AS user_distance');
             $orders = 'user_distance';
             $having = '(user_distance - mw.distance) <= 0';
+            if($this->range){
+                $having = 'user_distance <= '.$this->range;
+            }
         }
         $list = MasterWorker::alias('mw')
             ->join('master_worker_register mwr', 'mwr.worker_id = mw.id')