From ebe6911fb8beca2d5fe37bfbd70b6973c3419fb5 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 13 Mar 2023 17:02:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=A3=80=E6=B5=8B=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=8F=AF=E6=8E=A5=E8=AF=8A=E3=80=81=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=97=AE=E8=AF=8A=E8=AE=A2=E5=8D=95=E5=B1=9E=E6=80=A7=E8=8E=B7?= =?UTF-8?q?=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/UserDoctorController.php | 12 ++++ app/Model/OrderInquiry.php | 12 ++++ app/Request/PatientOrderRequest.php | 7 +++ app/Services/PatientDoctorService.php | 27 +++++++-- app/Services/PatientOrderService.php | 75 ++++++++++++++++++++++++- app/Services/UserDoctorService.php | 39 ++++++++++++- config/routes.php | 5 +- 7 files changed, 165 insertions(+), 12 deletions(-) diff --git a/app/Controller/UserDoctorController.php b/app/Controller/UserDoctorController.php index fb054ee..b1ca9e1 100644 --- a/app/Controller/UserDoctorController.php +++ b/app/Controller/UserDoctorController.php @@ -331,4 +331,16 @@ class UserDoctorController extends AbstractController $data = $UserDoctorService->getDoctorMessageList(); return $this->response->json($data); } + + + /** + * 获取医生问诊消息用户属性 + * @return ResponseInterface + */ + public function getDoctorMessageAttrList(): ResponseInterface + { + $UserDoctorService = new UserDoctorService(); + $data = $UserDoctorService->getDoctorMessageAttrList(); + return $this->response->json($data); + } } \ No newline at end of file diff --git a/app/Model/OrderInquiry.php b/app/Model/OrderInquiry.php index 19e45da..31d5c20 100644 --- a/app/Model/OrderInquiry.php +++ b/app/Model/OrderInquiry.php @@ -251,4 +251,16 @@ class OrderInquiry extends Model return $data; } + + /** + * 获取信息-多条 + * @param array $params + * @param array $in_params + * @param array $fields + * @return object|null + */ + public static function getInList(array $params, array $in_params,array $fields = ['*']): object|null + { + return self::where($params)->whereIn('order_inquiry_id',$in_params)->get($fields); + } } diff --git a/app/Request/PatientOrderRequest.php b/app/Request/PatientOrderRequest.php index 57caf96..23f5b27 100644 --- a/app/Request/PatientOrderRequest.php +++ b/app/Request/PatientOrderRequest.php @@ -23,6 +23,8 @@ class PatientOrderRequest extends FormRequest "order_no"// 订单编号 ], 'addPatientProductOrder' => [ // 创建药品订单 + "order_prescription_id", + "address_id", ], 'getPatientPrescriptionOrderList' => [ // 获取处方订单列表 ], @@ -64,6 +66,9 @@ class PatientOrderRequest extends FormRequest 'order_type' => 'required|integer|min:1|max:2', 'order_no' => 'required', + + 'order_prescription_id' => 'required', + 'address_id' => 'required', ]; } @@ -111,6 +116,8 @@ class PatientOrderRequest extends FormRequest 'order_type.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), 'order_type.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), 'order_no.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), + 'order_prescription_id.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), + 'address_id.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR), ]; } } diff --git a/app/Services/PatientDoctorService.php b/app/Services/PatientDoctorService.php index fcdbbd5..1ae05fe 100644 --- a/app/Services/PatientDoctorService.php +++ b/app/Services/PatientDoctorService.php @@ -370,11 +370,19 @@ class PatientDoctorService extends BaseService $inquiry_mode = $this->request->input('inquiry_mode'); $doctor_id = $this->request->input('doctor_id',''); + $result = array(); + $result['data'] = []; + $result['message'] = "可接诊"; + $result['status'] = 1; + // 检测是否存在未完成的问诊订单 $UserPatientService = new UserPatientService(); $res = $UserPatientService->getNotFinishedOrdeInquiry($user_info['client_user_id']); if (!empty($res)){ - return fail(HttpEnumCode::HTTP_ERROR,"当前有未完成服务,不允许再次购买",[$res]); + $result['status'] = 2; + $result['data'] = $res; + $result['message'] = "存在未完成的问诊订单"; + return success($result); } if (!empty($doctor_id)){ @@ -397,23 +405,30 @@ class PatientDoctorService extends BaseService } // 检测医生身份认证 - $UserDoctorService = new UserDoctorService(); - $res = $UserDoctorService->checkDoctorAuth($user_doctor); - if ($res !== true) { + if ($user_doctor['iden_auth_status'] != 1) { + return fail(); + } + + if ($user_doctor['idcard_status'] != 1) { return fail(); } if ($user_doctor['is_img_expert_reception'] != 1) { return fail(HttpEnumCode::HTTP_ERROR, "医生未开通在线问诊服务"); } + + // 检测医生今日接诊数量 } if ($inquiry_type == 2 || $inquiry_type == 4){ - // 快速问诊-问诊购药 + // 获取快速、购药问诊可分配医生 $UserDoctorService = new UserDoctorService(); $doctor_id = $UserDoctorService->getInquiryAssignDoctor($inquiry_type); if (empty($doctor_id)){ - return fail(); + $result['status'] = 3; + $result['data'] = ""; + $result['message'] = "目前暂无可接诊医生"; + return success($result); } } diff --git a/app/Services/PatientOrderService.php b/app/Services/PatientOrderService.php index 9d607a3..a332907 100644 --- a/app/Services/PatientOrderService.php +++ b/app/Services/PatientOrderService.php @@ -704,7 +704,45 @@ class PatientOrderService extends BaseService return success($result); } - public function addPatientProductOrder(){ + // 创建药品订单 + public function addPatientProductOrder(): array + { + $user_info = $this->request->getAttribute("userInfo") ?? []; + + $order_prescription_id = $this->request->input('order_prescription_id'); + $address_id = $this->request->input('address_id'); + + // 获取处方数据 + $params = array(); + $params['order_prescription_id'] = $order_prescription_id; + $params['patient_id'] = $user_info['client_user_id']; + $params['is_delete'] = 0; + $order_prescription = OrderPrescription::getOne($params); + if (empty($order_prescription)){ + return fail(); + } + + // 验证处方状态 + if ($order_prescription['prescription_status'] == 1){ + return fail(HttpEnumCode::HTTP_ERROR,"处方未审核"); + } + + if ($order_prescription['prescription_status'] == 3){ + return fail(HttpEnumCode::HTTP_ERROR,"已失效"); + } + if ($order_prescription['prescription_status'] == 4){ + return fail(HttpEnumCode::HTTP_ERROR,"已使用"); + } + +// if (¥) + + + // 检测是否已经存在药品订单数据 + // 新增药品订单 + // 新增药品订单详情 + // 修正处方使用状态 + // 新增取消订单队列 + return success(); } @@ -852,7 +890,40 @@ class PatientOrderService extends BaseService return success($result); } - public function deletePatientPrescriptionOrder(){ + /** + * 删除处方订单记录 + * @return array + */ + public function deletePatientPrescriptionOrder(): array + { + $user_info = $this->request->getAttribute("userInfo") ?? []; + $order_prescription_id = $this->request->route('order_prescription_id'); + + $params = array(); + $params['order_prescription_id'] = $order_prescription_id; + $params['patient_id'] = $user_info['client_user_id']; + $order_prescription = OrderPrescription::getOne($params); + if (empty($order_prescription)){ + return fail(); + } + + // 验证处方状态 + if ($order_prescription['prescription_status'] == 1){ + return fail(HttpEnumCode::HTTP_ERROR,"处方无法删除"); + } + + if ($order_prescription['is_delete'] == 1){ + return success(); + } + + $data = array(); + $data['is_delete'] = 1; + + $params = array(); + $params['order_prescription_id'] = $order_prescription['order_prescription_id']; + OrderPrescription::edit($params,$data); + + return success(); } } \ No newline at end of file diff --git a/app/Services/UserDoctorService.php b/app/Services/UserDoctorService.php index 0f0c439..557d938 100644 --- a/app/Services/UserDoctorService.php +++ b/app/Services/UserDoctorService.php @@ -1363,6 +1363,39 @@ class UserDoctorService extends BaseService return success($result); } + public function getDoctorMessageAttrList(): array + { + $user_info = $this->request->getAttribute("userInfo") ?? []; + + $order_inquiry_ids = $this->request->input('order_inquiry_ids'); + if (empty($order_inquiry_ids)){ + return fail(); + } + + $order_inquiry_ids = explode(',',$order_inquiry_ids); + + $fields = [ + 'order_inquiry_id', + 'patient_name', + 'patient_sex', + 'patient_age', + 'inquiry_status', + ]; + + $params =array(); + $params['doctor_id'] = $user_info['client_user_id']; + $order_inquiry = OrderInquiry::getInList($params,$order_inquiry_ids,$fields); + if (empty($order_inquiry)){ + return success(); + } + + $result = array(); + foreach ($order_inquiry as $value){ + $result[$value['order_inquiry_id']] = $value; + } + + return success($result); + } /** * 检测医生身份认证 @@ -1378,19 +1411,19 @@ class UserDoctorService extends BaseService throw new BusinessException(); } - if (isset($user_doctor['iden_auth_status'])) { + if ($is_iden_auth) { if ($user_doctor['iden_auth_status'] != 1) { return "请先完成身份认证"; } } - if (isset($user_doctor['idcard_status'])) { + if ($is_idcard) { if ($user_doctor['idcard_status'] != 1) { return "请先完成实名认证"; } } - if (isset($user_doctor['multi_point_status'])) { + if ($is_multi_point) { if ($user_doctor['multi_point_status'] != 1) { return "请先完成多点执业认证"; } diff --git a/config/routes.php b/config/routes.php index 66a8080..1952af9 100644 --- a/config/routes.php +++ b/config/routes.php @@ -78,6 +78,9 @@ Router::addGroup('/doctor', function () { // 获取医生问诊消息列表 Router::get('/message', [UserDoctorController::class, 'getDoctorMessageList']); + + // 获取医生问诊消息用户属性 + Router::post('/message/attr', [UserDoctorController::class, 'getDoctorMessageAttrList']); }); //银行卡 @@ -311,7 +314,7 @@ Router::addGroup('/patient', function () { // 删除药品订单 Router::delete('/{order_product_id:\d+}', [PatientOrderController::class, 'deletePatientProductOrder']); - // 创建药品订单-未开发 + // 创建药品订单 Router::post('', [PatientOrderController::class, 'addPatientProductOrder']); });