新增了医生赠送沟通回合数
This commit is contained in:
parent
c5ec194984
commit
cc1ff2f89d
@ -135,6 +135,8 @@ class InquiryController extends AbstractController
|
||||
/**
|
||||
* 获取患者最后一条问诊订单id
|
||||
* @return ResponseInterface
|
||||
* @throws ContainerExceptionInterface
|
||||
* @throws NotFoundExceptionInterface
|
||||
*/
|
||||
public function getPatientLastInquiryId(): ResponseInterface
|
||||
{
|
||||
@ -145,4 +147,20 @@ class InquiryController extends AbstractController
|
||||
$data = $InquiryService->getPatientLastInquiryId();
|
||||
return $this->response->json($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 医生赠送沟通回合数
|
||||
* @return ResponseInterface
|
||||
* @throws ContainerExceptionInterface
|
||||
* @throws NotFoundExceptionInterface
|
||||
*/
|
||||
public function addDoctorGiveInquiryOrder(): ResponseInterface
|
||||
{
|
||||
$request = $this->container->get(InquiryRequest::class);
|
||||
$request->scene('addDoctorGiveInquiryOrder')->validateResolved();
|
||||
|
||||
$InquiryService = new InquiryService();
|
||||
$data = $InquiryService->addDoctorGiveInquiryOrder();
|
||||
return $this->response->json($data);
|
||||
}
|
||||
}
|
||||
@ -17,12 +17,12 @@ use Hyperf\Snowflake\Concern\Snowflake;
|
||||
* @property int $patient_id 患者id
|
||||
* @property int $doctor_id 医生id(未分配时为null)
|
||||
* @property int $family_id 家庭成员id(就诊用户)
|
||||
* @property int $inquiry_type 订单类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药)
|
||||
* @property int $inquiry_mode 订单问诊方式(1:图文 2:视频 3:语音 4:电话 5:会员)
|
||||
* @property int $inquiry_type 订单类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测)
|
||||
* @property int $inquiry_mode 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员 6:疑难会诊 7:附赠)
|
||||
* @property int $inquiry_status 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
|
||||
* @property int $is_delete 删除状态(0:否 1:是)
|
||||
* @property int $inquiry_refund_status 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常)
|
||||
* @property int $inquiry_pay_channel 支付渠道(1:小程序支付 2:微信扫码支付)
|
||||
* @property int $inquiry_pay_channel 支付渠道(1:小程序支付 2:微信扫码支付 3:模拟支付)
|
||||
* @property int $inquiry_pay_status 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款)
|
||||
* @property string $inquiry_no 系统订单编号
|
||||
* @property string $escrow_trade_no 第三方支付流水号
|
||||
@ -40,14 +40,16 @@ use Hyperf\Snowflake\Concern\Snowflake;
|
||||
* @property string $cancel_time 订单取消时间
|
||||
* @property int $cancel_reason 取消订单原因(1:医生未接诊 2:主动取消 3:无可分配医生 4:客服取消 5:支付超时)
|
||||
* @property string $cancel_remarks 取消订单备注(自动添加)
|
||||
* @property int $times_number 沟通次数(0为不限制次数)
|
||||
* @property int $duration 沟通时长(分钟,0为不限制时长)
|
||||
* @property string $patient_name 患者姓名-就诊人
|
||||
* @property string $patient_name_mask 患者姓名-就诊人(掩码)
|
||||
* @property int $patient_sex 患者性别-就诊人(0:未知 1:男 2:女)
|
||||
* @property int $patient_age 患者年龄-就诊人
|
||||
* @property \Carbon\Carbon $created_at 创建时间
|
||||
* @property \Carbon\Carbon $updated_at 修改时间
|
||||
* @property-read OrderInquiryCase $OrderInquiryCase
|
||||
* @property-read UserDoctor $UserDoctor
|
||||
* @property-read OrderInquiryCase|null $OrderInquiryCase
|
||||
* @property-read UserDoctor|null $UserDoctor
|
||||
*/
|
||||
class OrderInquiry extends Model
|
||||
{
|
||||
@ -61,7 +63,7 @@ class OrderInquiry extends Model
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected array $fillable = ['order_inquiry_id', 'user_id', 'patient_id', 'doctor_id', 'family_id', 'inquiry_type', 'inquiry_mode', 'inquiry_status', 'is_delete', 'inquiry_refund_status', 'inquiry_pay_channel', 'inquiry_pay_status', 'inquiry_no', 'escrow_trade_no', 'amount_total', 'coupon_amount_total', 'payment_amount_total', 'pay_time', 'reception_time', 'complete_time', 'finish_time', 'statistics_status', 'statistics_time', 'is_withdrawal', 'withdrawal_time', 'cancel_time', 'cancel_reason', 'cancel_remarks', 'patient_name', 'patient_name_mask', 'patient_sex', 'patient_age', 'created_at', 'updated_at'];
|
||||
protected array $fillable = ['order_inquiry_id', 'user_id', 'patient_id', 'doctor_id', 'family_id', 'inquiry_type', 'inquiry_mode', 'inquiry_status', 'is_delete', 'inquiry_refund_status', 'inquiry_pay_channel', 'inquiry_pay_status', 'inquiry_no', 'escrow_trade_no', 'amount_total', 'coupon_amount_total', 'payment_amount_total', 'pay_time', 'reception_time', 'complete_time', 'finish_time', 'statistics_status', 'statistics_time', 'is_withdrawal', 'withdrawal_time', 'cancel_time', 'cancel_reason', 'cancel_remarks', 'times_number', 'duration', 'patient_name', 'patient_name_mask', 'patient_sex', 'patient_age', 'created_at', 'updated_at'];
|
||||
|
||||
protected string $primaryKey = "order_inquiry_id";
|
||||
|
||||
|
||||
@ -44,6 +44,11 @@ class InquiryRequest extends FormRequest
|
||||
'patient_id',
|
||||
'doctor_id',
|
||||
],
|
||||
'addDoctorGiveInquiryOrder' => [ // 医生赠送沟通回合数
|
||||
'order_inquiry_id',
|
||||
'times_number', // 沟通次数(0为不限制次数)
|
||||
'duration', // 沟通时长(分钟,0为不限制时长)
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
@ -80,6 +85,8 @@ class InquiryRequest extends FormRequest
|
||||
'reply_progress' => 'required|integer|min:0|max:5',//
|
||||
|
||||
'inquiry_status' => 'required|integer|min:0|max:4',
|
||||
'times_number' => "required|min:0|max:999|numeric",
|
||||
'duration' => "required|min:0|max:21600|numeric",
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@ -540,7 +540,7 @@ class ImService extends BaseService
|
||||
$message_content_data['message_type'] = 2; // 订单结束评价弹出
|
||||
// $message_content_data['title'] = "评价";
|
||||
$message_content_data['desc'] = "";
|
||||
$message_content_data['data']['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
|
||||
$message_content_data['data']['order_inquiry_id'] = (string)$order_inquiry['order_inquiry_id'];
|
||||
|
||||
$message_content = [
|
||||
'Data' => json_encode($message_content_data, JSON_UNESCAPED_UNICODE),
|
||||
@ -775,7 +775,7 @@ class ImService extends BaseService
|
||||
$message_content_data['message_type'] = 11;
|
||||
$message_content_data['title'] = "患者信息";
|
||||
$message_content_data['desc'] = "";
|
||||
$message_content_data['data']['order_no'] = $order_inquiry['inquiry_no'];
|
||||
$message_content_data['data']['order_no'] = (string)$order_inquiry['inquiry_no'];
|
||||
$message_content_data['data']['disease_desc'] = $disease_desc ?: "";
|
||||
$message_content_data['data']['message_path'] = "/Pages/yishi/case/index?order_inquiry_id=" . $order_inquiry['order_inquiry_id']; // 跳转地址(小程序内页)
|
||||
$message_content = [
|
||||
@ -816,8 +816,8 @@ class ImService extends BaseService
|
||||
$message_content_data['message_type'] = 12;
|
||||
$message_content_data['title'] = "问诊表";
|
||||
$message_content_data['desc'] = "";
|
||||
$message_content_data['data']['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
|
||||
$message_content_data['data']['order_no'] = $order_inquiry['inquiry_no'];
|
||||
$message_content_data['data']['order_inquiry_id'] = (string)$order_inquiry['order_inquiry_id'];
|
||||
$message_content_data['data']['order_no'] = (string)$order_inquiry['inquiry_no'];
|
||||
$message_content_data['data']['message_path'] = "/pages/sickForm/sickForm"; // 跳转地址(小程序内页)
|
||||
$message_content_data['data']['case_not_fill_fields'] = $case_fields; // 病例字段,json格式,医生端发送患者端使用(此字段仅针对message_type为12的情况)
|
||||
$message_content = [
|
||||
@ -858,8 +858,8 @@ class ImService extends BaseService
|
||||
$message_content_data['message_type'] = 12;
|
||||
$message_content_data['title'] = "问诊表-已填写";
|
||||
$message_content_data['desc'] = "";
|
||||
$message_content_data['data']['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
|
||||
$message_content_data['data']['order_no'] = $order_inquiry['inquiry_no'];
|
||||
$message_content_data['data']['order_inquiry_id'] = (string)$order_inquiry['order_inquiry_id'];
|
||||
$message_content_data['data']['order_no'] = (string)$order_inquiry['inquiry_no'];
|
||||
$message_content_data['data']['message_path'] = "/Pages/yishi/sick_detail/index"; // 跳转地址(小程序内页)
|
||||
$message_content_data['data']['case_patient_message_path'] = "/pages/sickDetail/sickDetail"; // 跳转地址(小程序内页)
|
||||
$message_content_data['data']['case_filled_fields'] = $case_fields; // 病例字段,json格式,患者端发送医生端使用(此字段仅针对message_type为12的情况)
|
||||
@ -873,4 +873,46 @@ class ImService extends BaseService
|
||||
throw new BusinessException($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 赠送回合数消息
|
||||
* @param array|object $order_inquiry 问诊表数据
|
||||
* @param string|int $doctor_user_id 医生用户id
|
||||
* @param string|int $patient_user_id 患者用户id
|
||||
* @param string $times_number 沟通次数(0为不限制次数)
|
||||
* @param string $give_expiration_time 赠送到期时间
|
||||
* @return void
|
||||
*/
|
||||
public function giveFreeRounds(array|object $order_inquiry, string|int $doctor_user_id, string|int $patient_user_id, string $times_number, string $give_expiration_time): void
|
||||
{
|
||||
try {
|
||||
// 发送消息
|
||||
$cloud_custom_data = array();
|
||||
$cloud_custom_data['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
|
||||
$cloud_custom_data['is_system'] = 1;
|
||||
$cloud_custom_data['inquiry_type'] = $order_inquiry['inquiry_type'];
|
||||
$cloud_custom_data['inquiry_mode'] = $order_inquiry['inquiry_mode'];
|
||||
$cloud_custom_data['message_rounds'] = 0;
|
||||
$cloud_custom_data['patient_family_data']['patient_name'] = $order_inquiry['patient_name'];
|
||||
$cloud_custom_data['patient_family_data']['patient_sex'] = $order_inquiry['patient_sex'];
|
||||
$cloud_custom_data['patient_family_data']['patient_age'] = $order_inquiry['patient_age'];
|
||||
|
||||
// 消息内容
|
||||
$message_content_data = array();
|
||||
$message_content_data['message_type'] = 12;
|
||||
$message_content_data['title'] = "";
|
||||
$message_content_data['desc'] = "医生已赠送X个沟通回合数,将在XXXX-XX-XX XX:XX:XX 失效 ,如有需要请尽快给医生留言。";
|
||||
$message_content_data['data']['order_inquiry_id'] = (string)$order_inquiry['order_inquiry_id'];
|
||||
$message_content_data['data']['order_no'] = (string)$order_inquiry['inquiry_no'];
|
||||
$message_content_data['data']['times_number'] = $times_number;
|
||||
$message_content_data['data']['give_expiration_time'] = $give_expiration_time;
|
||||
$message_content = [
|
||||
'Data' => json_encode($message_content_data, JSON_UNESCAPED_UNICODE),
|
||||
];
|
||||
|
||||
$this->sendMessage($doctor_user_id,$patient_user_id, $message_content, "TIMCustomElem", $cloud_custom_data);
|
||||
} catch (\Throwable $e) {
|
||||
throw new BusinessException($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1156,6 +1156,158 @@ class InquiryService extends BaseService
|
||||
return success($order_inquiry['order_inquiry_id']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 医生赠送沟通回合数
|
||||
* @return array
|
||||
* @throws ContainerExceptionInterface
|
||||
* @throws NotFoundExceptionInterface
|
||||
*/
|
||||
public function addDoctorGiveInquiryOrder(): array
|
||||
{
|
||||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||||
|
||||
$order_inquiry_id = $this->request->input('order_inquiry_id');
|
||||
$times_number = $this->request->input('times_number');
|
||||
$duration = $this->request->input('duration');
|
||||
|
||||
if (empty($user_info)) {
|
||||
return fail(HttpEnumCode::HTTP_ERROR, "操作失败");
|
||||
}
|
||||
|
||||
// 检测赠送的回合数和周期
|
||||
if (!in_array($duration,[3*60,7*60,5*60])){
|
||||
return fail(HttpEnumCode::HTTP_ERROR, "请重新选择周期");
|
||||
}
|
||||
|
||||
// 获取问诊订单数据
|
||||
$params = array();
|
||||
$params['order_inquiry_id'] = $order_inquiry_id;
|
||||
$params['doctor_id'] = $user_info['client_user_id'];
|
||||
$order_inquiry = OrderInquiry::getOne($params);
|
||||
if (empty($order_inquiry)) {
|
||||
return fail();
|
||||
}
|
||||
|
||||
// 检测订单状态
|
||||
if (!in_array($order_inquiry['inquiry_status'],[5,6,7])){
|
||||
return fail(HttpEnumCode::HTTP_ERROR, "问诊订单未完成,不可赠送");
|
||||
}
|
||||
|
||||
// 检测是否存在同类型未完成的问诊订单
|
||||
$PatientOrderService = new PatientOrderService();
|
||||
$result = $PatientOrderService->getNotFinishedOrderInquiry($order_inquiry['inquiry_type'], $order_inquiry['patient_id']);
|
||||
if (!empty($result)) {
|
||||
return fail(HttpEnumCode::HTTP_ERROR, "当前患者存在进行中的问诊订单");
|
||||
}
|
||||
|
||||
// 检测当前医生是否和患者存在未完成问诊订单
|
||||
$InquiryService = new InquiryService();
|
||||
$result = $InquiryService->checkPatientDoctorProgressInquiry($order_inquiry['patient_id'], $user_info['client_user_id']);
|
||||
if (!empty($result)) {
|
||||
return fail(HttpEnumCode::HTTP_ERROR, "当前患者和您存在问诊订单,不可赠送");
|
||||
}
|
||||
|
||||
// 获取本次问诊病例
|
||||
$params = array();
|
||||
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
|
||||
$order_inquiry_case = OrderInquiryCase::getOne($params);
|
||||
if (empty($order_inquiry_case)){
|
||||
return fail();
|
||||
}
|
||||
|
||||
// 创建订单
|
||||
Db::beginTransaction();
|
||||
|
||||
$generator = $this->container->get(IdGeneratorInterface::class);
|
||||
|
||||
try {
|
||||
// 生成问诊订单
|
||||
$data = array();
|
||||
$data['user_id'] = $order_inquiry['user_id'];
|
||||
$data['patient_id'] = $order_inquiry['patient_id'];
|
||||
$data['doctor_id'] = $order_inquiry['doctor_id'];
|
||||
$data['family_id'] = $order_inquiry['family_id'];
|
||||
$data['inquiry_type'] = $order_inquiry['inquiry_type'];
|
||||
$data['inquiry_mode'] = 7;
|
||||
$data['inquiry_status'] = 4;
|
||||
$data['inquiry_pay_channel'] = 3;// 支付渠道(1:小程序支付 2:微信扫码支付)
|
||||
$data['inquiry_pay_status'] = 2;
|
||||
$data['inquiry_no'] = $generator->generate();// 订单编号
|
||||
$data['escrow_trade_no'] = "GD" . $generator->generate(); // 第三方支付流水号
|
||||
$data['amount_total'] = 0;// 订单金额
|
||||
$data['coupon_amount_total'] = 0;// 优惠卷总金额
|
||||
$data['payment_amount_total'] = 0;// 实际付款金额
|
||||
$data['pay_time'] = date('Y-m-d H:i:s', time());// 支付时间
|
||||
$data['reception_time'] = date('Y-m-d H:i:s', time());// 接诊时间(已接诊)
|
||||
$data['times_number'] = $times_number;// 沟通次数(0为不限制次数)
|
||||
$data['duration'] = $duration;// 沟通时长(分钟,0为不限制时长)
|
||||
$data['patient_name'] = $order_inquiry['patient_name'];// 患者姓名-就诊人
|
||||
$data['patient_name_mask'] = $order_inquiry['patient_name_mask'];// 患者姓名-就诊人(掩码)
|
||||
$data['patient_sex'] = $order_inquiry['patient_sex'];// 患者性别-就诊人(0:未知 1:男 2:女)
|
||||
$data['patient_age'] = $order_inquiry['patient_age'];// 患者年龄-就诊人
|
||||
$order_inquiry = OrderInquiry::addOrderInquiry($data);
|
||||
if (empty($order_inquiry)) {
|
||||
Db::rollBack();
|
||||
return fail(HttpEnumCode::SERVER_ERROR, "赠送失败");
|
||||
}
|
||||
|
||||
// 增加患者问诊病例
|
||||
unset($order_inquiry_case["inquiry_case_id"]);
|
||||
unset($order_inquiry_case["order_inquiry_id"]);
|
||||
unset($order_inquiry_case["created_at"]);
|
||||
unset($order_inquiry_case["updated_at"]);
|
||||
|
||||
$data = array();
|
||||
$data = $order_inquiry_case->toArray();
|
||||
$data['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];// 订单-问诊id
|
||||
$order_inquiry_case = OrderInquiryCase::addOrderInquiryCase($data);
|
||||
if (empty($order_inquiry_case)) {
|
||||
Db::rollBack();
|
||||
return fail(HttpEnumCode::SERVER_ERROR, "赠送失败");
|
||||
}
|
||||
|
||||
// 不处理意向用药
|
||||
|
||||
Db::commit();
|
||||
}catch (\Throwable $e){
|
||||
Db::rollBack();
|
||||
Log::getInstance("InquiryService-addDoctorGiveInquiryOrder")->error($e->getMessage());
|
||||
return fail(HttpEnumCode::SERVER_ERROR, $e->getMessage());
|
||||
}
|
||||
|
||||
// 发送消息
|
||||
try {
|
||||
// 赠送到期时间
|
||||
$give_expiration_time = date('Y-m-d H:i:s',time()+$duration * 60);
|
||||
|
||||
// 获取订单医生数据
|
||||
$params = array();
|
||||
$params['doctor_id'] = $order_inquiry['doctor_id'];
|
||||
$user_doctor = UserDoctor::getOne($params);
|
||||
if (empty($user_doctor)) {
|
||||
return fail(HttpEnumCode::SERVER_ERROR, "赠送失败");
|
||||
}
|
||||
|
||||
// 发送im消息
|
||||
$imService = new ImService();
|
||||
|
||||
// 赠送回合数消息
|
||||
$imService->giveFreeRounds($order_inquiry, $user_doctor['user_id'], $order_inquiry['user_id'],$times_number,$give_expiration_time);
|
||||
|
||||
// 发送站内、订阅失败发送短信消息-患者-赠送回合数
|
||||
$MessagePush = new MessagePush($order_inquiry['user_id'], $order_inquiry['order_inquiry_id']);
|
||||
$MessagePush->doctorGiveFreeRounds($times_number,$give_expiration_time);
|
||||
}catch (\Throwable $e){
|
||||
Log::getInstance("InquiryService-addDoctorGiveInquiryOrder")->error($e->getMessage());
|
||||
}
|
||||
|
||||
$result = array();
|
||||
$result['order_inquiry_id'] = (string)$order_inquiry['order_inquiry_id']; // 订单主键id
|
||||
$result['inquiry_no'] = (string)$order_inquiry['inquiry_no']; // 订单编号
|
||||
|
||||
return success($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取医生未接诊订单数量
|
||||
* @param string $doctor_id 医生id
|
||||
|
||||
@ -399,7 +399,7 @@ class MessagePush extends BaseService
|
||||
$data['notice_brief_title'] = "您的【{$inquiry_type_string}】服务已结束,点击查看详情。";
|
||||
$data['notice_title'] = "您的【{$inquiry_type_string}】服务已结束,点击查看详情。";
|
||||
$data['notice_content'] = "您咨询{$user_doctor['user_name']}医生的服务已结束,请对本次问诊服务做出评价。您的评价对医生和其他患者也有很重要的参考价值。您也可以点击医生头像,进入医生主页关注医生。";
|
||||
$data['link_type'] = 10;// 聊天详情页
|
||||
$data['link_type'] = 10;// 问诊订单详情
|
||||
|
||||
$link_params = array();
|
||||
$link_params['order_inquiry_id'] = $this->order_inquiry['order_inquiry_id'];
|
||||
@ -456,8 +456,6 @@ class MessagePush extends BaseService
|
||||
* 患者-处方被药师审核通过
|
||||
* 站内、短信
|
||||
* @return void
|
||||
* @throws ContainerExceptionInterface
|
||||
* @throws NotFoundExceptionInterface
|
||||
*/
|
||||
public function patientPrescriptionVerifyPass(): void
|
||||
{
|
||||
@ -533,8 +531,6 @@ class MessagePush extends BaseService
|
||||
* 患者-处方审核未通过
|
||||
* 站内
|
||||
* @return void
|
||||
* @throws ContainerExceptionInterface
|
||||
* @throws NotFoundExceptionInterface
|
||||
*/
|
||||
public function patientPrescriptionVerifyFail(): void
|
||||
{
|
||||
@ -575,8 +571,6 @@ class MessagePush extends BaseService
|
||||
* 站内
|
||||
* @param string $coupon_name
|
||||
* @return void
|
||||
* @throws ContainerExceptionInterface
|
||||
* @throws NotFoundExceptionInterface
|
||||
*/
|
||||
public function patientDistributeCoupon(string $coupon_name): void
|
||||
{
|
||||
@ -639,8 +633,6 @@ class MessagePush extends BaseService
|
||||
* 站内
|
||||
* @param string $coupon_name
|
||||
* @return void
|
||||
* @throws ContainerExceptionInterface
|
||||
* @throws NotFoundExceptionInterface
|
||||
*/
|
||||
public function patientExpireCoupon(string $coupon_name): void
|
||||
{
|
||||
@ -671,8 +663,6 @@ class MessagePush extends BaseService
|
||||
* 站内、订阅、短信
|
||||
* @param int $cancel_reason 取消订单原因(1:医生未接诊 2:主动取消 3:无可分配医生 4:客服取消 5:支付超时)
|
||||
* @return void
|
||||
* @throws ContainerExceptionInterface
|
||||
* @throws NotFoundExceptionInterface
|
||||
*/
|
||||
public function refundInquirySuccess(int $cancel_reason): void
|
||||
{
|
||||
@ -1048,8 +1038,6 @@ class MessagePush extends BaseService
|
||||
* 医生-医生有新问诊
|
||||
* 站内、订阅失败发送短信
|
||||
* @return void
|
||||
* @throws ContainerExceptionInterface
|
||||
* @throws NotFoundExceptionInterface
|
||||
*/
|
||||
public function doctorHaveNewInquiry(): void
|
||||
{
|
||||
@ -1245,8 +1233,6 @@ class MessagePush extends BaseService
|
||||
* 站内
|
||||
* 发送给医生
|
||||
* @return void
|
||||
* @throws ContainerExceptionInterface
|
||||
* @throws NotFoundExceptionInterface
|
||||
*/
|
||||
public function finishInquiryToDoctor(): void
|
||||
{
|
||||
@ -2424,7 +2410,7 @@ class MessagePush extends BaseService
|
||||
/**
|
||||
* 患者-im消息通知
|
||||
* 订阅
|
||||
* @param string $data 消息内容
|
||||
* @param string $msg
|
||||
* @return void
|
||||
*/
|
||||
public function patientImMessageNotice(string $msg): void
|
||||
@ -2477,7 +2463,7 @@ class MessagePush extends BaseService
|
||||
/**
|
||||
* 医生-im消息通知
|
||||
* 订阅
|
||||
* @param string $im_data
|
||||
* @param string $msg
|
||||
* @return void
|
||||
*/
|
||||
public function doctorImMessageNotice(string $msg): void
|
||||
@ -2537,4 +2523,113 @@ class MessagePush extends BaseService
|
||||
Log::getInstance("MessagePush-patientImMessageNotice")->error($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 患者-赠送回合数
|
||||
* 站内、订阅失败发送短信
|
||||
* @param string $times_number
|
||||
* @param string $give_expiration_time 赠送到期时间
|
||||
* @return void
|
||||
*/
|
||||
public function doctorGiveFreeRounds(string $times_number,string $give_expiration_time): void
|
||||
{
|
||||
try {
|
||||
// 获取医生数据
|
||||
$params = array();
|
||||
$params['doctor_id'] = $this->order_inquiry['doctor_id'];
|
||||
$user_doctor = UserDoctor::getOne($params);
|
||||
if (empty($user_doctor)) {
|
||||
Log::getInstance("MessagePush")->error("错误:医生数据为空");
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取问诊订单关联病例
|
||||
$params = array();
|
||||
$params['order_inquiry_id'] = $this->order_inquiry['order_inquiry_id'];
|
||||
$order_inquiry_case = OrderInquiryCase::getOne($params);
|
||||
if (empty($order_inquiry_case)) {
|
||||
Log::getInstance("MessagePush")->error("错误:病例数据为空");
|
||||
return;
|
||||
}
|
||||
|
||||
$producer = ApplicationContext::getContainer()->get(Producer::class);
|
||||
|
||||
$data = array();
|
||||
$data['user_id'] = $this->user['user_id'];
|
||||
$data['notice_type'] = 3;
|
||||
$data['notice_system_type'] = 1;
|
||||
$data['from_name'] = "肝胆小秘书";
|
||||
$data['notice_brief_title'] = "您好,{$user_doctor['user_name']}医生已赠送您{$times_number}次回复机会,请在有效期内和医生进行问诊,请查看详情。";
|
||||
$data['notice_title'] = "您好,{$user_doctor['user_name']}医生已赠送您{$times_number}次回复机会,请在有效期内和医生进行问诊,请查看详情。";
|
||||
$data['notice_content'] = "您好,{$user_doctor['user_name']}医生已赠送您{$times_number}次回复机会(过期时间:{$give_expiration_time}),请在有效期内和医生进行问诊,请查看详情。";
|
||||
$data['link_type'] = 10;// 问诊订单详情
|
||||
|
||||
$link_params = array();
|
||||
$link_params['order_inquiry_id'] = $this->order_inquiry['order_inquiry_id'];
|
||||
$link_params['inquiry_type'] = $this->order_inquiry['inquiry_type'];
|
||||
$link_params['doctor_user_id'] = $user_doctor['user_id'];
|
||||
$link_params['patient_user_id'] = $this->order_inquiry['user_id'];
|
||||
$data['link_params'] = json_encode($link_params, JSON_UNESCAPED_UNICODE);// 跳转参数
|
||||
|
||||
$data['button_type'] = 4; // 订单详情
|
||||
|
||||
$message = new SendStationMessageProducer($data);
|
||||
$result = $producer->produce($message);
|
||||
if (!$result) {
|
||||
Log::getInstance("MessagePush")->error("错误:加入推送队列失败" . json_encode($data, JSON_UNESCAPED_UNICODE));
|
||||
}
|
||||
|
||||
// 订阅
|
||||
// 问诊内容-病情主诉
|
||||
$disease_desc = $order_inquiry_case['disease_desc'];
|
||||
if (!empty($disease_desc)) {
|
||||
if (strlen($disease_desc) > 15) {
|
||||
$disease_desc = mb_substr($disease_desc, 0, 15);
|
||||
if ($disease_desc) {
|
||||
$disease_desc = $disease_desc . "...";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 赠送到期时间
|
||||
$give_expiration_time = date('Y-m-d H:i',strtotime($give_expiration_time));
|
||||
|
||||
$sub_data = array();
|
||||
$sub_data['push_user_id'] = $this->user['user_id'];
|
||||
$sub_data['wx_template_id'] = "9v6dZhjg09CttLd3W9nEUV_-eshNc4BYYNy59jglvZE";// 问诊提醒
|
||||
$sub_data['params']['page'] = "pages/orderDetail/orderDetail?order_inquiry_id={$this->order_inquiry['order_inquiry_id']}";
|
||||
$sub_data['params']['data'] = [
|
||||
"thing1" => (string)$disease_desc,// 问诊内容-病情主诉
|
||||
"thing2" => "医生赠送您{$times_number}次沟通机会",// 提醒内容
|
||||
"name3" => (string)$user_doctor['user_name'],// 问诊医生
|
||||
"thing4" => "有效期至{$give_expiration_time}",// 提示说明
|
||||
];
|
||||
|
||||
// 短信
|
||||
$sms_data = array();
|
||||
$sms_data['template_code'] = "SMS_464531282";
|
||||
$sms_data['scene_desc'] = "医生赠送免费回合数";
|
||||
$sms_data['phone'] = $this->user['mobile'];
|
||||
$sms_data['user_id'] = $this->user['user_id'];
|
||||
|
||||
$template_param = array();
|
||||
$template_param['name'] = $user_doctor['user_name'];
|
||||
$template_param['number'] = $times_number;
|
||||
$template_param['time'] = $give_expiration_time;
|
||||
$sms_data['template_param'] = $template_param;
|
||||
|
||||
$data = array();
|
||||
$data['sub_data'] = $sub_data;
|
||||
$data['sms_data'] = $sms_data;
|
||||
|
||||
$message = new SendSubMessageProducer($data);
|
||||
$producer = ApplicationContext::getContainer()->get(Producer::class);
|
||||
$result = $producer->produce($message);
|
||||
if (!$result) {
|
||||
Log::getInstance("MessagePush")->error("错误:加入订阅推送队列失败" . json_encode($data, JSON_UNESCAPED_UNICODE));
|
||||
}
|
||||
} catch (\Throwable $e) {
|
||||
Log::getInstance("MessagePush")->error("错误:加入推送队列失败" . $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -111,6 +111,9 @@ Router::addGroup('/doctor', function () {
|
||||
// 获取医生问诊配置-服务设置
|
||||
Router::get('', [DoctorInquiryConfigController::class, 'getInquiryServiceConfig']);
|
||||
});
|
||||
|
||||
// 医生赠送沟通回合数
|
||||
Router::post('/give', [InquiryController::class, 'addDoctorGiveInquiryOrder']);
|
||||
});
|
||||
|
||||
//银行卡
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user