From 4a0a162297d18b878d528e9389ce84a42187d9f4 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 27 Mar 2023 15:00:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BA=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Amqp/Consumer/SendSmsMessageConsumer.php | 23 ++---- .../Consumer/SendStationMessageConsumer.php | 70 +++++++++++++++++++ app/Amqp/Consumer/SendSubMessageConsumer.php | 65 +++++------------ app/Amqp/Producer/SendSmsMessageProducer.php | 14 +++- .../Producer/SendStationMessageProducer.php | 23 ++++++ app/Amqp/Producer/SendSubMessageProducer.php | 31 ++++---- app/Model/OrderPrescriptionProduct.php | 2 +- app/Services/UserDoctorService.php | 13 ++-- config/routes.php | 1 - 9 files changed, 157 insertions(+), 85 deletions(-) create mode 100644 app/Amqp/Consumer/SendStationMessageConsumer.php create mode 100644 app/Amqp/Producer/SendStationMessageProducer.php diff --git a/app/Amqp/Consumer/SendSmsMessageConsumer.php b/app/Amqp/Consumer/SendSmsMessageConsumer.php index 1078584..ae80d9a 100644 --- a/app/Amqp/Consumer/SendSmsMessageConsumer.php +++ b/app/Amqp/Consumer/SendSmsMessageConsumer.php @@ -18,22 +18,13 @@ use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; /** - * 发送短信 + * 短信推送 */ #[Consumer(exchange: 'amqp.direct', routingKey: 'SendSmsMessage', queue: 'send.sms.message.queue', nums: 1)] class SendSmsMessageConsumer extends ConsumerMessage { /** * @param $data - * [ - * "template_code" => "SMS_123", - * "template_param" => [ - * // 参数不确定,主要看短信模版的不同 - * ], - * "scene_desc" => "场景描述", - * "phone" => "手机号", - * "user_id" => "用户id(被推送者)" - * ] * @param AMQPMessage $message * @return string * @throws ContainerExceptionInterface @@ -41,17 +32,17 @@ class SendSmsMessageConsumer extends ConsumerMessage */ public function consumeMessage($data, AMQPMessage $message): string { - Log::getInstance()->error("开始执行 发送短信 队列:" . json_encode($data, JSON_UNESCAPED_UNICODE)); + Log::getInstance()->error("开始执行 短信推送 队列:" . json_encode($data, JSON_UNESCAPED_UNICODE)); if (!isset($data['template_code']) || !isset($data['template_param'])){ - Log::getInstance()->error("队列发送短信失败:发送参数错误"); + Log::getInstance()->error("短信推送失败:发送参数错误"); return Result::DROP;// 销毁 } // 验证发送参数 $res = $this->checkTemplateParam($data['template_code'],$data['template_param']); if (!$res){ - Log::getInstance()->error("队列发送短信失败:发送参数错误"); + Log::getInstance()->error("短信推送失败:发送参数错误"); return Result::DROP;// 销毁 } @@ -63,7 +54,7 @@ class SendSmsMessageConsumer extends ConsumerMessage if (!empty($result)){ if ( $result > 2){ // 超出规定时间内最大获取次数 - Log::getInstance()->error("队列发送短信失败:超出最大发送重试次数"); + Log::getInstance()->error("短信推送失败:超出最大发送重试次数"); return Result::DROP;// 销毁 } } @@ -76,14 +67,14 @@ class SendSmsMessageConsumer extends ConsumerMessage $redis->del($redis_key); } } catch (\Exception $e) { - Log::getInstance()->error("队列发送短信失败:" . $e->getMessage()); + Log::getInstance()->error("短信推送失败:" . $e->getMessage()); // 增加发送次数 $redis->incr($redis_key); return Result::REQUEUE; // 重回队列 } - Log::getInstance()->info("队列发送短信成功"); + Log::getInstance()->info("短信推送成功"); return Result::ACK; } diff --git a/app/Amqp/Consumer/SendStationMessageConsumer.php b/app/Amqp/Consumer/SendStationMessageConsumer.php new file mode 100644 index 0000000..845b28d --- /dev/null +++ b/app/Amqp/Consumer/SendStationMessageConsumer.php @@ -0,0 +1,70 @@ +info("开始执行 站内消息推送 队列:" . json_encode($data, JSON_UNESCAPED_UNICODE)); + + // 验证参数 + if (!isset($data['notice_id'])){ + Log::getInstance()->info("站内消息推送失败:参数错误"); + return Result::DROP; + } + + // 获取推送信息数据 + $params = array(); + $params['notice_id'] = $data['notice_id']; + $message_notice = MessageNotice::getOne($params); + if (empty($message_notice)){ + Log::getInstance()->info("站内消息推送失败:无推送表数据"); + return Result::DROP; + } + + try { + + } catch (\Exception $e) { + Log::getInstance()->error("站内消息推送执行失败:" . $e->getMessage()); + } + + // 处理推送参数 + $ImService = new ImService(); + + // 发送消息 + // 自定义消息 + $cloud_custom_data = array(); + $cloud_custom_data['order_inquiry_id'] = "494837308861095936"; + $cloud_custom_data['is_system'] = 1; + $cloud_custom_data['inquiry_type'] = 1; + + // 消息内容 + $message_content_data = array(); + $message_content_data['message_type'] = 1; + $message_content_data['content'] = "--测试--"; + $message_content_data['desc'] = "温馨提示:您可继续补充问诊内容,便于更快确认病情,医生均在临床一线工作,还请耐心等待,医生接诊会第一时间短信通知您。"; + $message_content = [ + 'Data' => json_encode($message_content_data,JSON_UNESCAPED_UNICODE), + ]; + + $ImService->sendMessage("491925054435950592", "492404831991414785", $message_content, "TIMCustomElem", $cloud_custom_data); + + Log::getInstance()->info("站内消息推送成功"); + return Result::ACK; + } +} diff --git a/app/Amqp/Consumer/SendSubMessageConsumer.php b/app/Amqp/Consumer/SendSubMessageConsumer.php index 3a926f4..6700132 100644 --- a/app/Amqp/Consumer/SendSubMessageConsumer.php +++ b/app/Amqp/Consumer/SendSubMessageConsumer.php @@ -30,7 +30,7 @@ use Symfony\Contracts\HttpClient\Exception\ServerExceptionInterface; use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface; /** - * 发送订阅消息 + * 订阅消息推送 * 每条消息都需携带发送短信参数,用户可能拒绝接受订阅消息 */ #[Consumer(exchange: 'amqp.direct', routingKey: 'SendSubMessage', queue: 'send.sub.message.queue', nums: 1)] @@ -38,33 +38,6 @@ class SendSubMessageConsumer extends ConsumerMessage { /** * @param $data - * [ - * "sub_data" => [ - * "push_user_id" // 用户id(被推送者) - * "template_title" // 推送的模版名称 - * "send_reason" // 发送原因 - * "params" => [ // 推送所需的参数 - * "page" // 跳转页面 - * "data" => [ - * "key1" => "value1" // 入参数据结构 -// * "thing1" => [ // 发送时处理的数据结构 -// * "value" => [ -// * "参数1" -// * ] -// * ] - * ] - * ], - * ] - * "sms_data" => [ // 短信所需的参数,如订阅发送失败需发送短信 - * "template_code" => "SMS_123", - * "template_param" => [ - * // 参数不确定,主要看短信模版的不同 - * ], - * "scene_desc" => "场景描述", - * "phone" => "手机号", - * "user_id" => "用户id(被推送者)" - * ] - * ] * @param AMQPMessage $message * @return string * @throws ContainerExceptionInterface @@ -77,7 +50,7 @@ class SendSubMessageConsumer extends ConsumerMessage */ public function consumeMessage($data, AMQPMessage $message): string { - Log::getInstance()->info("开始执行 发送订阅消息 队列:" . json_encode($data, JSON_UNESCAPED_UNICODE)); + Log::getInstance()->info("开始执行 订阅消息推送 队列:" . json_encode($data, JSON_UNESCAPED_UNICODE)); try { // 获取被推送用户信息 @@ -85,13 +58,13 @@ class SendSubMessageConsumer extends ConsumerMessage $params['user_id'] = $data['push_user_id']; $user = User::getOne($params); if (empty($user)){ - Log::getInstance()->error("队列发送订阅消息执行失败:未查询到被推送用户信息"); + Log::getInstance()->error("订阅消息推送执行失败:未查询到被推送用户信息"); return Result::ACK; } // 验证发送参数 if (empty($data['sub_data']['params']['data'])){ - Log::getInstance()->error("队列发送订阅消息执行失败:无推送数据"); + Log::getInstance()->error("订阅消息推送执行失败:无推送数据"); $this->saveErrorPushLog($user['user_type'],$data['sub_data'],"无推送数据"); return Result::DROP; @@ -108,7 +81,7 @@ class SendSubMessageConsumer extends ConsumerMessage } if (empty($send_data)){ - Log::getInstance()->error("队列发送订阅消息执行失败:发送参数处理失败"); + Log::getInstance()->error("订阅消息推送执行失败:发送参数处理失败"); $this->saveErrorPushLog($user['user_type'],$data['sub_data'],"发送参数处理失败"); return Result::DROP; @@ -119,7 +92,7 @@ class SendSubMessageConsumer extends ConsumerMessage $UserService = new UserService(); $open_id = $UserService->getOpenIdWithUserId($user['user_id'],$user['user_type']); if (empty($open_id)){ - Log::getInstance()->error("队列发送订阅消息执行失败:未获取到被推送用户open_id"); + Log::getInstance()->error("订阅消息推送执行失败:未获取到被推送用户open_id"); $this->saveErrorPushLog($user['user_type'],$data['sub_data'],"未获取到被推送用户open_id"); // 执行发送短信步骤 @@ -131,7 +104,7 @@ class SendSubMessageConsumer extends ConsumerMessage // 获取消息模版 $sub_template = $this->getSubTemplate($user['user_type'],$data['sub_data']['template_title']); if (empty($template_title)){ - Log::getInstance()->error("队列发送订阅消息执行失败:未获取到需要发送的消息模版数据"); + Log::getInstance()->error("订阅消息推送执行失败:未获取到需要发送的消息模版数据"); $this->saveErrorPushLog($user['user_type'],$data['sub_data'],"未获取到需要发送的消息模版数据"); // 执行发送短信步骤 @@ -159,17 +132,17 @@ class SendSubMessageConsumer extends ConsumerMessage $Wechat = new Wechat($user['user_type']); $result = $Wechat->sendSubscribeMessage($options); if (empty($result)){ - Log::getInstance()->error("队列发送订阅消息执行失败:推送失败"); + Log::getInstance()->error("订阅消息推送执行失败:推送失败"); $this->saveErrorPushLog($user['user_type'],$data['sub_data'],"推送失败"); } if (!isset($result['errcode'])){ - Log::getInstance()->error("队列发送订阅消息执行失败:推送失败,返回值错误" . json_encode($result,JSON_UNESCAPED_UNICODE)); + Log::getInstance()->error("订阅消息推送执行失败:推送失败,返回值错误" . json_encode($result,JSON_UNESCAPED_UNICODE)); $this->saveErrorPushLog($user['user_type'],$data['sub_data'],"推送失败,返回值错误"); } if ($result['errcode'] == 43101){ - Log::getInstance()->error("队列发送订阅消息执行失败:用户拒绝接收消息"); + Log::getInstance()->error("订阅消息推送执行失败:用户拒绝接收消息"); $this->saveErrorPushLog($user['user_type'],$data['sub_data'],"用户拒绝接收消息"); // 执行发送短信步骤 @@ -178,11 +151,11 @@ class SendSubMessageConsumer extends ConsumerMessage return Result::ACK; } - Log::getInstance()->info("队列发送订阅消息执行成功"); + Log::getInstance()->info("订阅消息推送执行成功"); $this->saveSuccessPushLog($user['user_type'],$data['sub_data']); } catch (\Exception $e) { - Log::getInstance()->error("队列发送订阅消息执行失败:" . $e->getMessage()); + Log::getInstance()->error("订阅消息推送执行失败:" . $e->getMessage()); $this->saveErrorPushLog($user['user_type'],$data['sub_data'],$e->getMessage()); } @@ -206,7 +179,7 @@ class SendSubMessageConsumer extends ConsumerMessage $data['content'] = json_encode($sub_data['params'],JSON_UNESCAPED_UNICODE); $log_message_push = LogMessagePush::addLogMessagePush($data); if (empty($log_message_push)){ - Log::getInstance()->error("队列发送订阅消息成功,增加推送日志失败:" . json_encode($data,JSON_UNESCAPED_UNICODE)); + Log::getInstance()->error("订阅消息推送成功,增加推送日志失败:" . json_encode($data,JSON_UNESCAPED_UNICODE)); } } @@ -229,7 +202,7 @@ class SendSubMessageConsumer extends ConsumerMessage $data['content'] = json_encode($sub_data['params'],JSON_UNESCAPED_UNICODE); $log_message_push = LogMessagePush::addLogMessagePush($data); if (empty($log_message_push)){ - Log::getInstance()->error("队列发送订阅消息成功,增加推送日志失败:" . json_encode($data,JSON_UNESCAPED_UNICODE)); + Log::getInstance()->error("订阅消息推送成功,增加推送日志失败:" . json_encode($data,JSON_UNESCAPED_UNICODE)); } } @@ -247,25 +220,25 @@ class SendSubMessageConsumer extends ConsumerMessage try { if (empty($sms_data)){ // 无需发送短信 - Log::getInstance()->info("无数据需添加短信队列"); + Log::getInstance()->info("无数据需添加短信推送队列"); return true; } - Log::getInstance()->info("添加短信队列"); + Log::getInstance()->info("添加短信推送队列"); // 增加至发送短信队列 $message = new SendSmsMessageProducer($sms_data); $producer = $this->container->get(Producer::class); $res = $producer->produce($message); if (!$res) { - Log::getInstance()->error("添加短信队列失败" . json_encode($sms_data,JSON_UNESCAPED_UNICODE)); + Log::getInstance()->error("添加短信推送队列失败" . json_encode($sms_data,JSON_UNESCAPED_UNICODE)); } } catch (\Exception $e) { - Log::getInstance()->error("添加短信队列失败" . $e->getMessage()); + Log::getInstance()->error("添加短信推送队列失败" . $e->getMessage()); } - Log::getInstance()->info("添加短信队列成功"); + Log::getInstance()->info("添加短信推送队列成功"); return true; } diff --git a/app/Amqp/Producer/SendSmsMessageProducer.php b/app/Amqp/Producer/SendSmsMessageProducer.php index cfb2ec5..decbe2e 100644 --- a/app/Amqp/Producer/SendSmsMessageProducer.php +++ b/app/Amqp/Producer/SendSmsMessageProducer.php @@ -8,11 +8,23 @@ use Hyperf\Amqp\Annotation\Producer; use Hyperf\Amqp\Message\ProducerMessage; /** - * 发送短信 + * 短信推送 */ #[Producer(exchange: 'amqp.direct', routingKey: 'SendSmsMessage')] class SendSmsMessageProducer extends ProducerMessage { + /** + * @param $data + * [ + * "template_code" => "SMS_123", + * "template_param" => [ + * // 参数不确定,主要看短信模版的不同 + * ], + * "scene_desc" => "场景描述", + * "phone" => "手机号", + * "user_id" => "用户id(被推送者)" + * ] + */ public function __construct($data) { $this->payload = $data; diff --git a/app/Amqp/Producer/SendStationMessageProducer.php b/app/Amqp/Producer/SendStationMessageProducer.php new file mode 100644 index 0000000..393ad29 --- /dev/null +++ b/app/Amqp/Producer/SendStationMessageProducer.php @@ -0,0 +1,23 @@ +payload = $data; + } +} diff --git a/app/Amqp/Producer/SendSubMessageProducer.php b/app/Amqp/Producer/SendSubMessageProducer.php index 689370a..881edc4 100644 --- a/app/Amqp/Producer/SendSubMessageProducer.php +++ b/app/Amqp/Producer/SendSubMessageProducer.php @@ -9,7 +9,7 @@ use Hyperf\Amqp\Annotation\Producer; use Hyperf\Amqp\Message\ProducerMessage; /** - * 发送订阅消息 + * 订阅消息推送 */ #[Producer(exchange: 'amqp.direct', routingKey: 'SendSubMessage')] class SendSubMessageProducer extends ProducerMessage @@ -17,18 +17,25 @@ class SendSubMessageProducer extends ProducerMessage /** * @param array $data * [ - * "push_user_id" // 用户id(被推送者) - * "template_title" // 推送的模版名称 - * "params" => [ // 推送所需的参数 - * "page" // 跳转页面 - * "data" => [ - * "thing1" => [ - * "value" => [ - * "参数1" - * ] + * "sub_data" => [ + * "push_user_id" // 用户id(被推送者) + * "template_title" // 推送的模版名称 + * "send_reason" // 发送原因 + * "params" => [ // 推送所需的参数 + * "page" // 跳转页面 + * "data" => [ + * "key1" => "value1" // 入参数据结构 * ] - * ] - * + * ], + * ] + * "sms_data" => [ // 短信所需的参数,如订阅发送失败需发送短信 + * "template_code" => "SMS_123", + * "template_param" => [ + * // 参数不确定,主要看短信模版的不同 + * ], + * "scene_desc" => "场景描述", + * "phone" => "手机号", + * "user_id" => "用户id(被推送者)" * ] * ] */ diff --git a/app/Model/OrderPrescriptionProduct.php b/app/Model/OrderPrescriptionProduct.php index ff123e6..b436f99 100644 --- a/app/Model/OrderPrescriptionProduct.php +++ b/app/Model/OrderPrescriptionProduct.php @@ -131,7 +131,7 @@ class OrderPrescriptionProduct extends Model * @param array $data * @return Model|OrderPrescriptionProduct */ - public static function addOrderPrescriptionProduct(array $data): \Hyperf\Database\Model\Model|OrderPrescriptionProduct + public static function addOrderPrescriptionProduct(array $data): Model|OrderPrescriptionProduct { return self::create($data); } diff --git a/app/Services/UserDoctorService.php b/app/Services/UserDoctorService.php index 498a3f2..8488f73 100644 --- a/app/Services/UserDoctorService.php +++ b/app/Services/UserDoctorService.php @@ -1154,13 +1154,8 @@ class UserDoctorService extends BaseService $params = array(); $params['doctor_id'] = $user_info['client_user_id']; - $fields = [ - 'doctor_id', - 'iden_auth_status', - 'idcard_status', - 'multi_point_status', - ]; - $user_doctor = UserDoctor::getOne($params, $fields); + + $user_doctor = UserDoctor::getOne($params); if (empty($user_doctor)) { return fail(HttpEnumCode::HTTP_ERROR, "非法医生"); } @@ -1201,6 +1196,8 @@ class UserDoctorService extends BaseService $data = array(); $data['order_inquiry_id'] = $order_inquiry_id; $data['doctor_id'] = $user_info['client_user_id']; + $data['patient_id'] = $order_inquiry['patient_id']; + $data['family_id'] = $order_inquiry['family_id']; $data['prescription_status'] = 1; $data['prescription_code'] = $generator->generate(); // 处方编号 $data['doctor_name'] = $user_doctor['user_name']; // 医生名称 @@ -1246,7 +1243,7 @@ class UserDoctorService extends BaseService $product = Product::getWithAmountOne($params); if (empty($product)) { Db::rollBack(); - return fail(); + return fail(HttpEnumCode::HTTP_ERROR,"商品库存不足"); } if (empty($product['ProductPlatformAmount'])) { diff --git a/config/routes.php b/config/routes.php index 340a1cb..ff42942 100644 --- a/config/routes.php +++ b/config/routes.php @@ -401,7 +401,6 @@ Router::addGroup('/patient', function () { // 获取患者服务、福利、退款、物流消息通知列表-分页 Router::get('/system', [MessageNoticeController::class, 'getPatientMessageSystem']); }); - }); // 药师端api