新增检测是否可创建服务包问诊订单

This commit is contained in:
wucongxing8150 2024-04-17 09:36:08 +08:00
parent 245397dfa7
commit f83580508a
3 changed files with 120 additions and 0 deletions

View File

@ -58,4 +58,15 @@ class OrderServicePackageController extends AbstractController
$data = $OrderServicePackageService->addServiceInquiryOrder();
return $this->response->json($data);
}
/**
* 检测是否可创建服务包问诊订单
* @return ResponseInterface
*/
public function getServicePackageInquiryCheck(): ResponseInterface
{
$OrderServicePackageService = new OrderServicePackageService();
$data = $OrderServicePackageService->getServicePackageInquiryCheck();
return $this->response->json($data);
}
}

View File

@ -215,6 +215,7 @@ class OrderServicePackageService extends BaseService
return fail(HttpEnumCode::CLIENT_HTTP_ERROR);
}
}
// 检测家庭成员是否存在
$params = array();
$params['family_id'] = $request_params['family_id'];
@ -1007,6 +1008,111 @@ class OrderServicePackageService extends BaseService
return success($result);
}
/**
* 检测是否可创建服务包问诊订单
* @return array
*/
public function getServicePackageInquiryCheck(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$order_no = $this->request->route("order_no");
$result = array();
$result['status'] = 1;
$result['message'] = "";
$result['data'] = NULL;
try {
// 检测患者是否购买服务包
$params = array();
$params['order_service_no'] = $order_no;
$order_service_package = OrderServicePackage::getOne($params);
if (empty($order_service_package)) {
return fail(HttpEnumCode::HTTP_ERROR, "患者未购买服务包");
}
// 检测服务包订单订单状态
if ($order_service_package['order_service_status'] == 1) {
return fail(HttpEnumCode::HTTP_ERROR, "服务包未支付");
}
if ($order_service_package['order_service_status'] == 2) {
$result['status'] = 2;
$result['message'] = "已发起问诊,请耐心等待接诊";
$result['data']['order_no'] = $order_service_package['order_service_no'];
return success($result);
}
// 获取服务包订单详情
$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)) {
return fail(HttpEnumCode::SERVER_ERROR);
}
// 处理问诊类型
if ($order_service_package['order_service_type'] == 1) {
$inquiry_mode = 8;
} else {
$inquiry_mode = 9;
}
// 检测是否存在同类型未完成的问诊订单
$PatientOrderService = new PatientOrderService();
$order_inquiry_id = $PatientOrderService->getNotFinishedOrderInquiry(1, $inquiry_mode, $user_info['client_user_id']);
if (!empty($order_inquiry_id)) {
// 获取问诊订单数据
$params = array();
$params['order_inquiry_id'] = $order_inquiry_id;
$order_inquiry = OrderInquiry::getOne($params);
if (empty($order_inquiry)) {
return fail(HttpEnumCode::SERVER_ERROR);
}
$result['status'] = 4;
$result['message'] = "存在进行中的问诊订单,无法再次使用";
$result['data']['order_no'] = $order_inquiry['inquiry_no'];
$result['data']['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
return success($result);
}
// 检测当前医生是否和患者存在未完成问诊订单
$InquiryService = new InquiryService();
$order_inquiry = $InquiryService->checkPatientDoctorProgressInquiry($user_info['client_user_id'], $order_service_package['doctor_id']);
if (!empty($order_inquiry)) {
$result['status'] = 4;
$result['message'] = "您和当前医生存在问诊中订单,无法再次使用";
$result['data']['order_no'] = $order_inquiry['inquiry_no'];
$result['data']['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
return success($result);
}
// 检测问诊次数
// 3.5号购买每月2次问诊次数。今天5.3,属于第几个月,这个月的开始时间和结束时间
if ($order_service_package_detail['monthly_frequency'] != 0) {
// 获取服务包当月已问诊次数
$month_inquiry_count = $this->getCurrentMonthInquiryCount($order_service_package['start_time'],$order_service_package['order_service_type'],$user_info['client_user_id'], $order_service_package['doctor_id']);
if ($month_inquiry_count >= $order_service_package_detail['monthly_frequency']) {
// 超出当月问诊次数
$result['status'] = 3;
$result['message'] = "超出服务包所包含的当月问诊次数";
$result['data']['order_no'] = $order_service_package['order_service_no'];
return success($result);
}
}
}catch (\Throwable $e){
return fail(HttpEnumCode::SERVER_ERROR,$e->getMessage());
}
// 未超出当月问诊次数或次数无限制
$result['message'] = "已购买,未超出当月问诊次数";
$result['data']['order_no'] = $order_service_package['order_service_no'];
return success($result);
}
/**
* 取消未支付检测订单
* @param string|int $order_no

View File

@ -616,6 +616,9 @@ Router::addGroup('/patient', function () {
// 创建服务包问诊订单
Router::post('/inquiry/{order_no}', [OrderServicePackageController::class, 'addServiceInquiryOrder']);
// 检测是否可创建服务包问诊订单
Router::get('/check/{order_no}', [OrderServicePackageController::class, 'getServicePackageInquiryCheck']);
});
});