修改im消息推送。

This commit is contained in:
wucongxing8150 2024-04-19 16:37:21 +08:00
parent 5c0bf12896
commit c4d7f5e018

View File

@ -6,6 +6,9 @@ use App\Constants\DoctorTitleCode;
use App\Constants\HttpEnumCode; use App\Constants\HttpEnumCode;
use App\Exception\BusinessException; use App\Exception\BusinessException;
use App\Model\Hospital; use App\Model\Hospital;
use App\Model\OrderServicePackage;
use App\Model\OrderServicePackageDetail;
use App\Model\OrderServicePackageProduct;
use App\Model\User; use App\Model\User;
use App\Model\UserDoctor; use App\Model\UserDoctor;
use App\Model\UserPatient; use App\Model\UserPatient;
@ -333,7 +336,22 @@ class ImService extends BaseService
$message_content_data['message_type'] = 1; $message_content_data['message_type'] = 1;
$message_content_data['title'] = "—等待医生接诊—"; $message_content_data['title'] = "—等待医生接诊—";
if ($order_inquiry['inquiry_type'] == 1) { if ($order_inquiry['inquiry_type'] == 1) {
$message_content_data['desc'] = "温馨提示当前服务为专家问诊医师接诊后可以在24小时内和医生沟通20个回合。医生繁忙请耐心等待医生接诊会后第一时间短信通知您。"; 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){
$message_content_data['desc'] = "温馨提示:医生繁忙请耐心等待,医生接诊后会第一时间通知您。医生接诊后,服务有效期开始计算。";
}else{
$message_content_data['desc'] = "温馨提示:医生繁忙请耐心等待,医生接诊后会第一时间通知您。";
}
}else{
$message_content_data['desc'] = "温馨提示当前服务为专家问诊医师接诊后可以在24小时内和医生沟通20个回合。医生繁忙请耐心等待医生接诊会后第一时间短信通知您。";
}
} elseif ($order_inquiry['inquiry_type'] == 2) { } elseif ($order_inquiry['inquiry_type'] == 2) {
$message_content_data['desc'] = "温馨提示:请耐心等待,您可继续补充病情,便于医生接诊后更快确认病情。"; $message_content_data['desc'] = "温馨提示:请耐心等待,您可继续补充病情,便于医生接诊后更快确认病情。";
} elseif ($order_inquiry['inquiry_type'] == 3) { } elseif ($order_inquiry['inquiry_type'] == 3) {
@ -386,7 +404,91 @@ class ImService extends BaseService
} }
$message_content_data['title'] = "—问诊已开始,本次问诊可持续{$time}"; $message_content_data['title'] = "—问诊已开始,本次问诊可持续{$time}";
$message_content_data['desc'] = "医生已接诊,为提高沟通效率,您可一次性如实补充病情(具体症状,患病时长,用药情况及想咨询的问题等)。线上咨询不能代替面诊,医生建议仅供参考。"; if ($order_inquiry['inquiry_mode'] == 8 || $order_inquiry['inquiry_mode'] == 9){
$OrderServicePackageService = new OrderServicePackageService();
// 获取服务包订单编号-通过问诊订单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)){
throw new BusinessException("im消息发送失败");
}
// 获取服务包订单详情
$params = array();
$params['order_service_no'] = $order_service_package['order_service_no'];
$order_service_package_detail = OrderServicePackageDetail::getOne($params);
if (empty($order_service_package_detail)){
throw new BusinessException("im消息发送失败");
}
// 转换服务包订单类型为汉字
$order_type = orderServiceTypeToString($order_service_package['order_service_type']);
$start_time = date('Y年m月d日 H时i分',strtotime($order_service_package['start_time']));
$finish_time = date('Y年m月d日 H时i分',strtotime($order_service_package['finish_time']));
// 获取服务包当月剩余问诊次数
if ($order_service_package_detail['monthly_frequency'] != 0 && !empty($order_service_package['start_time'])) {
$OrderServicePackageService = new OrderServicePackageService();
$month_inquiry_count = $OrderServicePackageService->getCurrentMonthInquiryCount($order_service_package['start_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_frequencys'] - $month_inquiry_count;
if ($remaining_inquiry_count < 0){
$remaining_inquiry_count = 0;
}
}else{
$remaining_inquiry_count = "不限";
}
if ($remaining_inquiry_count == 0){
$message_content_data['desc'] = "医生已接诊,为提高沟通效率,您可一次性如实补充病情(具体症状,患病时长,用药情况及想咨询的问题等)。线上咨询不能代替面诊,医生建议仅供参考。";
}
// 检测问诊是否服务包首次问诊
$is_first = $OrderServicePackageService->isFirstInquiryServicePackage($order_service_no);
if ($is_first){
$message_content_data['desc'] = "医生已接诊,{$order_type}服务开始,服务周期为:{$start_time}~{$finish_time},线上咨询不能代表面诊,医生的回复仅为建议。";
}else{
// 健康包
if ($order_inquiry['inquiry_mode'] == 8){
// 检测患者服务包内是否还存在剩余药品
$res = $OrderServicePackageService->checkOrderServiceRemainingProduct($order_service_no);
if ($res){
// 获取剩余药品数量
$remaining_quantity = 0;
// 健康包商品数据
$params = array();
$params['order_service_id'] = $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){
$remaining_quantity += $order_service_package_product['quantity'] - $order_service_package_product['used_quantity'];
if ($remaining_quantity < 0){
$remaining_quantity = 0;
}
}
}
if ($remaining_quantity > 0){
$message_content_data['desc'] = "医生已接诊,健康包服务本月剩余{$remaining_inquiry_count}次问诊,且还剩余{$remaining_quantity}盒肝爽颗粒,提醒医生开具处方。";
}else{
$message_content_data['desc'] = "医生已接诊,健康包服务本月剩余{$remaining_inquiry_count}次问诊,服务周期为:{$start_time}~{$finish_time},线上咨询不能代表面诊,医生的回复仅为建议。";
}
}
}
// 随访包
if ($order_inquiry['inquiry_mode'] == 9){
$message_content_data['desc'] = "医生已接诊,{$order_type}服务本月剩余{$remaining_inquiry_count}/不限次,服务周期为:{$start_time}~{$finish_time},线上咨询不能代表面诊,医生的回复仅为建议。";
}
}
}else{
$message_content_data['desc'] = "医生已接诊,为提高沟通效率,您可一次性如实补充病情(具体症状,患病时长,用药情况及想咨询的问题等)。线上咨询不能代替面诊,医生建议仅供参考。";
}
$message_content = [ $message_content = [
'Data' => json_encode($message_content_data, JSON_UNESCAPED_UNICODE), 'Data' => json_encode($message_content_data, JSON_UNESCAPED_UNICODE),
@ -423,8 +525,36 @@ class ImService extends BaseService
// 消息内容 医生-患者 // 消息内容 医生-患者
$message_content_data = array(); $message_content_data = array();
$message_content_data['message_type'] = 1; $message_content_data['message_type'] = 1;
$message_content_data['title'] = "—医生未接诊—";
$message_content_data['desc'] = "医生因工作繁忙未能及时接诊请您谅解。所支付金额会在24小时内原路退回再次感谢您的支持"; if ($order_inquiry['inquiry_mode'] == 8 || $order_inquiry['inquiry_mode'] == 9){
$OrderServicePackageService = new OrderServicePackageService();
// 获取服务包订单编号-通过问诊订单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)){
throw new BusinessException("im消息发送失败");
}
// 转换服务包订单类型为汉字
$order_type = orderServiceTypeToString($order_service_package['order_service_type']);
// 检测问诊是否服务包首次问诊
$is_first = $OrderServicePackageService->isFirstInquiryServicePackage($order_service_no);
if ($is_first){
$message_content_data['title'] = "—医生未接诊—";
$message_content_data['desc'] = "温馨提示:医生因工作繁忙未能及时进行接诊,请您见谅。{$order_type}订单金额会在24小时内原路退回感谢您的支持。";
}else{
$message_content_data['title'] = "—医生未接诊—";
$message_content_data['desc'] = "温馨提示:医生因工作繁忙未能及时进行接诊,请您见谅;稍后请再次发起问诊。";
}
}else{
$message_content_data['title'] = "—医生未接诊—";
$message_content_data['desc'] = "医生因工作繁忙未能及时接诊请您谅解。所支付金额会在24小时内原路退回再次感谢您的支持";
}
$message_content = [ $message_content = [
'Data' => json_encode($message_content_data, JSON_UNESCAPED_UNICODE), 'Data' => json_encode($message_content_data, JSON_UNESCAPED_UNICODE),
@ -506,8 +636,32 @@ class ImService extends BaseService
// 消息内容 医生-患者 // 消息内容 医生-患者
$message_content_data = array(); $message_content_data = array();
$message_content_data['message_type'] = 1; $message_content_data['message_type'] = 1;
$message_content_data['title'] = "—问诊退款—"; if ($order_inquiry['inquiry_mode'] == 8 || $order_inquiry['inquiry_mode'] == 9){
$message_content_data['desc'] = "平台已自动发起退款,请注意查看账户信息。"; $OrderServicePackageService = new OrderServicePackageService();
// 获取服务包订单编号-通过问诊订单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)){
throw new BusinessException("im消息发送失败");
}
// 检测问诊是否服务包首次问诊
$is_first = $OrderServicePackageService->isFirstInquiryServicePackage($order_service_no);
if ($is_first){
$message_content_data['title'] = "—服务退款—";
$message_content_data['desc'] = "平台已自动发起退款,请注意查看账户信息。";
}else{
$message_content_data['title'] = "—问诊退款—";
$message_content_data['desc'] = "平台已自动发起退款,请注意查看账户信息。";
}
}else{
$message_content_data['title'] = "—问诊退款—";
$message_content_data['desc'] = "平台已自动发起退款,请注意查看账户信息。";
}
$message_content = [ $message_content = [
'Data' => json_encode($message_content_data, JSON_UNESCAPED_UNICODE), 'Data' => json_encode($message_content_data, JSON_UNESCAPED_UNICODE),