Prechádzať zdrojové kódy

add - 终止结束服务

liugc 1 rok pred
rodič
commit
1fc08cec78

+ 16 - 0
app/adminapi/controller/works/ServiceWorkController.php

@@ -236,4 +236,20 @@ class ServiceWorkController extends BaseAdminController
         }
         return $this->success('添加成功', [], 1, 1);
     }
+    /**
+     * 终止服务
+     */
+    public function terminateService()
+    {
+        $params = request()->post();
+        $result = ServiceWorkLogic::terminateService($params);
+        if (false === $result) {
+            return $this->fail(ServiceWorkLogic::getError());
+        }
+        return $this->success('操作成功', [], 1, 1);
+    }
+
+
+
+
 }

+ 49 - 0
app/adminapi/logic/works/ServiceWorkLogic.php

@@ -15,7 +15,9 @@
 namespace app\adminapi\logic\works;
 
 use app\common\enum\ThirdTypeEnum;
+use app\common\enum\worker\WorkerAccountLogEnum;
 use app\common\logic\ThirdOrderLogic;
+use app\common\logic\WorkerAccountLogLogic;
 use app\common\model\third\ThirdOrders;
 use think\Exception;
 use think\db\Query;
@@ -1072,4 +1074,51 @@ class ServiceWorkLogic extends BaseLogic
             return false;
         }
     }
+
+
+    /**
+     * 终止结束服务操作
+     */
+    public static function terminateService($params): bool
+    {
+        Db::startTrans();
+        try {
+            $serviceWork = ServiceWork::where('work_pay_status',1)
+                ->where('master_worker_id','>',0)
+                ->whereIn('work_status',[4,5,6])
+                ->where('id',$params['id'])->findOrEmpty();
+            if($serviceWork->isEmpty()){
+                throw new \Exception('该工单状态不可执行结束服务');
+            }
+            $paid_amount = RechargeOrder::where('work_id', $params['id'])->where('payment_type', 1)->value('paid_amount');
+            if($paid_amount > 0){
+                // 存在上门费给工程师
+                Log::info('终止结束服务工单'.$serviceWork->id.',上门费:'.$paid_amount);
+                WorkerAccountLogLogic::addAccountLog($serviceWork,$paid_amount,WorkerAccountLogEnum::UM_INC_ADMIN,WorkerAccountLogEnum::INC);
+            }
+            ServiceWork::where('id', $params['id'])->update([
+                'work_status' => 7,
+                'user_confirm_status' => 5,
+                'service_status' => 3,
+                'work_pay_status' => 2, // 已结算则不执行 onAfterUpdate
+                'remark' => ($serviceWork->remark?:'')." | 终止结束服务:上门费-{$paid_amount}"
+            ]);
+            ServiceWorkLog::create([
+                'work_id' => $params['id'],
+                'master_worker_id' => $serviceWork->master_worker_id,
+                'opera_log' => "工单:{$serviceWork->work_sn} 终止结束服务"
+            ]);
+
+            Db::commit();
+            Log::info('终止结束服务'.json_encode([$serviceWork]));
+            return true;
+        } catch (\Exception $e) {
+            Db::rollback();
+            self::setError($e->getMessage());
+            Log::info('终止结束服务-Error'.json_encode([$e->getMessage()]));
+            return false;
+        }
+    }
+
+
 }