Jelajahi Sumber

工程师确认上门流程

fang 1 tahun lalu
induk
melakukan
ab74e45020

+ 17 - 2
app/api/controller/notify/UserConfirmController.php

@@ -2,8 +2,12 @@
 
 namespace app\api\controller\notify;
 
+use app\adminapi\logic\works\ServiceWorkLogic;
 use app\api\controller\BaseApiController;
 use app\api\validate\UserConfirmValidate;
+use app\common\model\master_worker\MasterWorker;
+use app\common\model\works\ServiceWork;
+use think\Exception;
 
 /**
  *
@@ -15,11 +19,22 @@ class UserConfirmController extends BaseApiController
 
     public array $notNeedLogin = ['confirmDoor'];
 
-    public function ConfirmDoor()
+    public function confirmDoor()
     {
         $params = (new UserConfirmValidate())->post()->goCheck('confirmDoor');
         try {
-            $decryptData = decrypt($params['code'], \think\facade\Config::get('project.work_sn_key'));
+            $work_sn = decrypt($params['code'], \think\facade\Config::get('project.work_sn_key'));
+            $work = ServiceWork::where(['work_sn'=>$work_sn,'mobile'=>$params['phone']])->findOrEmpty();
+            if($work->isEmpty()){
+                throw new Exception('工单不存在');
+            }
+            $params['user_id'] = $work['master_worker_id'];//工程师信息
+            $params['user_info'] = MasterWorker::where('id',$work['master_worker_id'])->field('worker_number,real_name')->findOrEmpty();//工程师信息
+            $params['work_sn'] = $work_sn;
+            $result = ServiceWorkLogic::confirmDoor($params);
+            if (false === $result) {
+                throw new Exception(ServiceWorkLogic::getError());
+            }
         }catch (\Exception $e){
             return $this->fail($e->getMessage());
         }

+ 26 - 1
app/api/validate/UserConfirmValidate.php

@@ -2,6 +2,8 @@
 namespace app\api\validate;
 
 
+use app\common\enum\notice\NoticeEnum;
+use app\common\service\sms\SmsDriver;
 use app\common\validate\BaseValidate;
 
 /**
@@ -15,7 +17,7 @@ class UserConfirmValidate extends BaseValidate
     protected $rule = [
         'code' => 'require',
         'phone'=>'require',
-        'sms_code'=>'require',
+        'sms_code'=>'require|checkConfig',
     ];
 
     protected $message = [
@@ -30,4 +32,27 @@ class UserConfirmValidate extends BaseValidate
         return $this->only(['code','phone','sms_code']);
     }
 
+    /**
+     * @notes 登录场景相关校验
+     * @param $sms_code
+     * @param $rule
+     * @param $data
+     * @return bool|string
+     * @author 段誉
+     * @date 2022/9/15 14:37
+     */
+    public function checkConfig($sms_code, $rule, $data)
+    {
+        if (!isset($sms_code)) {
+            return '请输入手机验证码';
+        }
+        $code = $data['code'];
+        $smsDriver = new SmsDriver();
+        $result = $smsDriver->verify($data['phone'], $code, NoticeEnum::USER_CONFIRM_WORK);
+        if ($result) {
+            return true;
+        }
+        return '验证码错误';
+    }
+
 }

+ 5 - 1
app/common/enum/notice/NoticeEnum.php

@@ -43,6 +43,9 @@ class NoticeEnum
      */
     const ACCOUNT_PASSWORD =107;
     const WORKER_EXAMINE =108;
+
+    const USER_CONFIRM_WORK = 109;//用户确认工单状态场景
+
     /**
      * 指定用户的类型 1:工程师,2:用户
      */
@@ -134,7 +137,8 @@ class NoticeEnum
             //其它
             'OTHER' => self::OTHER_CAPTCHA,
             //工程师入住
-            'GCSSJHM' => self::GCSSJHM_CAPTCHA
+            'GCSSJHM' => self::GCSSJHM_CAPTCHA,
+            'USER_CONFIRM_WORK' => self::USER_CONFIRM_WORK,
         ];
         return $scene[$tag] ?? '';
     }

+ 1 - 1
app/workerapi/controller/WorksController.php

@@ -356,7 +356,7 @@ class WorksController extends BaseApiController
      */
     public function showDoorCode(): \think\response\Json
     {
-        $params = (new ServiceWorkValidate())->get()->goCheck('doorCode', [
+        $params = (new ServiceWorkValidate())->get()->goCheck('door', [
             'user_id' => $this->userId,
             'user_info' => $this->userInfo
         ]);