医生设置视频预约时间
This commit is contained in:
+150
-10
@@ -886,7 +886,6 @@ class InquiryService extends BaseService
|
||||
|
||||
$follow = false; // 关注状态
|
||||
$is_evaluation = false; // 评价状态
|
||||
$is_reservation_video = false; // 预约视频状态
|
||||
|
||||
// 获取医生问诊配置-问诊购药
|
||||
$multi_point_enable = 0;
|
||||
@@ -917,14 +916,6 @@ class InquiryService extends BaseService
|
||||
$is_evaluation = OrderEvaluation::getExists($params);
|
||||
}
|
||||
|
||||
// 获取视频数据
|
||||
$params = array();
|
||||
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
|
||||
$order_inquiry_video = OrderInquiryVideo::getOne($params);
|
||||
if (!empty($order_inquiry_video)){
|
||||
$is_reservation_video = true;
|
||||
}
|
||||
|
||||
$result = array();
|
||||
$result['doctor_user_id'] = $user_doctor['user_id'];
|
||||
$result['patient_user_id'] = $order_inquiry['user_id'];
|
||||
@@ -945,7 +936,6 @@ class InquiryService extends BaseService
|
||||
$result['reception_time'] = $order_inquiry['reception_time'] ?: null; // 接诊时间
|
||||
$result['multi_point_status'] = $user_doctor['multi_point_status'] ?: null;// 医生多点执业认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败)
|
||||
$result['multi_point_enable'] = $multi_point_enable;// 医生问诊购药是否开启
|
||||
$result['is_reservation_video'] = $is_reservation_video;// 预约视频状态
|
||||
|
||||
return success($result);
|
||||
}
|
||||
@@ -1321,6 +1311,156 @@ class InquiryService extends BaseService
|
||||
return success($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 医生设置视频预约时间
|
||||
* @return array
|
||||
* @throws ContainerExceptionInterface
|
||||
* @throws NotFoundExceptionInterface
|
||||
*/
|
||||
public function addVideoReservationDate(): array
|
||||
{
|
||||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||||
|
||||
$order_inquiry_id = $this->request->input('order_inquiry_id');
|
||||
$reservation_time = $this->request->input('reservation_time');
|
||||
|
||||
// 检测问诊时间
|
||||
if (time() >= strtotime($reservation_time)){
|
||||
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 ($order_inquiry['inquiry_type'] != 1){
|
||||
return fail();
|
||||
}
|
||||
|
||||
if ($order_inquiry['inquiry_mode'] != 2){
|
||||
return fail(HttpEnumCode::HTTP_ERROR, "订单类型错误");
|
||||
}
|
||||
|
||||
// 检测订单状态
|
||||
if ($order_inquiry['inquiry_status'] != 4){
|
||||
return fail(HttpEnumCode::HTTP_ERROR, "订单状态错误");
|
||||
}
|
||||
|
||||
// 获取系统问诊配置
|
||||
$params = array();
|
||||
$params['inquiry_type'] = $order_inquiry['inquiry_type'];
|
||||
$params['inquiry_mode'] = $order_inquiry['inquiry_mode'];
|
||||
$system_inquiry_config = SystemInquiryConfig::getOne($params);
|
||||
if (empty($system_inquiry_config)){
|
||||
return fail();
|
||||
}
|
||||
|
||||
// 问诊结束时间
|
||||
$complete_time = strtotime($order_inquiry['reception_time']) + $system_inquiry_config['duration'] * 60 - 10 * 60;
|
||||
|
||||
// 检测问诊结束时间
|
||||
if (time() >= $complete_time){
|
||||
return fail(HttpEnumCode::HTTP_ERROR, "已无法设置/修改视频时间,可立即发起视频");
|
||||
}
|
||||
|
||||
// 获取是否已经预约
|
||||
$params = array();
|
||||
$params['order_inquiry_id'] = $order_inquiry_id;
|
||||
$order_inquiry_video = OrderInquiryVideo::getOne($params);
|
||||
if (!empty($order_inquiry_video)){
|
||||
// 检测是否已开过视频
|
||||
if ($order_inquiry_video['is_video'] == 1){
|
||||
return fail(HttpEnumCode::HTTP_ERROR, "已开过视频时间,无需再修改预约时间");
|
||||
}
|
||||
|
||||
// 检测预约时间修改次数
|
||||
if ($order_inquiry_video['update_number'] >= 1){
|
||||
return fail(HttpEnumCode::HTTP_ERROR, "已无法设置/修改视频时间,可立即发起视频");
|
||||
}
|
||||
}
|
||||
|
||||
// 创建订单
|
||||
Db::beginTransaction();
|
||||
|
||||
$generator = $this->container->get(IdGeneratorInterface::class);
|
||||
|
||||
try {
|
||||
if (empty($order_inquiry_video)){
|
||||
// 创建视频预约数据
|
||||
$data = array();
|
||||
$data['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
|
||||
$data['reservation_time'] = $reservation_time;
|
||||
$order_inquiry_video = OrderInquiryVideo::addOrderInquiryVideo($data);
|
||||
if (empty($order_inquiry_video)){
|
||||
Db::rollBack();
|
||||
return fail(HttpEnumCode::SERVER_ERROR, "设置失败");
|
||||
}
|
||||
}else{
|
||||
// 修改预约时间
|
||||
$data = array();
|
||||
$data['reservation_time'] = $reservation_time;
|
||||
$data['update_number'] = 1;
|
||||
|
||||
$params = array();
|
||||
$params['inquiry_video_id'] = $order_inquiry_video['inquiry_video_id'];
|
||||
$res = OrderInquiryVideo::edit($params,$data);
|
||||
if (!$res){
|
||||
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 {
|
||||
// 获取订单医生数据
|
||||
$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