Procházet zdrojové kódy

add - 销售工程师列表日期搜索/外部平台工单加单/无尾款抵上门费

liugc před 11 měsíci
rodič
revize
4b9119a807

+ 1 - 1
app/api/controller/GoodsController.php

@@ -30,7 +30,7 @@ class GoodsController extends BaseApiController
     public function categoryDetail()
     {
         $params = (new GoodsValidate())->goCheck('category');
-        $result = GoodsLogic::detail($params['goods_category_id'],'category',$this->userId);
+        $result = GoodsLogic::detail($params['goods_category_id'],'category',$this->userId,$params['service_work_id']??0);
         return $this->data($result);
     }
 

+ 24 - 0
app/api/controller/ServiceOrderController.php

@@ -308,4 +308,28 @@ class ServiceOrderController extends BaseApiController
         return $this->success('绑定成功', [], 1, 1);
     }
 
+
+    /**
+     * 终止结束服务 - 上门费直接给工程师
+     * @return \think\response\Json
+     * @author liugc <466014217@qq.com>
+     * @date 2025/5/5 19:03
+     */
+    public function terminateService()
+    {
+        $params = (new ServiceOrderValidate())->post()->goCheck('terminateService', [
+            'user_id' => $this->userId,
+            'user_info' => $this->userInfo
+        ]);
+        $params['isearnest'] = 0;
+        $result = ServiceWorkLogic::terminateService($params);
+        if (false === $result) {
+            return $this->fail(ServiceWorkLogic::getError());
+        }
+        return $this->success('终止服务成功', [], 1, 1);
+    }
+
+
+
+
 }

+ 27 - 2
app/api/logic/GoodsLogic.php

@@ -2,8 +2,10 @@
 namespace app\api\logic;
 
 use app\common\logic\BaseLogic;
+use app\common\model\external\ExternalPlatformGoods;
 use app\common\model\goods\Goods;
 use app\common\model\goods_category\GoodsCategory;
+use app\common\model\works\ServiceWork;
 use think\facade\Db;
 
 
@@ -23,9 +25,20 @@ class GoodsLogic extends BaseLogic
      * @author whitef
      * @date 2022/9/20 17:09
      */
