医生设置视频预约时间
This commit is contained in:
parent
4226ace7c0
commit
cf7ea42781
@ -163,4 +163,20 @@ class InquiryController extends AbstractController
|
|||||||
$data = $InquiryService->addDoctorGiveInquiryOrder();
|
$data = $InquiryService->addDoctorGiveInquiryOrder();
|
||||||
return $this->response->json($data);
|
return $this->response->json($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 医生设置视频预约时间
|
||||||
|
* @return ResponseInterface
|
||||||
|
* @throws ContainerExceptionInterface
|
||||||
|
* @throws NotFoundExceptionInterface
|
||||||
|
*/
|
||||||
|
public function addVideoReservationDate(): ResponseInterface
|
||||||
|
{
|
||||||
|
$request = $this->container->get(InquiryRequest::class);
|
||||||
|
$request->scene('addVideoReservationDate')->validateResolved();
|
||||||
|
|
||||||
|
$InquiryService = new InquiryService();
|
||||||
|
$data = $InquiryService->addVideoReservationDate();
|
||||||
|
return $this->response->json($data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -14,8 +14,7 @@ use Hyperf\Snowflake\Concern\Snowflake;
|
|||||||
* @property string $reservation_time 预约时间
|
* @property string $reservation_time 预约时间
|
||||||
* @property int $is_send_reservation_notice 是否已发送预约通知(0:否 1:是)
|
* @property int $is_send_reservation_notice 是否已发送预约通知(0:否 1:是)
|
||||||
* @property int $is_video 是否已开视频(0:否 1:是)
|
* @property int $is_video 是否已开视频(0:否 1:是)
|
||||||
* @property string $start_time 开始时间
|
* @property int $update_number 修改次数
|
||||||
* @property string $end_time 结束时间
|
|
||||||
* @property \Carbon\Carbon $created_at 创建时间
|
* @property \Carbon\Carbon $created_at 创建时间
|
||||||
* @property \Carbon\Carbon $updated_at 修改时间
|
* @property \Carbon\Carbon $updated_at 修改时间
|
||||||
*/
|
*/
|
||||||
@ -31,7 +30,7 @@ class OrderInquiryVideo extends Model
|
|||||||
/**
|
/**
|
||||||
* The attributes that are mass assignable.
|
* The attributes that are mass assignable.
|
||||||
*/
|
*/
|
||||||
protected array $fillable = ['inquiry_video_id', 'order_inquiry_id', 'reservation_time', 'is_send_reservation_notice', 'is_video', 'start_time', 'end_time', 'created_at', 'updated_at'];
|
protected array $fillable = ['inquiry_video_id', 'order_inquiry_id', 'reservation_time', 'is_send_reservation_notice', 'is_video', 'update_number', 'created_at', 'updated_at'];
|
||||||
|
|
||||||
protected string $primaryKey = "inquiry_video_id";
|
protected string $primaryKey = "inquiry_video_id";
|
||||||
|
|
||||||
@ -56,4 +55,19 @@ class OrderInquiryVideo extends Model
|
|||||||
{
|
{
|
||||||
return self::where($params)->get($fields);
|
return self::where($params)->get($fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增-批量
|
||||||
|
* @param array $data 新增数据
|
||||||
|
* @return \Hyperf\Database\Model\Model|OrderInquiryVideo
|
||||||
|
*/
|
||||||
|
public static function addOrderInquiryVideo(array $data): \Hyperf\Database\Model\Model|OrderInquiryVideo
|
||||||
|
{
|
||||||
|
return self::create($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function edit(array $params = [], array $data = []): int
|
||||||
|
{
|
||||||
|
return self::where($params)->update($data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,6 +49,10 @@ class InquiryRequest extends FormRequest
|
|||||||
'times_number', // 沟通次数(0为不限制次数)
|
'times_number', // 沟通次数(0为不限制次数)
|
||||||
'duration', // 沟通时长(分钟,0为不限制时长)
|
'duration', // 沟通时长(分钟,0为不限制时长)
|
||||||
],
|
],
|
||||||
|
'addVideoReservationDate' => [ // 医生设置视频预约时间
|
||||||
|
'order_inquiry_id',
|
||||||
|
'reservation_time', // 预约时间
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -87,6 +91,7 @@ class InquiryRequest extends FormRequest
|
|||||||
'inquiry_status' => 'required|integer|min:0|max:4',
|
'inquiry_status' => 'required|integer|min:0|max:4',
|
||||||
'times_number' => "required|min:0|max:999|numeric",
|
'times_number' => "required|min:0|max:999|numeric",
|
||||||
'duration' => "required|min:0|max:21600|numeric",
|
'duration' => "required|min:0|max:21600|numeric",
|
||||||
|
'reservation_time' => "required",
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,6 +128,7 @@ class InquiryRequest extends FormRequest
|
|||||||
'inquiry_status.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
'inquiry_status.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
'inquiry_status.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
'inquiry_status.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
'order_inquiry_id.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
'order_inquiry_id.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
|
'reservation_time.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -886,7 +886,6 @@ class InquiryService extends BaseService
|
|||||||
|
|
||||||
$follow = false; // 关注状态
|
$follow = false; // 关注状态
|
||||||
$is_evaluation = false; // 评价状态
|
$is_evaluation = false; // 评价状态
|
||||||
$is_reservation_video = false; // 预约视频状态
|
|
||||||
|
|
||||||
// 获取医生问诊配置-问诊购药
|
// 获取医生问诊配置-问诊购药
|
||||||
$multi_point_enable = 0;
|
$multi_point_enable = 0;
|
||||||
@ -917,14 +916,6 @@ class InquiryService extends BaseService
|
|||||||
$is_evaluation = OrderEvaluation::getExists($params);
|
$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 = array();
|
||||||
$result['doctor_user_id'] = $user_doctor['user_id'];
|
$result['doctor_user_id'] = $user_doctor['user_id'];
|
||||||
$result['patient_user_id'] = $order_inquiry['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['reception_time'] = $order_inquiry['reception_time'] ?: null; // 接诊时间
|
||||||
$result['multi_point_status'] = $user_doctor['multi_point_status'] ?: null;// 医生多点执业认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败)
|
$result['multi_point_status'] = $user_doctor['multi_point_status'] ?: null;// 医生多点执业认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败)
|
||||||
$result['multi_point_enable'] = $multi_point_enable;// 医生问诊购药是否开启
|
$result['multi_point_enable'] = $multi_point_enable;// 医生问诊购药是否开启
|
||||||
$result['is_reservation_video'] = $is_reservation_video;// 预约视频状态
|
|
||||||
|
|
||||||
return success($result);
|
return success($result);
|
||||||
}
|
}
|
||||||
@ -1321,6 +1311,156 @@ class InquiryService extends BaseService
|
|||||||
return success($result);
|
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
|
* @param string $doctor_id 医生id
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user