Преглед на файлове

add - 师傅服务分类

liugc преди 1 година
родител
ревизия
e8916c4b93
променени са 2 файла, в които са добавени 22 реда и са изтрити 2 реда
  1. 7 1
      app/adminapi/lists/master_worker/MasterWorkerLists.php
  2. 15 1
      app/adminapi/logic/master_worker/MasterWorkerLogic.php

+ 7 - 1
app/adminapi/lists/master_worker/MasterWorkerLists.php

@@ -78,15 +78,19 @@ class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterfa
         $customer_lon = 0;
         $customer_lat = 0;
         if(isset($this->params['order_id']) && $this->params['order_id']){
-            $lon_lat = (ServiceWork::where('id',$this->params['order_id'])->column("lon,lat"))[0];
+            $lon_lat = (ServiceWork::where('id',$this->params['order_id'])->column("lon,lat,goods_category_id"))[0];
             $customer_lon = $lon_lat['lon'];
             $customer_lat = $lon_lat['lat'];
+            $goods_category_id = $lon_lat['goods_category_id'];
+
+            // whereFindInSet('category_ids',$goods_category_id)->
         }
         // 无人在0,0坐标上
         if($customer_lon && $customer_lat){
             // 查出所有的师傅 -> 计算距离 -> 按距离排序 -> 分页
             $allList = MasterWorker::alias('mw')
                 ->join('master_worker_register mwr', 'mwr.worker_id = mw.id')
+                ->whereFindInSet('mw.category_ids',$goods_category_id)
                 ->where($this->searchWhere)
                 ->where($this->queryWhere())
                 ->field([
@@ -98,6 +102,7 @@ class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterfa
                 ->order(['mw.id' => 'desc'])
                 ->select()
                 ->toArray();
+
             $allList = array_column($allList, null, 'id');
             $mastersDistances = $this->mastersDistance($allList,$customer_lon,$customer_lat);
             $list = $this->limitPage($allList,$mastersDistances,$this->params['page_no']??1,$this->params['page_size']??10);
@@ -105,6 +110,7 @@ class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterfa
         }else{
             $list = MasterWorker::alias('mw')
                 ->join('master_worker_register mwr', 'mwr.worker_id = mw.id')
+                ->whereFindInSet('mw.category_ids',$goods_category_id)
                 ->where($this->searchWhere)
                 ->where($this->queryWhere())
                 ->field([

+ 15 - 1
app/adminapi/logic/master_worker/MasterWorkerLogic.php

@@ -85,8 +85,16 @@ class MasterWorkerLogic extends BaseLogic
      */
     public static function edit(array $params): bool
     {
+        if($params['category_ids']){
+            foreach ($params['category_ids'] as $val){
+                $ids[] = end($val);
+            }
+            //$params['category_ids'] = ["goods_category_ids"=>$params['category_ids'],"ids"=>$ids];
+            $params['category_ids'] = implode(',',$ids);
+        }
         Db::startTrans();
         try {
+
             MasterWorker::where('id', $params['id'])->update([
                 'sn' => $params['sn'],
                 'avatar' => $params['avatar'],
@@ -114,6 +122,7 @@ class MasterWorkerLogic extends BaseLogic
                 'installment_ratio' => $params['installment_ratio'],
                 'retention_pay_status' => $params['retention_pay_status'],
                 'retention_money_status' => $params['retention_money_status'],
+                'category_ids' => $params['category_ids']??'',
             ]);
             Db::commit();
             return true;
@@ -147,11 +156,16 @@ class MasterWorkerLogic extends BaseLogic
      */
     public static function detail($params): array
     {
-        return MasterWorker::with(['workerInfo'=>function(Query $query){
+        $info = MasterWorker::with(['workerInfo'=>function(Query $query){
             $query->field('worker_id,real_name,id_card,id_card_front_img,id_card_opposite_img,mobile,address');
         },'workerRegister'=>function(Query $query){
             $query->field('worker_id,maintain_exp_type,other_exp_type,city,vehicle_type,name,age,mobile')->append(['maintain_exp_type_text','other_exp_type_text','vehicle_type_text','city_text']);
         }])->findOrEmpty($params['id'])->toArray();
+        if($info['category_ids']){
+            $info['category_ids'] = explode(',',$info['category_ids']);
+            $info['category_ids'] = array_map('intval', $info['category_ids']);
+        }
+        return $info;
     }
 
     /**