创建服务包问诊订单以及支付回调增加发送im消息

This commit is contained in:
wucongxing8150 2024-04-12 15:28:14 +08:00
parent c4c6ff06dd
commit 94bbfb0db2
2 changed files with 82 additions and 6 deletions

View File

@ -2443,7 +2443,8 @@ class CallBackController extends AbstractController
// 支付状态无需验证,如第一次支付失败,会修改支付状态,再次支付时,会出现验证不通过的情况 // 支付状态无需验证,如第一次支付失败,会修改支付状态,再次支付时,会出现验证不通过的情况
// 处理支付状态 // 处理支付状态
if ($message['trade_state'] == "SUCCESS") { $trade_state = $message['trade_state'];
if ($trade_state == "SUCCESS") {
// 支付成功 // 支付成功
$pay_status = 2; $pay_status = 2;
$pay_time = date('Y-m-d H:i:s', strtotime($message['success_time']));// 支付时间 $pay_time = date('Y-m-d H:i:s', strtotime($message['success_time']));// 支付时间
@ -2453,16 +2454,16 @@ class CallBackController extends AbstractController
Log::getInstance("CallBack-wxPayServiceSuccess")->error("无支付金额"); Log::getInstance("CallBack-wxPayServiceSuccess")->error("无支付金额");
return $this->wxPayErrorReturn("无支付金额"); return $this->wxPayErrorReturn("无支付金额");
} }
} elseif ($message['trade_state'] == "CLOSED") { } elseif ($trade_state == "CLOSED") {
// 已关闭 // 已关闭
$pay_status = 6; $pay_status = 6;
} elseif ($message['trade_state'] == "REVOKED") { } elseif ($trade_state == "REVOKED") {
// 已撤销(付款码支付) // 已撤销(付款码支付)
$pay_status = 7; $pay_status = 7;
} elseif ($message['trade_state'] == "USERPAYING") { } elseif ($trade_state == "USERPAYING") {
// 用户支付中(付款码支付) // 用户支付中(付款码支付)
$pay_status = 3; $pay_status = 3;
} elseif ($message['trade_state'] == "PAYERROR") { } elseif ($trade_state == "PAYERROR") {
// 支付失败(其他原因,如银行返回失败) // 支付失败(其他原因,如银行返回失败)
$pay_status = 4; $pay_status = 4;
} else { } else {
@ -2762,7 +2763,48 @@ class CallBackController extends AbstractController
return $this->wxPayErrorReturn($e->getMessage()); return $this->wxPayErrorReturn($e->getMessage());
} }
Log::getInstance("CallBack-wxPayServiceSuccess")->info("检测微信支付回调处理成功"); try {
if ($trade_state == "SUCCESS") {
Log::getInstance("CallBack-wxPayInquirySuccess")->info("开始发送im消息");
// 获取订单医生数据
$params = array();
$params['doctor_id'] = $order_inquiry['doctor_id'];
$user_doctor = UserDoctor::getOne($params);
if (empty($user_doctor)) {
Log::getInstance("CallBack-wxPayServiceSuccess")->error("医生数据错误");
return $server->serve();
}
// 发送im消息
$imService = new ImService();
// 等待医生接诊
$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->doctorHaveNewInquiry();
// 加入xx时间未接诊通知队列
$data = array();
$data['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
$time = 1000 * 60 * 60 * 2;
$message = new DoctorNotYetInquiryDelayDirectProducer($data);
$message->setDelayMs($time);
$producer = $this->container->get(Producer::class);
$producer->produce($message);
Log::getInstance("CallBack-wxPayServiceSuccess")->info("发送im消息成功");
}
} catch (\Exception $e) {
// 验证失败
Log::getInstance("CallBack-wxPayInquirySuccess")->error("微信支付回调处理成功,分配医生/发送问诊消息失败:" . $e->getMessage());
return $server->serve();
}
Log::getInstance("CallBack-wxPayServiceSuccess")->info("微信支付回调处理成功");
return $server->serve(); return $server->serve();
} }

View File

@ -4,6 +4,7 @@ namespace App\Services;
use App\Amqp\Producer\CancelUnInquiryOrdersDelayDirectProducer; use App\Amqp\Producer\CancelUnInquiryOrdersDelayDirectProducer;
use App\Amqp\Producer\CancelUnpayOrdersDelayDirectProducer; use App\Amqp\Producer\CancelUnpayOrdersDelayDirectProducer;
use App\Amqp\Producer\DoctorNotYetInquiryDelayDirectProducer;
use App\Constants\HttpEnumCode; use App\Constants\HttpEnumCode;
use App\Exception\BusinessException; use App\Exception\BusinessException;
use App\Model\DiseaseClass; use App\Model\DiseaseClass;
@ -968,6 +969,39 @@ class OrderServicePackageService extends BaseService
return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage()); return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage());
} }
try {
// 获取订单医生数据
$params = array();
$params['doctor_id'] = $order_inquiry['doctor_id'];
$user_doctor = UserDoctor::getOne($params);
if (empty($user_doctor)) {
return fail(HttpEnumCode::HTTP_ERROR, "医生数据错误");
}
// 发送im消息
$imService = new ImService();
// 等待医生接诊
$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->doctorHaveNewInquiry();
// 加入xx时间未接诊通知队列
$data = array();
$data['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
$time = 1000 * 60 * 60 * 2;
$message = new DoctorNotYetInquiryDelayDirectProducer($data);
$message->setDelayMs($time);
$producer = $this->container->get(Producer::class);
$producer->produce($message);
} catch (\Exception $e) {
// 验证失败
return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage());
}
return success(); return success();
} }