增加站内、短信订阅消息推送,修改所有消息推送入参

This commit is contained in:
2024-04-19 15:46:38 +08:00
parent e92ccdcc5e
commit 5c0bf12896
16 changed files with 1240 additions and 133 deletions
@@ -129,7 +129,7 @@ class AssignDoctorDelayDirectConsumer extends ConsumerMessage
try {
// 患者-分配医生失败-订阅
$MessagePush = new MessagePush($order_inquiry['user_id'],$order_inquiry['order_inquiry_id']);
$MessagePush = new MessagePush($order_inquiry['user_id'],$order_inquiry['inquiry_no']);
$MessagePush->assignDoctorFail();
}catch (\Exception $e){
Log::getInstance("queue-AssignDoctor")->error( $e->getMessage());
@@ -176,7 +176,7 @@ class AssignDoctorDelayDirectConsumer extends ConsumerMessage
try {
// 患者-分配医生失败-订阅
$MessagePush = new MessagePush($order_inquiry['user_id'],$order_inquiry['order_inquiry_id']);
$MessagePush = new MessagePush($order_inquiry['user_id'],$order_inquiry['inquiry_no']);
$MessagePush->assignDoctorFail();
}catch (\Exception $e){
Log::getInstance("queue-AssignDoctor")->error($e->getMessage());
@@ -290,7 +290,7 @@ class AssignDoctorDelayDirectConsumer extends ConsumerMessage
$imService->waitDoctorInquiry($order_inquiry,$user_doctor['user_id'],$order_inquiry['user_id']);
// 医生-医生有新问诊 站内、订阅失败发送短信
$MessagePush = new MessagePush($user_doctor['user_id'],$order_inquiry['order_inquiry_id']);
$MessagePush = new MessagePush($user_doctor['user_id'],$order_inquiry['inquiry_no']);
$MessagePush->doctorHaveNewInquiry();
// 加入xx时间未接诊通知队列
+16 -8
View File
@@ -73,6 +73,16 @@ class AssignPharmacistConsumer extends ConsumerMessage
return Result::ACK;// 销毁
}
// 获取问诊订单数据
$params = array();
$params['order_inquiry_id'] = $order_prescription['order_inquiry_id'];
$order_inquiry = OrderInquiry::getOne($params);
if (empty($order_inquiry)) {
Db::rollBack();
Log::getInstance()->error("分配药师队列执行结束:缺少问诊订单数据");
return Result::ACK;// 销毁
}
Db::beginTransaction();
try {
// 分配药师
@@ -84,7 +94,7 @@ class AssignPharmacistConsumer extends ConsumerMessage
Log::getInstance()->error("分配药师队列执行失败:药师数据错误");
// 分配失败,按照驳回处理
$this->reject($data['order_prescription_id'], $user_doctor['user_id'], $user_patient['user_id'], $order_prescription['order_inquiry_id']);
$this->reject($data['order_prescription_id'], $user_doctor['user_id'], $user_patient['user_id'], $order_inquiry['inquiry_no']);
return Result::DROP;// 销毁
}
@@ -103,7 +113,7 @@ class AssignPharmacistConsumer extends ConsumerMessage
Log::getInstance()->error("分配药师队列执行失败原因:" . $e->getMessage());
// 分配失败,按照驳回处理
$this->reject($data['order_prescription_id'], $user_doctor['user_id'],$user_patient['user_id'], $order_prescription['order_inquiry_id']);
$this->reject($data['order_prescription_id'], $user_doctor['user_id'],$user_patient['user_id'], $order_inquiry['inquiry_no']);
return Result::DROP; // 重回队列
}
@@ -118,12 +128,10 @@ class AssignPharmacistConsumer extends ConsumerMessage
* @param string $order_prescription_id
* @param string $doctor_user_id
* @param string $patient_user_id
* @param string $order_inquiry_id
* @param string $inquiry_no
* @return void
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function reject(string $order_prescription_id, string $doctor_user_id, string $patient_user_id, string $order_inquiry_id): void
public function reject(string $order_prescription_id, string $doctor_user_id, string $patient_user_id, string $inquiry_no): void
{
try {
$params = array();
@@ -137,11 +145,11 @@ class AssignPharmacistConsumer extends ConsumerMessage
OrderPrescription::edit($params, $data);
// 医生-开具的处方审核未通过
$MessagePush = new MessagePush($doctor_user_id, $order_inquiry_id);
$MessagePush = new MessagePush($doctor_user_id, $inquiry_no);
$MessagePush->prescriptionVerifyFail($order_prescription_id);
// 患者-处方审核未通过
$MessagePush = new MessagePush($patient_user_id, $order_inquiry_id);
$MessagePush = new MessagePush($patient_user_id, $inquiry_no);
$MessagePush->patientPrescriptionVerifyFail();
} catch (\Exception $e) {
@@ -181,7 +181,7 @@ class AutoCompleteInquiryDelayDirectConsumer extends ConsumerMessage
if (isset($is_push_prescription_verify_fail)){
// 站内、订阅失败发送短信-医生开具的处方审核未通过
$order_prescription_id = $order_prescription_id ?? "";
$MessagePush = new MessagePush($user_doctor['user_id'],$order_inquiry['order_inquiry_id']);
$MessagePush = new MessagePush($user_doctor['user_id'],$order_inquiry['inquiry_no']);
$MessagePush->prescriptionVerifyFail($order_prescription_id);
}
@@ -193,7 +193,7 @@ class AutoCompleteInquiryDelayDirectConsumer extends ConsumerMessage
$imService->inquiryEndEvaluation($order_inquiry,$user_doctor['user_id'],$order_inquiry['user_id']);
// 医生-发送站内消息-问诊结束
$MessagePush = new MessagePush($user_doctor['user_id'],$order_inquiry['order_inquiry_id']);
$MessagePush = new MessagePush($user_doctor['user_id'],$order_inquiry['inquiry_no']);
$MessagePush->finishInquiryToDoctor();
}catch (\Throwable $e){
Log::getInstance("queue-AutoCompleteInquiry")->error($e->getMessage());
@@ -6,6 +6,9 @@ namespace App\Amqp\Consumer;
use App\Amqp\Producer\AutoCompleteServicePackageDelayDirectProducer;
use App\Model\OrderServicePackage;
use App\Model\OrderServicePackageInquiry;
use App\Model\UserDoctor;
use App\Services\MessagePush;
use App\Utils\Log;
use App\Utils\Utils;
use Hyperf\Amqp\Message\ConsumerDelayedMessageTrait;
@@ -116,7 +119,33 @@ class AutoCompleteServicePackageDelayDirectConsumer extends ConsumerMessage
// 发送消息
try {
// 获取订单医生数据
$params = array();
$params['doctor_id'] = $order_service_package['doctor_id'];
$user_doctor = UserDoctor::getOne($params);
if (empty($user_doctor)) {
Log::getInstance("queue-AutoCompleteServicePackage")->error("医生数据错误");
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($order_service_package['user_id'], $order_service_package_inquiry['inquiry_no']);
$MessagePush->patientServicePackageFinish();
}
}catch (\Throwable $e){
Log::getInstance("queue-AutoCompleteServicePackage")->error($e->getMessage());
return Result::ACK;
@@ -152,11 +152,11 @@ class AutoPharmacistCaVerifyDelayDirectConsumer extends ConsumerMessage
$this->modifyOrderPrescription($data['order_prescription_id'], 2, "请联系平台客服,请勿重开处方");
// 医生-开具的处方审核未通过
$MessagePush = new MessagePush($user_doctor['user_id'], $order_prescription['order_inquiry_id']);
$MessagePush = new MessagePush($user_doctor['user_id'], $order_inquiry['inquiry_no']);
$MessagePush->prescriptionVerifyFail($data['order_prescription_id']);
// 患者-处方审核未通过
$MessagePush = new MessagePush($user_patient['user_id'], $order_prescription['order_inquiry_id']);
$MessagePush = new MessagePush($user_patient['user_id'], $order_inquiry['inquiry_no']);
$MessagePush->patientPrescriptionVerifyFail();
Db::commit();
@@ -274,12 +274,12 @@ class AutoPharmacistCaVerifyDelayDirectConsumer extends ConsumerMessage
$imService->prescriptionIssued($order_inquiry,$user_doctor['user_id'],$order_inquiry['user_id'],$product_name,(string)$data['order_prescription_id'],7);
// 发送站内、短信消息-患者的处方被药师审核通过
$MessagePush = new MessagePush($order_inquiry['user_id'],$order_inquiry['order_inquiry_id']);
$MessagePush = new MessagePush($order_inquiry['user_id'],$order_inquiry['inquiry_no']);
$MessagePush->patientPrescriptionVerifyPass();
// 站内、订阅失败发送短信-医生开具的处方审核通过
// 发送目标不同,重新实例化
$MessagePush = new MessagePush($user_doctor['user_id'],$order_inquiry['order_inquiry_id']);
$MessagePush = new MessagePush($user_doctor['user_id'],$order_inquiry['inquiry_no']);
$MessagePush->prescriptionVerifySuccess();
// 添加处方过期队列
@@ -15,6 +15,7 @@ use App\Services\ImService;
use App\Services\InquiryService;
use App\Services\MessagePush;
use App\Services\OrderService;
use App\Services\OrderServicePackageService;
use App\Utils\Log;
use App\Utils\Utils;
use Hyperf\Amqp\Message\ConsumerDelayedMessageTrait;
@@ -198,12 +199,32 @@ class CancelUnInquiryOrdersDelayDirectConsumer extends ConsumerMessage
// 发送IM消息-问诊退款
$imService->inquiryRefund($order_inquiry,$user_doctor['user_id'],$order_inquiry['user_id']);
// 发送站内、订阅消息-患者-医生未接诊
$MessagePush = new MessagePush($order_inquiry['user_id'],$order_inquiry['order_inquiry_id']);
$MessagePush->patientNoInquiry();
// 处理服务包情况
if ($order_inquiry['inquiry_mode'] == 8 || $order_inquiry['inquiry_mode'] == 9) {
$OrderServicePackageService = new OrderServicePackageService();
// 获取服务包订单编号-通过问诊订单id
$order_service_no = $OrderServicePackageService->getOrderServiceNoByOrderInquiryId($order_inquiry['inquiry_no']);
// 检测问诊是否服务包首次问诊
$is_first = $OrderServicePackageService->isFirstInquiryServicePackage($order_service_no);
if ($is_first){
// 患者-医生未接受服务包订单
$MessagePush = new MessagePush($order_inquiry['user_id'],$order_inquiry['inquiry_no']);
$MessagePush->patientDoctorNoAcceptServicePackage();
}else{
// 发送站内、订阅消息-患者-医生未接诊
$MessagePush = new MessagePush($order_inquiry['user_id'],$order_inquiry['inquiry_no']);
$MessagePush->patientNoInquiry();
}
}else{
// 发送站内、订阅消息-患者-医生未接诊
$MessagePush = new MessagePush($order_inquiry['user_id'],$order_inquiry['inquiry_no']);
$MessagePush->patientNoInquiry();
}
// 发送站内、订阅消息-医生-超时未接诊
$MessagePush = new MessagePush($user_doctor['user_id'],$order_inquiry['order_inquiry_id']);
$MessagePush = new MessagePush($user_doctor['user_id'],$order_inquiry['inquiry_no']);
$MessagePush->doctorNoInquiry();
if (!empty($order_inquiry['coupon_amount_total']) && $order_inquiry['coupon_amount_total'] > 0) {
@@ -213,7 +234,7 @@ class CancelUnInquiryOrdersDelayDirectConsumer extends ConsumerMessage
$order_inquiry_coupon = OrderInquiryCoupon::getOne($params);
if (!empty($order_inquiry_coupon)){
// 发送站内消息-优惠卷退还
$MessagePush = new MessagePush($order_inquiry['user_id'], $order_inquiry['order_inquiry_id']);
$MessagePush = new MessagePush($order_inquiry['user_id'], $order_inquiry['inquiry_no']);
$MessagePush->patientRefundCoupon($order_inquiry_coupon['coupon_name']);
}
}
@@ -7,6 +7,7 @@ namespace App\Amqp\Consumer;
use App\Model\OrderInquiry;
use App\Model\UserDoctor;
use App\Services\MessagePush;
use App\Services\OrderServicePackageService;
use App\Utils\Log;
use Hyperf\Amqp\Message\ConsumerDelayedMessageTrait;
use Hyperf\Amqp\Message\ProducerDelayedMessageTrait;
@@ -36,7 +37,7 @@ class DoctorNotYetInquiryDelayDirectConsumer extends ConsumerMessage
public function consumeMessage($data, AMQPMessage $message): string
{
Log::getInstance("queue-DoctorNotYetInquiry")->info("开始:" . json_encode($data, JSON_UNESCAPED_UNICODE));
Log::getInstance("queue-DoctorNotYetInquiry")->info(json_encode($data, JSON_UNESCAPED_UNICODE));
if (!isset($data['order_inquiry_id'])){
Log::getInstance("queue-DoctorNotYetInquiry")->error("缺少参数");
@@ -65,13 +66,30 @@ class DoctorNotYetInquiryDelayDirectConsumer extends ConsumerMessage
$user_doctor = UserDoctor::getOne($params);
if (empty($user_doctor)) {
Log::getInstance("queue-DoctorNotYetInquiry")->error("医生数据错误");
return Result::ACK;
}
// 发送站内、订阅消息-医生-超时未接诊
$MessagePush = new MessagePush($user_doctor['user_id'],$order_inquiry['order_inquiry_id']);
$MessagePush->doctorNotYetInquiry();
// 处理服务包情况
if ($order_inquiry['inquiry_mode'] == 8 || $order_inquiry['inquiry_mode'] == 9){
$OrderServicePackageService = new OrderServicePackageService();
// 获取服务包订单编号-通过问诊订单id
$order_service_no = $OrderServicePackageService->getOrderServiceNoByOrderInquiryId($order_inquiry['inquiry_no']);
// 检测问诊是否服务包首次问诊
$is_first = $OrderServicePackageService->isFirstInquiryServicePackage($order_service_no);
if ($is_first){
// 医生-医生xx时间后还未接受服务包订单
$MessagePush = new MessagePush($user_doctor['user_id'],$order_inquiry['inquiry_no']);
$MessagePush->doctorNotYetOrderServicePackage();
}
}else{
// 发送站内、订阅消息-医生-超时未接诊
$MessagePush = new MessagePush($user_doctor['user_id'],$order_inquiry['inquiry_no']);
$MessagePush->doctorNotYetInquiry();
}
}catch (\Throwable $e){
Log::getInstance("queue-DoctorNotYetInquiry")->error("失败:" . $e->getMessage());
Log::getInstance("queue-DoctorNotYetInquiry")->error($e->getMessage());
return Result::ACK;
}