|
|
@@ -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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|