diff --git a/app/Amqp/Consumer/AutoCompleteServicePackageDelayDirectConsumer.php b/app/Amqp/Consumer/AutoCompleteServicePackageDelayDirectConsumer.php index acf4589..f3763c2 100644 --- a/app/Amqp/Consumer/AutoCompleteServicePackageDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoCompleteServicePackageDelayDirectConsumer.php @@ -166,24 +166,13 @@ class AutoCompleteServicePackageDelayDirectConsumer extends ConsumerMessage return Result::ACK; } - $params = array(); - $params['order_service_id'] = $order_service_package['order_service_id']; - $order_service_package_inquiry = OrderServicePackageInquiry::getOne($params); - if (!empty($order_service_package_inquiry)){ - // 获取医生数据 - $params = array(); - $params['doctor_id'] = $order_service_package['doctor_id']; - $user_doctor = UserDoctor::getOne($params); - if (!empty($user_doctor)) { - // 医生-通知医生患者的服务包服务结束 - $MessagePush = new MessagePush($user_doctor['user_id'], $order_service_package_inquiry['inquiry_no']); - $MessagePush->doctorServicePackageFinish(); - } + // 医生-通知医生患者的服务包服务结束 + $MessagePush = new MessagePush($user_doctor['user_id'], $order_service_package['order_service_no']); + $MessagePush->doctorServicePackageFinish(); - // 患者-通知患者服务包服务已结束 - $MessagePush = new MessagePush($order_service_package['user_id'], $order_service_package_inquiry['inquiry_no']); - $MessagePush->patientServicePackageFinish(); - } + // 患者-通知患者服务包服务已结束 + $MessagePush = new MessagePush($order_service_package['user_id'], $order_service_package['order_service_no']); + $MessagePush->patientServicePackageFinish(); }catch (\Throwable $e){ Log::getInstance("queue-AutoCompleteServicePackage")->error($e->getMessage()); return Result::ACK; diff --git a/app/Amqp/Consumer/SendStationMessageConsumer.php b/app/Amqp/Consumer/SendStationMessageConsumer.php index 842a5f5..edf1664 100644 --- a/app/Amqp/Consumer/SendStationMessageConsumer.php +++ b/app/Amqp/Consumer/SendStationMessageConsumer.php @@ -71,6 +71,7 @@ class SendStationMessageConsumer extends ConsumerMessage $cloud_custom_data['order_inquiry_id'] = ""; $cloud_custom_data['is_system'] = 1; $cloud_custom_data['inquiry_type'] = $data['inquiry_type'] ?? ""; + $cloud_custom_data['inquiry_mode'] = $data['inquiry_mode'] ?? ""; $cloud_custom_data['message_rounds'] = 0; $cloud_custom_data['patient_family_data'] = []; diff --git a/app/Services/MessagePush.php b/app/Services/MessagePush.php index f92dac7..33ed3b9 100644 --- a/app/Services/MessagePush.php +++ b/app/Services/MessagePush.php @@ -19,6 +19,7 @@ use App\Model\OrderPrescription; use App\Model\OrderProduct; use App\Model\OrderProductItem; use App\Model\OrderServicePackage; +use App\Model\OrderServicePackageCase; use App\Model\OrderServicePackageDetail; use App\Model\OrderServicePackageInquiry; use App\Model\OrderServicePackageProduct; @@ -1139,7 +1140,7 @@ class MessagePush extends BaseService $producer = ApplicationContext::getContainer()->get(Producer::class); $result = $producer->produce($message); if (!$result) { - Log::getInstance("MessagePush")->error("错误:加入站内推送队列失败" . json_encode($data, JSON_UNESCAPED_UNICODE)); + Log::getInstance("MessagePush")->error(json_encode($data, JSON_UNESCAPED_UNICODE)); } // 订阅 @@ -3053,18 +3054,26 @@ class MessagePush extends BaseService public function doctorServicePackageFinish(): void { try { + $params = array(); + $params['order_service_no'] = $this->order['order_no']; + $order_service_package = OrderServicePackage::getOne($params); + if (empty($order_service_package)) { + Log::getInstance("MessagePush")->error("服务包订单为空"); + return; + } + // 获取问诊订单关联病例 $params = array(); - $params['order_inquiry_id'] = $this->order_inquiry['order_inquiry_id']; - $order_inquiry_case = OrderInquiryCase::getOne($params); - if (empty($order_inquiry_case)) { - Log::getInstance("MessagePush")->error("问诊病例为空"); + $params['order_service_id'] = $order_service_package['order_service_id']; + $order_service_package_case= OrderServicePackageCase::getOne($params); + if (empty($order_service_package_case)) { + Log::getInstance("MessagePush")->error("服务包病例为空"); return; } // 获取医生数据 $params = array(); - $params['doctor_id'] = $this->order_inquiry['doctor_id']; + $params['doctor_id'] = $order_service_package['doctor_id']; $user_doctor = UserDoctor::getOne($params); if (empty($user_doctor)) { Log::getInstance("MessagePush")->error("医生数据为空"); @@ -3072,17 +3081,24 @@ class MessagePush extends BaseService } // 转换问诊订单订单接诊方式-字符串 - $inquiry_mode = orderServiceTypeToString($this->order_inquiry['inquiry_mode']); + $order_service_type = orderServiceTypeToString($order_service_package['order_service_type']); + + if ($order_service_package['order_service_type'] == 1){ + $inquiry_mode = 8; + }else{ + $inquiry_mode = 9; + } // 站内 $data = array(); $data['user_id'] = $this->user['user_id']; $data['notice_type'] = 1; - $data['inquiry_type'] = $this->order_inquiry['inquiry_type']; // 问诊类型(医生端服务通知存在 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药) + $data['inquiry_type'] = 1; // 问诊类型(医生端服务通知存在 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药) + $data['inquiry_mode'] = $inquiry_mode; // 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员 6:疑难会诊 7:附赠 8:健康包 9:随访包) $data['from_name'] = "肝胆小秘书"; - $data['notice_brief_title'] = "{$this->order_inquiry['patient_name']}患者的{$inquiry_mode}服务已完成,您可以提醒患者进行续费。"; - $data['notice_title'] = "{$this->order_inquiry['patient_name']}患者的{$inquiry_mode}服务已完成,您可以提醒患者进行续费。"; - $data['notice_content'] = "{$this->order_inquiry['patient_name']}患者的{$inquiry_mode}服务已完成,您可以提醒患者进行续费。"; + $data['notice_brief_title'] = "{$order_service_package['patient_name']}患者的{$order_service_type}服务已完成,您可以提醒患者进行续费。"; + $data['notice_title'] = "{$order_service_package['patient_name']}患者的{$order_service_type}服务已完成,您可以提醒患者进行续费。"; + $data['notice_content'] = "{$order_service_package['patient_name']}患者的{$order_service_type}服务已完成,您可以提醒患者进行续费。"; $message = new SendStationMessageProducer($data); $producer = ApplicationContext::getContainer()->get(Producer::class); @@ -3093,7 +3109,7 @@ class MessagePush extends BaseService // 订阅 // 问诊内容-病情主诉 - $disease_desc = $order_inquiry_case['disease_desc']; + $disease_desc = $order_service_package_case['disease_desc']; if (!empty($disease_desc)) { if (strlen($disease_desc) > 15) { $disease_desc = mb_substr($disease_desc, 0, 15); @@ -3109,7 +3125,7 @@ class MessagePush extends BaseService $sub_data['wx_template_id'] = "G1RIs0RYqsTQ2CuPQWalIMyb6_deuEEbJfajfhGvNzc"; // 咨询提醒 $sub_data['params']['page'] = "Pages/yishi/wenzhen_v2/wenzhen"; $sub_data['params']['data'] = [ - "thing1" => "{$inquiry_mode}服务已完成",// 提醒内容 + "thing1" => "{$order_service_type}服务已完成",// 提醒内容 "name2" => $this->order_inquiry['patient_name'],// 患者姓名 "thing4" => $disease_desc,// 病情描述 "thing6" => "您可以提醒患者进行续费",// 提示说明 @@ -3181,6 +3197,7 @@ class MessagePush extends BaseService $data['user_id'] = $this->user['user_id']; $data['notice_type'] = 3; $data['notice_system_type'] = 1; + $data['inquiry_mode'] = $this->order_inquiry['inquiry_mode']; // 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员 6:疑难会诊 7:附赠 8:健康包 9:随访包) $data['from_name'] = "肝胆小秘书"; $data['notice_brief_title'] = "您购买的{$order_type}服务,医生已接受,点击查看详情。"; $data['notice_title'] = "您购买的{$order_type}服务,医生已接受,点击查看详情。"; @@ -3195,7 +3212,7 @@ class MessagePush extends BaseService $link_params['patient_user_id'] = $this->order_inquiry['user_id']; $data['link_params'] = json_encode($link_params, JSON_UNESCAPED_UNICODE);// 跳转参数 - $data['button_type'] = 4; // 问诊详情 + $data['button_type'] = 4; $message = new SendStationMessageProducer($data); $producer = ApplicationContext::getContainer()->get(Producer::class); @@ -3269,10 +3286,13 @@ class MessagePush extends BaseService // 转换服务包订单类型为汉字 $order_type = orderServiceTypeToString($this->order_service_package['order_service_type']); - // 获取服务包当月已问诊次数 - if ($order_service_package_detail['monthly_frequency'] != 0 && !empty($this->order_service_package['start_time'])) { - $OrderServicePackageService = new OrderServicePackageService(); + $OrderServicePackageService = new OrderServicePackageService(); + + if ($order_service_package_detail['monthly_frequency'] != 0) { + // 获取服务包当月已问诊次数 $month_inquiry_count = $OrderServicePackageService->getCurrentMonthInquiryCount($this->order_service_package['pay_time'],$this->order_service_package['order_service_type'],$this->order_service_package['user_id'], $this->order_service_package['doctor_id']); + + // 获取服务包当月剩余问诊次数 $remaining_inquiry_count = $order_service_package_detail['monthly_frequencys'] - $month_inquiry_count; if ($remaining_inquiry_count < 0){ $remaining_inquiry_count = 0; @@ -3284,19 +3304,11 @@ class MessagePush extends BaseService // 获取剩余药品数量 $remaining_quantity = 0; if ($this->order_service_package['order_service_type'] == 1){ - $OrderServicePackageService = new OrderServicePackageService(); - - $params = array(); - $params['order_service_id'] = $this->order_service_package['order_service_id']; - $order_service_package_products = OrderServicePackageProduct::getList($params); - if (!empty($order_service_package_products)){ - foreach ($order_service_package_products as $order_service_package_product){ - // 获取服务包内某一药品的总数量 - $total_quantity = $OrderServicePackageService->getOrderServiceProductTotalQuantity($order_service_package_product['product_id']); - - // 获取服务包内某一药品的剩余数量 - $remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($this->order_service_package['order_service_id'],$order_service_package_product['product_id'],$total_quantity); - } + // 获取服务包内所有药品 + $health_package_products = $OrderServicePackageService->getOrderServiceProduct($order_service_package_detail['package_id']); + foreach ($health_package_products as $health_package_product) { + // 获取服务包内某一药品的剩余数量 + $remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($this->order_service_package['order_service_id'],$health_package_product['product_id'],$health_package_product['quantity']); } } @@ -3305,6 +3317,7 @@ class MessagePush extends BaseService $data['user_id'] = $this->user['user_id']; $data['notice_type'] = 3; $data['notice_system_type'] = 1; + $data['inquiry_mode'] = $this->order_inquiry['inquiry_mode']; // 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员 6:疑难会诊 7:附赠 8:健康包 9:随访包) $data['from_name'] = "肝胆小秘书"; $data['notice_brief_title'] = "您使用{$order_type}服务中问诊,医生已接诊,点击查看详情。"; $data['notice_title'] = "您使用{$order_type}服务中问诊,医生已接诊,点击查看详情。"; @@ -3397,14 +3410,12 @@ class MessagePush extends BaseService $data['link_type'] = 15; $link_params = array(); - $link_params['order_inquiry_id'] = $this->order_inquiry['order_inquiry_id']; $link_params['order_no'] = $this->order['order_no']; - $link_params['inquiry_type'] = $this->order_inquiry['inquiry_type']; $link_params['doctor_user_id'] = $user_doctor['user_id']; - $link_params['patient_user_id'] = $this->order_inquiry['user_id']; + $link_params['patient_user_id'] = $this->order_service_package['user_id']; $data['link_params'] = json_encode($link_params, JSON_UNESCAPED_UNICODE);// 跳转参数 - $data['button_type'] = 4; // 问诊详情 + $data['button_type'] = 4; $message = new SendStationMessageProducer($data); $producer = ApplicationContext::getContainer()->get(Producer::class); @@ -3426,17 +3437,6 @@ class MessagePush extends BaseService } // 订阅 - $sub_data = array(); - $sub_data['push_user_id'] = $this->user['user_id']; - $sub_data['wx_template_id'] = "9v6dZhjg09CttLd3W9nEUV_-eshNc4BYYNy59jglvZE";// 问诊提醒 - $sub_data['params']['page'] = "patient/pages/orderDetail/orderDetail?order_inquiry_id={$this->order_inquiry['order_inquiry_id']}"; - $sub_data['params']['data'] = [ - "thing1" => "使用{$order_type}服务中问诊",// 问诊内容 - "thing2" => "医生已接诊",// 提醒内容 - "name3" => (string)$user_doctor['user_name'],// 问诊医生 - "thing4" => "点击查看详情",// 提示说明 - ]; - $sub_data = array(); $sub_data['push_user_id'] = $this->user['user_id']; $sub_data['wx_template_id'] = "9v6dZhjg09CttLd3W9nEUV_-eshNc4BYYNy59jglvZE";// 问诊提醒 @@ -3467,9 +3467,10 @@ class MessagePush extends BaseService /** * 患者-通知患者服务包药品未使用完 * 站内 + * @param string|int $remaining_quantity * @return void */ - public function patientServicePackageHaveProduct(): void + public function patientServicePackageHaveProduct(string|int $remaining_quantity = 0): void { try { // 获取医生数据 @@ -3481,24 +3482,37 @@ class MessagePush extends BaseService return; } - $OrderServicePackageService = new OrderServicePackageService(); + if ($remaining_quantity == 0){ + $OrderServicePackageService = new OrderServicePackageService(); - // 获取剩余药品数量 - $remaining_quantity = 0; - $params = array(); - $params['order_service_id'] = $this->order_service_package['order_service_id']; - $order_service_package_products = OrderServicePackageProduct::getList($params); - if (!empty($order_service_package_products)){ - foreach ($order_service_package_products as $order_service_package_product){ - // 获取服务包内某一药品的总数量 - $total_quantity = $OrderServicePackageService->getOrderServiceProductTotalQuantity($order_service_package_product['product_id']); + // 获取服务包订单编号-通过问诊订单id + $order_service_no = $OrderServicePackageService->getOrderServiceNoByOrderInquiryId($this->order_inquiry['inquiry_no']); - // 获取服务包内某一药品的剩余数量 - $remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($this->order_service_package['order_service_id'],$order_service_package_product['product_id'],$total_quantity); - if ($remaining_quantity > 0){ - break; - } + // 获取服务包订单 + $params = array(); + $params['order_service_no'] = $order_service_no; + $order_service_package = OrderServicePackage::getOne($params); + if (empty($order_service_package)){ + Log::getInstance("MessagePush")->error("服务包订单错误"); + return; } + + // 获取服务包订单详情 + $params = array(); + $params['order_service_id'] = $order_service_package['order_service_id']; + $order_service_package_detail = OrderServicePackageDetail::getOne($params); + if (empty($order_service_package_detail)){ + Log::getInstance("MessagePush")->error("服务包订单详情错误"); + return; + } + + // 获取服务包内所有药品 + $health_package_products = $OrderServicePackageService->getOrderServiceProduct($order_service_package_detail['package_id']); + foreach ($health_package_products as $health_package_product) { + // 获取服务包内某一药品的剩余数量 + $remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($order_service_package['order_service_id'],$health_package_product['product_id'],$health_package_product['quantity']); + } + } // 站内 diff --git a/app/Services/PatientOrderService.php b/app/Services/PatientOrderService.php index 71b0f65..d92f700 100644 --- a/app/Services/PatientOrderService.php +++ b/app/Services/PatientOrderService.php @@ -1354,18 +1354,14 @@ class PatientOrderService extends BaseService case 3: // 检测订单 Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, "非法订单类型"); - - break; case 4: // 健康包订单 Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, "非法订单类型"); - break; case 5: // 随访包订单 Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, "非法订单类型"); - break; default: Db::rollBack(); return fail(HttpEnumCode::HTTP_ERROR, "支付失败"); @@ -1497,6 +1493,22 @@ class PatientOrderService extends BaseService return fail(); } + // 获取服务包订单 + $params = array(); + $params['order_service_no'] = $order_service_package_inquiry['order_service_no']; + $order_service_package = OrderServicePackage::getOne($params); + if (empty($order_service_package)){ + return fail(); + } + + // 获取服务包订单详情 + $params = array(); + $params['order_service_id'] = $order_service_package['order_service_id']; + $order_service_package_detail = OrderServicePackageDetail::getOne($params); + if (empty($order_service_package_detail)){ + return fail(); + } + // 此处不检测未支付的商品订单,在创建订单时会进行数量的扣减 // 处理商品数量 $OrderServicePackageService = new OrderServicePackageService(); @@ -1504,7 +1516,7 @@ class PatientOrderService extends BaseService $amount_total = 0; foreach ($product_datas as &$product_data){ // 获取服务包内某一药品的总数量 - $total_quantity = $OrderServicePackageService->getOrderServiceProductTotalQuantity($product_data['product_id']); + $total_quantity = $OrderServicePackageService->getOrderServiceProductTotalQuantity($order_service_package_detail['package_id'],$product_data['product_id']); // 获取服务包内某一药品的剩余数量 $remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($order_service_package_inquiry['order_service_id'],$product_data['product_id'],$total_quantity); @@ -2040,6 +2052,22 @@ class PatientOrderService extends BaseService return fail(); } + // 获取服务包订单 + $params = array(); + $params['order_service_no'] = $order_service_package_inquiry['order_service_no']; + $order_service_package = OrderServicePackage::getOne($params); + if (empty($order_service_package)){ + return fail(); + } + + // 获取服务包订单详情 + $params = array(); + $params['order_service_id'] = $order_service_package['order_service_id']; + $order_service_package_detail = OrderServicePackageDetail::getOne($params); + if (empty($order_service_package_detail)){ + return fail(); + } + // 此处不检测未支付的商品订单,在创建订单时会进行数量的扣减 // 处理商品数量、金额 $OrderServicePackageService = new OrderServicePackageService(); @@ -2047,7 +2075,7 @@ class PatientOrderService extends BaseService $amount_total = 0; foreach ($product_datas as &$product_data){ // 获取服务包内某一药品的总数量 - $total_quantity = $OrderServicePackageService->getOrderServiceProductTotalQuantity($product_data['product_id']); + $total_quantity = $OrderServicePackageService->getOrderServiceProductTotalQuantity($order_service_package_detail['package_id'],$product_data['product_id']); // 获取服务包内某一药品的剩余数量 $remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($order_service_package_inquiry['order_service_id'],$product_data['product_id'],$total_quantity); @@ -3100,13 +3128,11 @@ class PatientOrderService extends BaseService $result['order_service_package']['current_month_start_date'] = $current_month_date['current_month_start_date']; $result['order_service_package']['current_month_finish_date'] = $current_month_date['current_month_finish_date']; - // 获取服务包当月已问诊/剩余次数 + // 获取服务包当月已问诊次数 + $month_inquiry_count = $OrderServicePackageService->getCurrentMonthInquiryCount($order_service_package['pay_time'],$order_service_package['order_service_type'],$order_service_package['user_id'], $order_service_package['doctor_id']); + + // 获取服务包当月剩余问诊次数 if ($order_service_package_detail['monthly_frequency'] != 0) { - $OrderServicePackageService = new OrderServicePackageService(); - - // 获取服务包当月已问诊次数 - $month_inquiry_count = $OrderServicePackageService->getCurrentMonthInquiryCount($order_service_package['pay_time'],$order_service_package['order_service_type'],$order_service_package['user_id'], $order_service_package['doctor_id']); - // 获取服务包当月剩余问诊次数 $remaining_inquiry_count = $order_service_package_detail['monthly_frequency'] - $month_inquiry_count; if ($remaining_inquiry_count < 0){ @@ -3114,7 +3140,6 @@ class PatientOrderService extends BaseService } }else{ $remaining_inquiry_count = "不限"; - $month_inquiry_count = "不限"; } $result['order_service_package_detail']['month_inquiry_count'] = $month_inquiry_count; @@ -3150,11 +3175,9 @@ class PatientOrderService extends BaseService // 获取服务包内所有药品 $health_package_products = $OrderServicePackageService->getOrderServiceProduct($order_service_package_detail['package_id']); - if (!empty($health_package_products)) { - foreach ($health_package_products as $health_package_product) { - // 获取服务包内某一药品的剩余数量 - $result['order_service_package_detail']['remaining_quantity'] = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($order_service_package['order_service_id'],$health_package_product['product_id'],$health_package_product['quantity']); - } + foreach ($health_package_products as $health_package_product) { + // 获取服务包内某一药品的剩余数量 + $result['order_service_package_detail']['remaining_quantity'] = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($order_service_package['order_service_id'],$health_package_product['product_id'],$health_package_product['quantity']); } } } diff --git a/app/Services/UserDoctorService.php b/app/Services/UserDoctorService.php index 36f4826..f276b5f 100644 --- a/app/Services/UserDoctorService.php +++ b/app/Services/UserDoctorService.php @@ -1962,7 +1962,7 @@ class UserDoctorService extends BaseService $res = $producer->produce($message); if (!$res) { Db::rollBack(); - return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败"); + return fail(HttpEnumCode::SERVER_ERROR, "接诊失败"); } Db::commit(); @@ -1977,7 +1977,8 @@ class UserDoctorService extends BaseService $params['doctor_id'] = $order_inquiry['doctor_id']; $user_doctor = UserDoctor::getOne($params); if (empty($user_doctor)) { - return success([],HttpEnumCode::HTTP_SUCCESS,"医生数据错误"); + Log::getInstance('UserDoctorService-addDoctorInquiry')->error("医生数据错误"); + return success(); } // 获取病例数据 @@ -1985,7 +1986,8 @@ class UserDoctorService extends BaseService $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; $order_inquiry_case = OrderInquiryCase::getOne($params); if (empty($order_inquiry_case)){ - return success([],HttpEnumCode::HTTP_SUCCESS,"患者病例错误"); + Log::getInstance('UserDoctorService-addDoctorInquiry')->error("患者病例错误"); + return success(); } // 发送IM消息-医生接诊 @@ -2002,6 +2004,24 @@ class UserDoctorService extends BaseService // 获取服务包订单编号-通过问诊订单id $order_service_no = $OrderServicePackageService->getOrderServiceNoByOrderInquiryId($order_inquiry['inquiry_no']); + // 获取服务包订单 + $params = array(); + $params['order_service_no'] = $order_service_no; + $order_service_package = OrderServicePackage::getOne($params); + if (empty($order_service_package)){ + Log::getInstance('UserDoctorService-addDoctorInquiry')->error("服务包订单错误"); + return success(); + } + + // 获取服务包订单详情 + $params = array(); + $params['order_service_id'] = $order_service_package['order_service_id']; + $order_service_package_detail = OrderServicePackageDetail::getOne($params); + if (empty($order_service_package_detail)){ + Log::getInstance('UserDoctorService-addDoctorInquiry')->error("服务包订单详情错误"); + return success(); + } + // 检测问诊是否服务包首次问诊 $is_first = $OrderServicePackageService->isFirstInquiryServicePackage($order_service_no); if ($is_first){ @@ -2012,14 +2032,23 @@ class UserDoctorService extends BaseService // 患者-通知患者医生已接诊服务包相关问诊订单 $MessagePush = new MessagePush($order_inquiry['user_id'],$order_inquiry['inquiry_no']); $MessagePush->patientAcceptedServicePackageInquiry(); - } - // 检测患者服务包内是否还存在剩余药品 - $res = $OrderServicePackageService->checkOrderServiceRemainingProduct($order_service_no); - if ($res){ - // 患者-通知患者服务包药品未使用完 - $MessagePush = new MessagePush($order_inquiry['user_id'],$order_inquiry['inquiry_no']); - $MessagePush->patientServicePackageHaveProduct(); + if ($order_service_package['order_service_type'] == 1){ + $remaining_quantity = 0; + + // 获取服务包内所有药品 + $health_package_products = $OrderServicePackageService->getOrderServiceProduct($order_service_package_detail['package_id']); + foreach ($health_package_products as $health_package_product) { + // 获取服务包内某一药品的剩余数量 + $remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($order_service_package['order_service_id'],$health_package_product['product_id'],$health_package_product['quantity']); + } + + if ($remaining_quantity > 0){ + // 患者-通知患者服务包药品未使用完 + $MessagePush = new MessagePush($order_inquiry['user_id'],$order_inquiry['inquiry_no']); + $MessagePush->patientServicePackageHaveProduct($remaining_quantity); + } + } } }else{ // 发送站内、订阅、短信消息-医生已接诊 @@ -2027,7 +2056,8 @@ class UserDoctorService extends BaseService $MessagePush->patientAcceptedInquiry(); } }catch(\Exception $e){ - return success([],HttpEnumCode::HTTP_SUCCESS,$e->getMessage()); + Log::getInstance('UserDoctorService-addDoctorInquiry')->error($e->getMessage()); + return success(); } return success(); @@ -2866,7 +2896,6 @@ class UserDoctorService extends BaseService return $result; } - /** * 获取医生是否可处方图标展示状态 * @param string $doctor_id 医生id