新增了医生赠送沟通回合数
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user