Explorar el Código

Merge remote-tracking branch 'origin/master'

whitefang hace 1 año
padre
commit
da5bad105c

+ 14 - 1
app/adminapi/controller/works/ReturnWorkController.php

@@ -20,6 +20,7 @@ use app\adminapi\controller\BaseAdminController;
 use app\adminapi\lists\works\ReturnWorkLists;
 use app\adminapi\logic\works\IssueWorkLogic;
 use app\adminapi\logic\works\ReturnWorkLogic;
+use app\adminapi\logic\works\ServiceWorkLogic;
 use app\adminapi\validate\works\ReturnWorkValidate;
 
 
@@ -118,12 +119,24 @@ class ReturnWorkController extends BaseAdminController
         if (true === $result) {
             $issueWork = IssueWorkLogic::detail(['id'=>$params['issue_work_id']]);
             // 订单返修通知【给用户】
-            $res = event('Notice',  [
+            event('Notice',  [
                 'scene_id' => 121,
                 'params' => [
                     'user_id' => $issueWork['user_id']
                 ]
             ]);
+            // 工程师预约上门通知【给工程师的通知,仅限公众号】
+            $returnWork = ReturnWorkLogic::detail(['issue_work_id'=>$params['issue_work_id']]);
+            $serviceWork = ServiceWorkLogic::detail(['id'=>$returnWork['service_work_id']]);
+            event('Notice',  [
+                'scene_id' => 116,
+                'params' => [
+                    'user_id' => $returnWork['master_worker_id'],
+                    'thing5' => $serviceWork['title'],
+                    'time10' => $returnWork['appointment_time'],
+                    'thing3' => (iconv_strlen($serviceWork['address'])>15)?(mb_substr($serviceWork['address'],0,15,'UTF-8').'...'):$serviceWork['address'],
+                ]
+            ]);
             return $this->success('成功', [], 1, 1);
         }
         return $this->fail(ReturnWorkLogic::getError());

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

@@ -89,6 +89,7 @@ class ServiceWorkController extends BaseAdminController
                     'scene_id' => 118,
                     'params' => [
                         'user_id' => $workDetail['master_worker_id'],
+                        'order_id' => $workDetail['id'],
                         'thing4' => $workDetail['title'],
                         'time5' => $workDetail['appointment_time'],
                         'time6' => $params['appointment_time'],
@@ -185,4 +186,16 @@ class ServiceWorkController extends BaseAdminController
         return $this->fail(ServiceWorkLogic::getError());
     }
 
+    public function cancelAllocation()
+    {
+        $params = (new ServiceWorkValidate())->post()->goCheck('allocateWorker');
+        $result = ServiceWorkLogic::cancelAllocation($params,$this->adminInfo);
+        if (true === $result) {
+            return $this->success('操作成功!', [], 1, 1);
+        }
+        return $this->fail(ServiceWorkLogic::getError());
+    }
+
+
+
 }

+ 7 - 3
app/adminapi/lists/master_worker/MasterWorkerExamineLists.php

@@ -45,11 +45,15 @@ class MasterWorkerExamineLists extends BaseAdminDataLists implements ListsSearch
     }
     public function queryWhere(){
         $where = [];
-        $infoWorkerIds = MasterWorkerInfo::where('audit_state',0)->column('worker_id');
+        if(isset($this->params['audit_state']) && $this->params['audit_state']!=''){
+            $ids = MasterWorker::where('audit_state',$this->params['audit_state'])->column('id');
+            $where[] = ['id', 'IN', $ids?:[0]];
+            //dd($ids);
+        }
+        /*$infoWorkerIds = MasterWorkerInfo::where('audit_state',0)->column('worker_id');
         $bankWorkerIds = BankAccount::where('audit_state',0)->column('worker_id');
         $agreeWorkerIds = MasterWorkerAgree::where('audit_state',0)->column('worker_id');
-        $ids = array_merge($infoWorkerIds,$bankWorkerIds,$agreeWorkerIds);
-        $where[] = ['id', 'IN', $ids?:[0]];
+        $ids = array_merge($infoWorkerIds,$bankWorkerIds,$agreeWorkerIds);*/
         if(isset($this->params['real_name']) && !empty($this->params['real_name'])){
             $where[] = ['id', 'IN', MasterWorker::where([['real_name', 'like', "%{$this->params['real_name']}%"]])->column('worker_id')?:[0]];
         }

+ 2 - 2
app/adminapi/lists/master_worker/MasterWorkerLists.php

@@ -45,8 +45,8 @@ class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterfa
     {
         // 派单搜索条件 - 工程师接单状态
         return [
-            '=' => ['mw.sn', 'mw.real_name', 'mw.account', 'mw.password', 'mw.mobile', 'mw.sex', 'mw.channel', 'mw.is_disable', 'mw.is_new_user', 'mw.create_time', 'mw.update_time', 'mw.accept_order_status', 'mw.cooperation', 'mw.time_period','mw.audit_state'],
-
+            '=' => ['mw.sn', 'mw.real_name', 'mw.account', 'mw.password', 'mw.mobile', 'mw.sex', 'mw.channel', 'mw.is_disable', 'mw.is_new_user', 'mw.create_time', 'mw.update_time', 'mw.accept_order_status', 'mw.cooperation','mw.audit_state'],
+            'in' => ['mw.time_period']
         ];
     }
 

+ 4 - 4
app/adminapi/logic/master_worker/MasterWorkerExamineLogic.php

@@ -71,17 +71,17 @@ class MasterWorkerExamineLogic extends BaseLogic
     {
         Db::startTrans();
         try {
-            isset($params['workerInfo']['id']) && MasterWorkerInfo::where('id', $params['workerInfo']['id'])->update([
+            !empty($params['workerInfo']['id']) && MasterWorkerInfo::where('id', $params['workerInfo']['id'])->update([
                 'audit_state' => $params['workerInfo']['audit_state'],
             ]);
-            isset($params['workerAgree']['id']) && MasterWorkerAgree::where('id', $params['workerAgree']['id'])->update([
+            !empty($params['workerAgree']['id']) && MasterWorkerAgree::where('id', $params['workerAgree']['id'])->update([
                 'audit_state' => $params['workerAgree']['audit_state'],
             ]);
-            isset($params['bankAccount']['id']) && BankAccount::where('id', $params['bankAccount']['id'])->update([
+            !empty($params['bankAccount']['id']) && BankAccount::where('id', $params['bankAccount']['id'])->update([
                 'audit_state' => $params['bankAccount']['audit_state'],
             ]);
 
-            if(!isset($params['workerInfo']['id']) || !isset($params['workerAgree']['id']) || !isset($params['bankAccount']['id'])) {
+            if(empty($params['workerInfo']['id']) || empty($params['workerAgree']['id']) || empty($params['bankAccount']['id'])) {
                 $audit_state = 3;
             }elseif ((int)$params['workerInfo']['audit_state'] === 0 || (int)$params['workerAgree']['audit_state'] === 0 || (int)$params['bankAccount']['audit_state'] === 0){
                 $audit_state = 0;

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

@@ -722,5 +722,43 @@ class ServiceWorkLogic extends BaseLogic
         }
     }
 
+    public static function cancelAllocation($params,$userInfo){
+        Db::startTrans();
+        try {
+
+            $work = ServiceWork::findOrEmpty($params['id']);
+            if($work->isEmpty()){
+                throw new Exception('工单不存在');
+            }
+            if($work->work_status >=6 ){
+                throw new \Exception('工单状态只能修改待结算之前的');
+            }
+            $worker = MasterWorker::where(['id'=>$work->master_worker_id])->findOrEmpty();
+            if($worker->isEmpty()){
+                throw new \Exception('工程师不存在');
+            }
+            MasterWorker::setWorktotal('dec',$work->master_worker_id);
+            $work->master_worker_id = 0;
+            $work->work_status = 0;
+            $work->dispatch_time = 0;
+            $work->save();
+
+            $work_log = [
+                'work_id'=>$work->id,
+                'master_worker_id'=>$params['master_worker_id'],
+                'opera_log'=>'后台用户['.$userInfo['admin_id'].']'.$userInfo['name'].'于'.date('Y-m-d H:i:s',time()).'取消了工程师'.'编号['.$worker->worker_number.']'.$worker->real_name
+            ];
+            ServiceWorkerAllocateWorkerLogic::add($work_log);
+            Db::commit();
+            return true;
+        }catch(\Exception $e){
+            Db::rollback();
+
+            dd($e->getMessage());
+
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
 
 }

+ 3 - 7
app/api/controller/ServiceOrderController.php

@@ -155,13 +155,8 @@ class ServiceOrderController extends BaseApiController
         if (false === $result) {
             return $this->fail(ServiceOrderLogic::getError());
         }
-        // 订单完成通知【给用户】
-        $res = event('Notice',  [
-            'scene_id' => 120,
-            'params' => [
-                'user_id' => $params['user_id']
-            ]
-        ]);
+        // 订单完成通知【给用户】 - 全款 -通知
+        ServiceOrderLogic::serviceFinishNotice($params);
         return $this->success('已确认服务完成', [], 1, 1);
     }
 
@@ -267,6 +262,7 @@ class ServiceOrderController extends BaseApiController
             'scene_id' => 118,
             'params' => [
                 'user_id' => $result['master_worker_id'],
+                'order_id' => $order['work_id'],
                 'thing4' => $result['title'],
                 'time5' => date('Y-m-d H:i:s',$workDetail['last_appointment_time']),
                 'time6' => date('Y-m-d H:i:s',$workDetail['this_appointment_time']),

+ 26 - 0
app/api/logic/ServiceOrderLogic.php

@@ -905,4 +905,30 @@ class ServiceOrderLogic extends BaseLogic
         }
     }
 
+    /**
+     * 订单完成通知【给用户】 - 全款 -通知
+     * @param $params
+     * @return bool
+     */
+    public static function serviceFinishNotice($params)
+    {
+        try {
+            $order = RechargeOrder::where('sn', $params['sn'])
+                ->where('payment_type','=',0)
+                ->where('pay_status','=',1)
+                ->findOrEmpty();
+            if(!$order->isEmpty()){
+                event('Notice',  [
+                    'scene_id' => 120,
+                    'params' => [
+                        'user_id' => $order['user_id']
+                    ]
+                ]);
+            }
+            return true;
+        }catch (\Exception $e) {
+            return false;
+        }
+    }
+
 }

+ 2 - 0
app/common/logic/NoticeLogic.php

@@ -159,6 +159,8 @@ class NoticeLogic extends BaseLogic
         $page = '';
         switch (intval($sceneId)) {
             case 113:
+            case 118:
+            //case 100:
                 $page = "/subPages/detail/detail?id={$extraId}";
                 break;
             case 116:

+ 15 - 0
app/common/service/pay/WeChatPayService.php

@@ -400,6 +400,7 @@ class WeChatPayService extends BasePayService
                                         'scene_id' => 100,
                                         'params' => [
                                             'user_id' => 0,
+                                            'order_id' => $workDetail['id'],
                                             'thing3' => $workDetail['title'],
                                             'time6' => $workDetail['appointment_time'],
                                             'phone_number8' => $workDetail['mobile'],
@@ -407,6 +408,20 @@ class WeChatPayService extends BasePayService
                                     ]);
                                 }
                             }
+
+                            // 订单完成通知【给用户】 - 尾款 -通知
+                            $order = RechargeOrder::where('sn', $message['out_trade_no'])
+                                ->where('payment_type','=',2)
+                                ->where('pay_status','=',1)
+                                ->findOrEmpty();
+                            if(!$order->isEmpty()){
+                                event('Notice',  [
+                                    'scene_id' => 120,
+                                    'params' => [
+                                        'user_id' => $order['user_id']
+                                    ]
+                                ]);
+                            }
                         }
                         break;
                 }

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

@@ -155,6 +155,7 @@ class WorksController extends BaseApiController
             'scene_id' => 116,
             'params' => [
                 'user_id' => $workDetail['master_worker_id'],
+                'order_id' => $workDetail['id'],
                 'thing5' => $workDetail['title'],
                 'time10' => $workDetail['appointment_time'],
                 'thing3' => (iconv_strlen($workDetail['address'])>15)?(mb_substr($workDetail['address'],0,15,'UTF-8').'...'):$workDetail['address'],