order = $order; $this->offlineOrderService = $offlineOrderService; $this->validator = $offlineOrderValidator; } /** * Display a listing of the resource. * * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse */ public function index(Request $request) { $keywords = $request->get('keywords', ''); $status = $request->get('status', ''); $agency_id = $request->get('agency_id'); $page = $request->get('page', 1); $page_size = $request->get('page_size', 1); $list = $this->offlineOrderService->getOrderList($keywords, $status, $agency_id, $page_size); if ($request->input('is_export')) { return Excel::download(new OfflineOrderExportV2($list), '线下订单.xlsx'); } return $this->success('ok', $list); } public function export(Request $request) { return Excel::download(new OfflineOrderExport($request->all()), '虚拟订单.xlsx'); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\JsonResponse */ public function store(Request $request) { try { //数据验证 $data = $request->all(); $this->validator->scene('add')->validate($data); //增加user_id // $service_user_id = $data['user_id']??0; // // $user_info = User::getMpUser($data['mobile']); // if($user_info && $service_user_id != $user_info->id){ // $user_id = $user_info->id; // }else{ // $user_id = 0; // } $user_id = $data['user_id'] ?? 0; // if ($user_id != 3740) // return $this->failure("功能测试中"); //创建线下订单 $offline_order = $this->offlineOrderService->createOfflineOrder($data, $user_id); //用户存在则自动拉群 $group = new Group(); // $group->autoCreateChat($offline_order->order_id); //区分群聊 if ($request->service_type == 1) { // DMA群聊 $group_name = $offline_order->name . "服务群"; $announcement = "😊 本群是您的专属健康服务群 👏 让我们一起携手创造快乐温馨的学习氛围,祝福您在此有一个美好的健康生活之旅 【请勿讨论政治、宗教或发广告】"; $group->autoCreateChatV2($offline_order->order_id, $group_name, $request->service_type, $announcement); } else if ($request->service_type == 3) { //MINI DMA群聊 $group_name = $offline_order->name . "服务群【Mini版】"; $announcement = "【友福同享】欢迎加入DMA服务群【Mini版】! ·本群用于教练指导您的健康管理服务,请勿讨论政治、宗教或发布外部广告。 ·服务团队将陆续进群为您提供支持,祝您健康之旅顺利! 🌹🌹"; $group->autoCreateChatV2($offline_order->order_id, $group_name, $request->service_type, $announcement); } // 是否自动拉人入群 $group = Group::where("order_id", $offline_order->order_id)->first(); if ($request->auth_join) { $offlineService = new OfflineOrderService(); $offlineService->AutoServiceJoinGroup($group->im_chat_id, $group->id, $group->order_id, $user_id); DmaProcessLog::addUserProcessLog($user_id, $offline_order->order_id ?? 0, 1, "add_server_to_group", "行政已拉服务人员入群(自动分配)", auth()->user()->id, 4); } // 缴费后自动发送线上 if (isset($data["check_pay_status"]) && $data["check_pay_status"] == 1) { if ($request->service_type == 1) { $owner_accid_id = make_wangyiyun_accid($group->owner_id); $ope = \App\Services\ChatService::MSG_GROUP_OPE; // 自动标记线上合同并且发送合同信息 $type = \App\Services\ChatService::MSG_TYPE_CUSTOM; $body = ChatService::getIdCardMessageBody($group->order_id); ChatService::sendImMessage($owner_accid_id, $ope, $group->im_chat_id, $type, $body); $message = "需要您点击上方链接,完成线上合约签署,谢谢您的配合"; $type = \App\Services\ChatService::MSG_TYPE_TEXT; $body = ChatService::getTextBody($message); ChatService::sendImMessage($owner_accid_id, $ope, $group->im_chat_id, $type, $body); // 确认已缴费流程 DmaProcessLog::addUserProcessLog($user_id, $offline_order->order_id ?? 0, 1, "admin_check_pay_status", "行政确认用户已缴费", auth()->user()->id, 4); } } // 创建双证群 $this->createCertGroup($offline_order); //操作记录 OperationLoggedEvent::dispatch("创建了虚拟订单: $offline_order->id ,主订单为 $offline_order->order_id"); DmaProcessLog::addUserProcessLog($user_id, $offline_order->order_id ?? 0, 1, "create_group", "已自动建立群聊", auth()->user()->id, 4); DmaProcessLog::addUserProcessLog($user_id, $offline_order->order_id ?? 0, 1, "send_group_notice", "系统已发送群公告", auth()->user()->id, 4); // 待办事项 $theme = "请确认用户[" . $offline_order->name . "]需签署的合同类型(线上/线下)"; TaskService::AddTask(0, 0, $theme, [8]); return $this->success('ok'); } catch (\Exception | ValidationException $e) { return $this->jsonResponse(1, $e->getMessage()); } } /** * 创建双证群 * @param mixed $offline_order 线下订单 * @return void */ public function createCertGroup($offline_order) { // 35600订单可创建双证群 $priceList = [25800, 36500]; if (!in_array($offline_order->price, $priceList)) return; $order = Order::where('id', $offline_order->order_id)->first(); // 创建群聊 $group = new Group(); $chatName = $offline_order->name . "双证咨询服务群"; $group->autoCreateCertChat($order->user_id, $chatName); return; } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $order_id * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse|\Illuminate\Http\Response */ public function update(Request $request, $order_id) { try { //数据验证 $data = $request->only(['name', 'mobile', 'pay_type', 'bank_name', 'bank_num', 'agency_id', "price"], ); $this->validator->scene('edit')->validate($data); //修改线下订单 $offline_order = $this->offlineOrderService->updateOfflineOrder($data, $order_id); //操作记录 OperationLoggedEvent::dispatch("更新了虚拟订单: $offline_order->id ,主订单为 $offline_order->order_id"); return $this->success('ok'); } catch (ModelNotFoundException) { return $this->jsonResponse(1, '未找到对应订单'); } catch (\Exception | ValidationException $e) { return $this->jsonResponse(1, $e->getMessage()); } } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { // } }