修改问诊完成名称,新增问诊结束推送问诊结束im消息

This commit is contained in:
2023-04-24 13:45:59 +08:00
parent c15bf38075
commit 196f8bbb3b
4 changed files with 120 additions and 38 deletions
@@ -147,14 +147,14 @@ class AutoCompleteInquiryDelayDirectConsumer extends ConsumerMessage
}
}
// 发送IM消息-问诊已结束
// 发送IM消息-问诊已完成
$imService = new ImService();
$imService->inquiryEnd($order_inquiry,$user_doctor['user_id'],$order_inquiry['user_id']);
$imService->inquiryComplete($order_inquiry,$user_doctor['user_id'],$order_inquiry['user_id']);
// 发送IM消息-问诊结束评价通知
$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->finishInquiryToDoctor();
@@ -14,6 +14,7 @@ use App\Model\PatientFamilyHealth;
use App\Model\PatientFamilyPersonal;
use App\Model\UserDoctor;
use App\Model\UserPatient;
use App\Services\ImService;
use App\Services\MessagePush;
use App\Utils\Log;
use App\Utils\Mask;
@@ -49,14 +50,14 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage
public function consumeMessage($data, AMQPMessage $message): string
{
Log::getInstance()->error("开始执行 自动结束问诊订单 队列" . json_encode($data, JSON_UNESCAPED_UNICODE));
Log::getInstance("queue-AutoFinishInquiry")->info("开始:" . json_encode($data, JSON_UNESCAPED_UNICODE));
Db::beginTransaction();
try {
// 检测入参参数
if (empty($data['order_inquiry_id'])) {
Db::rollBack();
Log::getInstance()->error("自动结束问诊订单队列执行失败:入参错误");
Log::getInstance("queue-AutoFinishInquiry")->error("错误:入参错误");
return Result::DROP;
}
@@ -66,7 +67,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage
$order_inquiry = OrderInquiry::getOne($params);
if (empty($order_inquiry)) {
Db::rollBack();
Log::getInstance()->error("自动结束问诊订单队列执行失败:问诊订单数据为空");
Log::getInstance("queue-AutoFinishInquiry")->error("错误:问诊订单数据为空");
return Result::DROP;
}
@@ -75,20 +76,20 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage
// 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
if ($order_inquiry['inquiry_status'] != 5) {
Db::rollBack();
Log::getInstance()->error("自动结束问诊订单队列执行失败:问诊订单未完成,无法结束");
Log::getInstance("queue-AutoFinishInquiry")->error("错误:问诊订单未完成,无法结束");
return Result::DROP;
}
// 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常)
if (!in_array($order_inquiry['inquiry_refund_status'], [0, 4, 5])) {
Db::rollBack();
Log::getInstance()->error("自动结束问诊订单队列执行失败:问诊订单正在申请退款");
Log::getInstance("queue-AutoFinishInquiry")->error("错误:问诊订单正在申请退款");
return Result::DROP;
}
if (empty($order_inquiry['doctor_id'])) {
Db::rollBack();
Log::getInstance()->error("自动结束问诊订单队列执行失败:医生id为空");
Log::getInstance("queue-AutoFinishInquiry")->error("错误:医生id为空");
return Result::DROP;
}
@@ -98,7 +99,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage
$res = $this->handleDoctorAccount($order_inquiry);
if (!$res) {
Db::rollBack();
Log::getInstance()->error("自动结束问诊订单队列执行失败:处理医生账户总表失败");
Log::getInstance("queue-AutoFinishInquiry")->error("错误:处理医生账户总表失败");
return Result::DROP;
}
@@ -106,7 +107,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage
$res = $this->handleDoctorAccountDay($order_inquiry);
if (!$res) {
Db::rollBack();
Log::getInstance()->error("自动结束问诊订单队列执行失败:处理医生账户表-日失败");
Log::getInstance("queue-AutoFinishInquiry")->error("错误:处理医生账户表-日失败");
return Result::DROP;
}
}
@@ -127,13 +128,22 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage
$this->handleDoctorPraiseRate($order_inquiry['doctor_id']);
Db::commit();
Log::getInstance()->info("自动结束问诊订单队列执行成功");
return Result::ACK;
Log::getInstance("queue-AutoFinishInquiry")->info("成功");
} catch (\Exception $e) {
Db::rollBack();
Log::getInstance()->error("自动结束问诊订单执行失败" . $e->getMessage());
Log::getInstance("queue-AutoFinishInquiry")->error("错误" . $e->getMessage());
return Result::ACK; // 重回队列
}
// 推送消息
try {
// 推送问诊结束im消息
$this->pushImInquiryFinish($order_inquiry);
}catch (\Exception $e){
Log::getInstance("queue-AutoFinishInquiry")->error("发送消息异常错误:" . $e->getMessage());
}
return Result::ACK;
}
/**
@@ -301,7 +311,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage
$patient_family_health = PatientFamilyHealth::addPatientFamilyHealth($data);
if (empty($patient_family_health)) {
Log::getInstance()->error("自动结束问诊订单队列执行失败:回写患者家庭成员信息表-健康情况表失败");
Log::getInstance("queue-AutoFinishInquiry")->error("错误:回写患者家庭成员信息表-健康情况表失败");
}
} else {
$data = array();
@@ -359,7 +369,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage
$patient_family_personal = PatientFamilyPersonal::addPatientFamilyPersonal($data);
if (empty($patient_family_personal)) {
Log::getInstance()->error("自动结束问诊订单队列执行失败:回写患者家庭成员信息表-个人情况表失败");
Log::getInstance("queue-AutoFinishInquiry")->error("错误:回写患者家庭成员信息表-个人情况表失败");
}
} else {
$data = array();
@@ -436,4 +446,41 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage
$data['praise_rate'] = $praise_rate;
UserDoctor::editUserDoctor($params,$data);
}
/**
* 推送问诊结束im消息
* @param array|object $order_inquiry
* @return void
*/
protected function pushImInquiryFinish(array|object $order_inquiry): void
{
// 当前用户是否在这三天内再次咨询了该医生
$is_inquiry = false;
$params = array();
$params['user_id'] = $order_inquiry['user_id'];
$params['doctor_id'] = $order_inquiry['doctor_id'];
$order_inquirys = OrderInquiry::getList($params);
if (!empty($order_inquirys)){
foreach ($order_inquirys as $item){
if ($item['order_inquiry_id'] == $order_inquiry['order_inquiry_id']){
continue;
}
$is_inquiry = true;
break;
}
}
if (!$is_inquiry){
// 获取医生数据
$params = array();
$params['doctor_id'] = $order_inquiry['doctor_id'];
$user_doctor = UserDoctor::getOne($params);
if (!empty($user_doctor)){
// 发送IM消息-问诊已结束
$imService = new ImService();
$imService->inquiryFinish($order_inquiry,$user_doctor['user_id'],$order_inquiry['user_id']);
}
}
}
}