-    public static function detail($id,$type){
+    public static function detail($id,$type,$userId = 0,$service_work_id = 0){
+        $where = [];
         if($type == 'category'){
-            $goods = Goods::where(['goods_category_id'=>$id,'user_id'=>0,'is_agent'=>0,'is_activity'=>0,'platform_value'=>0])->visible([
+            $where[] = ['goods_category_id','=',$id];
+            $where[] = ['user_id','=',0];
+            $where[] = ['is_agent','=',0];
+            $where[] = ['is_activity','=',0];
+            if($service_work_id > 0){
+                $platform_value = ServiceWork::where('id',$service_work_id)->value('external_platform_id');
+                $where[] = ['platform_value','=',$platform_value];
+            }else{
+                $where[] = ['platform_value','=',0];
+            }
+            $goods = Goods::where($where)->visible([
                 'id','goods_image','goods_name','goods_banners','good_unit','sell_num','base_service_fee',
                 'service_total','service_fee','service_image','fee_schedule','warranty_period','goods_payment_type','goods_category_id'
             ])->select()->toArray();
@@ -40,6 +53,9 @@ class GoodsLogic extends BaseLogic
         if(!empty($goods)){
             $data = [];
             foreach ($goods as $key => $value) {
+                if($service_work_id > 0){
+                    $value['service_fee'] = self::getPlatformServiceFee($platform_value,$value['id'])?:$value['service_fee'];
+                }
                 if($value['goods_payment_type'] == '2'){
                     $coupon = ($value['service_total']-$value['service_fee'])>0?'立减'.$value['service_total']-$value['service_fee']:'';
                 }
@@ -191,4 +207,13 @@ class GoodsLogic extends BaseLogic
             return false;
         }
     }
+
+    public static function getPlatformServiceFee($platform_value,$goods_id)
+    {
+        return ExternalPlatformGoods::where('external_platform_id',$platform_value)->where('goods_id',$goods_id)->value('service_fee');
+    }
+
+
+
+
 }

+ 2 - 2
app/api/logic/ServiceOrderLogic.php

@@ -176,7 +176,7 @@ class ServiceOrderLogic extends BaseLogic
             if(!empty($params['worker'])){
                 $worker_id = MasterWorker::where('worker_number',$params['worker'])->value('id');
                 $work_data['master_worker_id'] = $worker_id;
-                $work_data['work_status'] = 1;
+                $work_data['work_status'] = 4;
                 $work_data['dispatch_time'] = time();
                 $work_data['work_type'] = 2;
                 $work_data['data_type'] = 1;
@@ -438,7 +438,7 @@ class ServiceOrderLogic extends BaseLogic
             $order_info =  \app\common\model\recharge\RechargeOrder::with(['order_goods'=>function ($query) {
                 $query->visible(['goods_id','goods_name','goods_image','goods_number','good_unit']);
             },'service_work'=>function ($query) {
-                $query->visible(['id','work_sn','real_name','mobile','address','service_status','appointment_time','master_worker_id','work_images','explanation','finished_images','finished_time','spare_total','service_work_spare_id','refund_approval','property_activity_id','order_effective_id'])->append(['service_status_text','user_service_status','user_service_status_text']);
+                $query->visible(['id','work_sn','real_name','mobile','address','service_status','appointment_time','master_worker_id','work_images','explanation','finished_images','finished_time','spare_total','service_work_spare_id','refund_approval','property_activity_id','order_effective_id','external_platform_id'])->append(['service_status_text','user_service_status','user_service_status_text','external_platform_text']);
             }])
                 ->visible(['id','sn','payment_type','order_total','order_amount','paid_amount','pay_status','create_time','title','work_id'])
                 ->where([

+ 4 - 0
app/api/validate/ServiceOrderValidate.php

@@ -119,5 +119,9 @@ class ServiceOrderValidate extends BaseValidate
     {
         return $this->only(['sn','worker_id']);
     }
+    public function sceneTerminateService()
+    {
+        return $this->only(['id']);
+    }
 
 }

+ 5 - 1
app/common/model/works/ServiceWork.php

@@ -20,6 +20,7 @@ use app\api\logic\PerformanceLogic;
 use app\common\model\BaseModel;
 use app\common\model\equity\EquityConfig;
 use app\common\model\equity\UserEquity;
+use app\common\model\external\ExternalPlatform;
 use app\common\model\goods_category\GoodsCategory;
 use app\common\model\master_commission\MasterWorkerCommissionConfig;
 use app\common\model\master_commission\MasterWorkerCommissionRatio;
@@ -262,5 +263,8 @@ class ServiceWork extends BaseModel
         $thirdTypedata = array_column(ConfigLogic::getDictByType('third_type')['third_type'],'name','value');
         return $thirdTypedata[$data['third_type']];
     }
-
+    public function getExternalPlatformTextAttr($value,$data)
+    {
+        return ExternalPlatform::where('id',$data['external_platform_id'])->value('name');
+    }
 }

+ 13 - 3
app/workerapi/lists/MasterWorkerRegisterLists.php

@@ -34,7 +34,17 @@ class MasterWorkerRegisterLists extends BaseWorkerDataLists implements ListsSear
             '%like%' => ['name', 'mobile'],
         ];
     }
-
+    public function queryWhere()
+    {
+        $where = [];
+        if(isset($this->params['time_range']) && $this->params['time_range']){
+            $time_range = explode(',', $this->params['time_range']);
+            $startDateTime = strtotime($time_range[0]);
+            $endDateTime = strtotime($time_range[1])+86400-1;
+            $where[] = ['create_time','BETWEEN',[$startDateTime,$endDateTime]];
+        }
+        return $where;
+    }
 
     /**
      * @notes 获取列表
@@ -47,7 +57,7 @@ class MasterWorkerRegisterLists extends BaseWorkerDataLists implements ListsSear
      */
     public function lists(): array
     {
-        $list = MasterWorkerRegister::where($this->searchWhere)
+        $list = MasterWorkerRegister::where($this->searchWhere)->where($this->queryWhere())
             ->field(['*'])
             ->limit($this->limitOffset, $this->limitLength)
             ->order(['id' => 'desc'])
@@ -77,7 +87,7 @@ class MasterWorkerRegisterLists extends BaseWorkerDataLists implements ListsSear
      */
     public function count(): int
     {
-        return MasterWorkerRegister::where($this->searchWhere)->count();
+        return MasterWorkerRegister::where($this->searchWhere)->where($this->queryWhere())->count();
     }
 
 

+ 2 - 1
app/workerapi/logic/GoodsCategoryLogic.php

@@ -21,8 +21,9 @@ class GoodsCategoryLogic extends BaseLogic
     public static function getQRCode($params)
     {
         try {
+            //external_platform_id
             $response = (new WeChatMnpService())->getUnlimitedQRCode(
-                '&type=2&id='.$params['id'].'&worker='.$params['user_info']['worker_number'],
+                '&type=2&id='.$params['id'].'&worker='.$params['user_info']['worker_number'].'&service_work_id='.($params['service_work_id']??0),
                 "pages/good/good",
                 'release',//trial、release、develop
                 false