$this->userId])->whereIn('service_status','0,1,2')->where('work_status','<>',1)->where('work_pay_status','>',0)->count(); $result['assign_work_count'] = ServiceWork::where(['master_worker_id'=>$this->userId,'work_status'=>1])->where('work_pay_status','>',0)->count(); $result['pick_work_count'] = 0; $result['return_work_count'] = ReturnWork::where(['master_worker_id'=>$this->userId])->where('return_work_status','<>',4)->count(); $result['issue_work_count'] = IssueWork::where(['master_worker_id'=>$this->userId])->whereIn('issue_approval','1,2,3')->count(); $result['review_work_count'] = ServiceWork::where(['master_worker_id'=>$this->userId,'work_status'=>7])->count(); return $this->data($result); } /** * 服务工单列表-全部 * @return \think\response\Json */ public function serviceWorkList() { return $this->dataLists(new ServiceWorkLists()); } /** * 派单 * @return \think\response\Json */ public function assignWorkList() { return $this->dataLists(new ServiceAssignWorkLists()); } /** * 历史工单 * @return \think\response\Json */ public function historyWorkList() { return $this->dataLists(new HistoryWorkLists()); } /** * 领取服务单 * @return \think\response\Json */ public function pickWork() { $params = (new ServiceWorkValidate())->post()->goCheck('pick', [ 'user_id' => $this->userId, 'user_info' => $this->userInfo ]); $result = ServiceWorkLogic::pickWork($params); if (false === $result) { return $this->fail(ServiceWorkLogic::getError()); } // 用户订单被领单通知【给用户的通知】 $workDetail = ServiceWorkLogic::detail($params); event('Notice', [ 'scene_id' => 114, 'params' => [ 'user_id' => $workDetail['user_id'], ] ]); return $this->success('领取成功', [], 1, 1); } /** * 工单详情 * @return \think\response\Json */ public function detail() { try { $params = (new ServiceWorkValidate())->goCheck('detail',[ 'user_id' => $this->userId, 'user_info' => $this->userInfo, ]); if(empty($params['id']) && empty($params['work_sn'])){ $this->fail('参数错误'); } $result = ServiceWorkLogic::detail($params); if (false === $result) { return $this->fail(ServiceWorkLogic::getError()); } return $this->data($result); } catch (Exception $e) { return $this->fail($e->getMessage()); } } /** * 获取用户优惠券 * @return \think\response\Json */ public function getUserCoupons() { try { $params = (new ServiceWorkValidate())->goCheck('detail',[ 'user_id' => $this->userId, ]); if(empty($params['id'])){ $this->fail('参数错误'); } $result = ServiceWorkLogic::getUserCouponDetails($params); if (false === $result) { return $this->fail(ServiceWorkLogic::getError()); } return $this->data($result); } catch (Exception $e) { return $this->fail($e->getMessage()); } } /** * * @return \think\response\Json */ public function getDetailWorkServiceStatus() { $params = (new ServiceWorkValidate())->goCheck('detail',[ 'user_id' => $this->userId, ]); $result = ServiceWorkLogic::getDetailWorkServiceStatus($params); if (false === $result) { return $this->fail(ServiceWorkLogic::getError()); } return $this->data($result); } /** * 预约上门 * @return \think\response\Json */ public function appointWork() { $params = (new ServiceWorkValidate())->post()->goCheck('appoint', [ 'user_id' => $this->userId, 'user_info' => $this->userInfo ]); $result = ServiceWorkLogic::appointWork($params); if (false === $result) { return $this->fail(ServiceWorkLogic::getError()); } // 工程师预约上门通知【给用户的通知】 $workDetail = ServiceWorkLogic::detail($params); $masterDetail = MasterWorkerLogic::detail(['id'=>$workDetail['master_worker_id']]); event('Notice', [ 'scene_id' => 115, 'params' => [ 'user_id' => $workDetail['user_id'], 'date' => $workDetail['appointment_time'], 'tel' => asteriskString($masterDetail['mobile']) ] ]); // 工程师预约上门通知【给工程师的通知,仅限公众号】 event('Notice', [ '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'], ] ]); return $this->success('预约成功,等待上门', [], 1, 1); } /** * 工程师确认上门 * @return \think\response\Json */ public function confirmDoor() { $params = (new ServiceWorkValidate())->post()->goCheck('door', [ 'user_id' => $this->userId, 'user_info' => $this->userInfo ]); $result = ServiceWorkLogic::confirmDoor($params); if (false === $result) { return $this->fail(ServiceWorkLogic::getError()); } return $this->success('操作成功,工程师已上门', [], 1, 1); } /** * 工程师确认报价单 * @return \think\response\Json */ public function confirmPrice() { $params = (new ServiceWorkValidate())->post()->goCheck('price', [ 'user_id' => $this->userId, 'user_info' => $this->userInfo ]); $result = ServiceWorkLogic::confirmPrice($params); if (false === $result) { return $this->fail(ServiceWorkLogic::getError()); } return $this->success('操作成功,工程师已填写报价单,等待用户确认中', [], 1, 1); } /** * 工程师确认服务完成 * @return \think\response\Json */ public function confirmServiceFinish() { $params = (new ServiceWorkValidate())->post()->goCheck('finished', [ 'user_id' => $this->userId, 'user_info' => $this->userInfo ]); $result = ServiceWorkLogic::confirmServiceFinish($params); if (false === $result) { return $this->fail(ServiceWorkLogic::getError()); } return $this->success('操作成功,工程师已确认服务完成,等待用户确认中', [], 1, 1); } /** * 配件列表 * @return \think\response\Json */ public function spareList() { // 查全部可选配件 return $this->dataLists(new SparePartLists()); } /** * 工单配件列表 * @return \think\response\Json */ public function serviceWorkSpareList() { // 查该订单的配件 (new ServiceWorkValidate())->get()->goCheck('spare', [ 'user_id' => $this->userId ]); return $this->dataLists(new ServiceWorkSparePartLists()); } /** * 工单收费标准列表 * @return \think\response\Json */ public function serviceFeeStandards() { // 查该订单的配件 (new GoodsFeeStandardsValidate())->get()->goCheck('standards', [ 'user_id' => $this->userId ]); return $this->dataLists(new GoodsFeeStandardsLists()); } /** * 预约通知确认 * @return \think\response\Json */ public function appointmentSubmitNotice() { $params = (new ServiceWorkValidate())->post()->goCheck('submitAppointment', [ 'user_id' => $this->userId, 'user_info' => $this->userInfo ]); $result = ServiceWorkLogic::submitAppointment($params); if (false === $result) { return $this->fail(ServiceWorkLogic::getError()); } // 工程师再次上门通知【给用户的通知】 $workDetail = ServiceWorkLogic::detail(['work_sn'=>$params['work_sn']]); event('Notice', [ 'scene_id' => 119, 'params' => [ 'user_id' => $workDetail['user_id'], ] ]); return $this->success('操作成功,已确定新的预约时间', [], 1, 1); } /** * 再次上门 * @return \think\response\Json */ public function againDoor() { $params = (new ServiceWorkValidate())->post()->goCheck('againDoor', [ 'user_id' => $this->userId, 'user_info' => $this->userInfo ]); $result = ServiceWorkLogic::againDoor($params); if (false === $result) { return $this->fail(ServiceWorkLogic::getError()); } // 工程师再次上门通知【给用户的通知】 $workDetail = ServiceWorkLogic::detail(['work_sn'=>$params['work_sn']]); event('Notice', [ 'scene_id' => 119, 'params' => [ 'user_id' => $workDetail['user_id'], ] ]); return $this->success('操作成功,已确定新的预约时间', [], 1, 1); } /** * 第一次电话联系客户 * @return \think\response\Json */ public function contactCustomer() { $params = (new ServiceWorkValidate())->post()->goCheck('contact', [ 'user_id' => $this->userId, 'user_info' => $this->userInfo ]); $result = ServiceWorkLogic::contactCustomer($params); if (false === $result) { return $this->fail(ServiceWorkLogic::getError()); } return $this->success('成功', [], 1, 1); } /** * 上门码和完成码 * @return \think\response\Json */ public function showDoorCode(): \think\response\Json { $params = (new ServiceWorkValidate())->get()->goCheck('door', [ 'user_id' => $this->userId, 'user_info' => $this->userInfo ]); $result = ServiceWorkLogic::confirmDoorCode($params); if (false === $result) { return $this->fail(ServiceWorkLogic::getError()); } return $this->success('操作成功,工程师已上门,请用户扫码确认', $result, 1, 1); } /** * 工程师取消自己的分配 * @return \think\response\Json * @author liugc <466014217@qq.com> * @date 2025/4/28 15:08 */ public function cancelMasterWorker() { $params = (new ServiceWorkValidate())->post()->goCheck('cancel', [ 'user_id' => $this->userId, 'user_info' => $this->userInfo ]); $result = ServiceWorkLogic::cancelAllocation(['id'=>$params['id'],'master_worker_id'=>$this->userId],['admin_id'=>$this->userId,'name'=>'工程师-'.$this->userInfo['mobile']]); if (false === $result) { return $this->fail(ServiceWorkLogic::getError()); } return $this->success('成功', [], 1, 1); } /** * 工程师抢单池 * @return \think\response\Json * @author liugc <466014217@qq.com> * @date 2025/5/7 15:08 */ public function grabOrderList() { return $this->dataLists(new ServiceWorkGrabOrderLists()); } /** * 工程师抢单记录列表 * @return \think\response\Json * @author liugc <466014217@qq.com> * @date 2025/5/7 15:08 */ public function grabOrderLog() { return $this->dataLists(new ServiceWorkGrabOrderLogLists()); } /** * 工程师抢单 * @return \think\response\Json * @author liugc <466014217@qq.com> * @date 2025/5/7 15:08 */ public function grabOrder() { $params = (new ServiceWorkValidate())->post()->goCheck('cancel'); $result = ServiceWorkLogic::grabOrder(['id'=>$params['id'],'master_worker_id'=>$this->userId]); if (false === $result) { return $this->fail(ServiceWorkLogic::getError()); } return $this->success('抢单成功', [], 1, 1); } /** * 工程师修改自选配件信息 * @return \think\response\Json * @author liugc <466014217@qq.com> * @date 2025/5/7 15:08 */ public function selfSparePart() { $params = (new ServiceWorkValidate())->post()->goCheck('sparepart'); $result = ServiceWorkLogic::selfSparePart($params); if (false === $result) { return $this->fail(ServiceWorkLogic::getError()); } return $this->success('修改成功', [], 1, 1); } }