From 22620a3eb97df30df1901f15e093360461704a7f Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 28 Jul 2023 18:22:15 +0800 Subject: [PATCH] 1 --- app/Services/DetectionService.php | 74 ++ app/Services/OrderPrescriptionService_1.php | 911 -------------------- config/routes.php | 3 + 3 files changed, 77 insertions(+), 911 deletions(-) delete mode 100644 app/Services/OrderPrescriptionService_1.php diff --git a/app/Services/DetectionService.php b/app/Services/DetectionService.php index e50d2ee..2974159 100644 --- a/app/Services/DetectionService.php +++ b/app/Services/DetectionService.php @@ -467,4 +467,78 @@ class DetectionService extends BaseService $result['data']['inquiry_no'] = (string)$order_detection['detection_no']; // 订单编号 return success($result); } + + // 取消未支付检测订单 + public function cancelUnpayDetectionOrder(string|int $order_no, string|int $cancel_reason, string|int $cancel_remarks){ + $result = array(); + $result['status'] = 1; + $result['message'] = "成功"; + + // 获取检测订单数据 + $params = array(); + $params['detection_no'] = $order_no; + $order_detection = OrderDetection::getOne($params); + if (empty($order_detection)){ + $result['status'] = 0; + $result['message'] = "取消未支付的检测订单失败:未查询到对应订单数据"; + return $result; + } + + // 检测订单状态 + if ($order_detection['detection_status'] == 5) { + // 检测订单状态(1:待支付 2:待绑定 3:检测中 4:检测完成 5:已取消) + $result['status'] = 2; + $result['message'] = "取消未支付的检测订单:订单已取消"; + return $result; + } + + if ($order_detection['detection_status'] != 1) { + // 检测订单状态(1:待支付 2:待绑定 3:检测中 4:检测完成 5:已取消) + $result['status'] = 0; + $result['message'] = "取消未支付的检测订单:订单状态为" . $order_detection['detection_status'] . "无法执行"; + return $result; + } + + // 检测订单退款状态 + if (!in_array($order_detection['detection_refund_status'], [0, 4, 5])) { + // 检测订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常) + $result['status'] = 0; + $result['message'] = "取消未支付的检测订单:订单正在退款中"; + return $result; + } + + // 检测订单支付状态 + if ($order_detection['detection_pay_status'] == 2) { + // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款) + $result['status'] = 2; + $result['message'] = "取消未支付的检测订单:订单已支付"; + return $result; + } + + // 检测订单删除状态 + if ($order_detection['is_delete'] == 1) { + // 删除状态(0:否 1:是) + $result['status'] = 2; + $result['message'] = "取消未支付的检测订单:订单已被删除"; + return $result; + } + + // 取消检测订单 + $data = array(); + $data['detection_status'] = 5; // 检测订单状态(1:待支付 2:待绑定 3:检测中 4:检测完成 5:已取消) + if ($cancel_reason == 3){ + $data['detection_pay_status'] = 5; // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款) + } + + $data['cancel_time'] = date("Y-m-d H:i:s", time()); + $data['cancel_reason'] = $cancel_reason; // 取消订单原因(1:主动取消 2:客服取消 3:支付超时) + $data['cancel_remarks'] = $cancel_remarks; // 取消订单备注 + $data['updated_at'] = date("Y-m-d H:i:s", time()); + + $params = array(); + $params['order_detection_id'] = $order_detection['order_detection_id']; + OrderDetection::editOrderDetection($params,$data); + + return $result; + } } \ No newline at end of file diff --git a/app/Services/OrderPrescriptionService_1.php b/app/Services/OrderPrescriptionService_1.php deleted file mode 100644 index b3a03e9..0000000 --- a/app/Services/OrderPrescriptionService_1.php +++ /dev/null @@ -1,911 +0,0 @@ -add(4); - - // 获取处方关联疾病名称 - $icd_name = ""; - co(function () use ($wg,$channel,&$icd_name,$order_prescription_id) { - defer(function() use ($wg) { - $wg->done(); - }); - - $params = array(); - $params['order_prescription_id'] = $order_prescription_id; - $order_prescription_icd = OrderPrescriptionIcd::getList($params); - if (empty($order_prescription_icd)) { - $channel->push('处方疾病数据错误'); - return; - } - - $icd_name = array_column($order_prescription_icd->toArray(), 'icd_name'); - if (!empty($icd_name)) { - if (count($icd_name) > 1) { - $icd_name = implode(';', $icd_name); - } else { - $icd_name = $icd_name[0]; - } - } - }); - - // 获取处方关联商品数据 - $order_prescription_product = []; - co(function () use ($wg,$channel,&$order_prescription_product,$order_prescription_id) { - defer(function() use ($wg) { - $wg->done(); - }); - - $params = array(); - $params['order_prescription_id'] = $order_prescription_id; - $order_prescription_product = OrderPrescriptionProduct::getList($params); - if (empty($order_prescription_product)) { - $channel->push('处方药品数据错误'); - return; - } - }); - - // 获取医生自定义科室数据 - $hospital_department_custom = []; - $doctor_id = $order_prescription['doctor_id']; - co(function () use ($wg,$channel,&$hospital_department_custom,$doctor_id) { - defer(function() use ($wg) { - $wg->done(); - }); - - // 获取医生数据 - $params = array(); - $params['doctor_id'] = $doctor_id; - $user_doctor = UserDoctor::getOne($params); - if (empty($user_doctor)) { - $channel->push('医生数据错误'); - return; - } - - // 获取医生自定义科室数据 - $params = array(); - $params['department_custom_id'] = $user_doctor['department_custom_id']; - $hospital_department_custom = HospitalDepartmentCustom::getOne($params); - if (empty($hospital_department_custom)) { - $channel->push('医生自定义数据错误'); - return; - } - }); - - // 获取处方关联病例数据 - $order_inquiry_case = []; - $order_inquiry_id = $order_prescription['order_inquiry_id']; - co(function () use ($wg,$channel,&$order_inquiry_case,$order_inquiry_id) { - defer(function() use ($wg) { - $wg->done(); - }); - - $params = array(); - $params['order_inquiry_id'] = $order_inquiry_id; - $order_inquiry_case = OrderInquiryCase::getOne($params); - if (empty($order_inquiry_case)) { - $channel->push('处方病例数据错误'); - return; - } - }); - - // 结束 - $wg->wait(); - - // 判断通道是否存在异常数据 - $res = $channel->isEmpty(); - if ($res){ - // 读取通道数据 - $data = $channel->pop(); - - // 关闭channel通道 - $channel->close(); - - throw new BusinessException($data); - }else{ - // 关闭channel通道 - $channel->close(); - } - - $CaOnline = new CaOnline(); - - // 获取云证书签名 - $data = array(); - $data['created_at'] = $order_prescription['doctor_created_time']; - $data['department_custom_name'] = $hospital_department_custom['department_name'] ?: ""; - $data['user_name'] = $order_prescription['patient_name']; - $data['sex'] = sexToStringSex($order_prescription['patient_sex']); - $data['age'] = $order_prescription['patient_age']; - $data['allergy_history'] = $order_inquiry_case['allergy_history'] ?: "无"; - $data['icd_name'] = $icd_name; - $data['doctor_advice'] = $order_prescription['doctor_advice'] ?: "无"; - - // 商品数据 - $data['product'] = array(); - foreach ($order_prescription_product as $item) { - $product = array(); - $product['product_name'] = $item['product_name'] . "(" . $item['product_spec'] . ")"; // 商品名称+商品规格 - $product['single_unit'] = $item['single_unit'] ?: ""; // 单次剂量(例:1次1包) - $product['frequency_use'] = $item['frequency_use'] ?: ""; // 使用频率(例:1天3次) - $product['single_use'] = $item['single_use'] ?: ""; // 单次用法(例:口服) - $product['prescription_product_num'] = $item['prescription_product_num'] . $item['packaging_unit']; // 商品数量 + 基本包装单位(例:盒/瓶) - $data['product'][] = $product; - } - - dump("获取用户云证书签名"); - $cert_sign_result = $CaOnline->getCertSign($user_entity_id, $user_entity_id, $data); - dump("获取用户云证书签名成功"); - - // 验证云证书签名-验证无需处理,只要不返回错误即可 - dump("验证用户云证书签名"); - $CaOnline->verifyPkcs7($cert_sign_result['signP7'], $data); - dump("验证用户云证书签名成功"); - - if ($user['user_type'] == 3) { - dump("获取医院云证书签名"); - unset($cert_sign_result); - $cert_sign_result = $CaOnline->getCertSign($hospital_entity_id, $hospital_entity_id, $data); - dump("获取医院云证书签名成功"); - - // 验证云证书签名-验证无需处理,只要不返回错误即可 - dump("验证医院云证书签名"); - $CaOnline->verifyPkcs7($cert_sign_result['signP7'], $data); - dump("验证医院云证书签名成功"); - } - - $oss = new Oss(); - // 医生 - if ($user['user_type'] == 2) { - // 下载基础处方图片 - $prescription_basic_filename = "basic/file/prescription.jpg"; - $prescription_image = $oss->getObjectToRAM($prescription_basic_filename); - - dump("下载基础处方图片成功"); - - $manager = new ImageManager(); - - $image = $manager->make($prescription_image); - - $fontPath = './extend/Ca/msyh.ttf'; - - // 处方号 - $image->text($order_prescription['prescription_code'], 1480, 540, function ($font) use ($fontPath) { - $font->file($fontPath); - $font->size(60); - $font->align('left'); - }); - - // 日期 - $image->text(date('Y-m-d', strtotime($order_prescription['doctor_created_time'])), 354, 675, function ($font) use ($fontPath) { - $font->file($fontPath); - $font->size(60); - $font->align('left'); - }); - - // 科室 - $image->text($hospital_department_custom['department_name'] ?: "", 1385, 675, function ($font) use ($fontPath) { - $font->file($fontPath); - $font->size(60); - $font->align('left'); - }); - - // 姓名 - $image->text($order_prescription['patient_name'], 354, 795, function ($font) use ($fontPath) { - $font->file($fontPath); - $font->size(60); - $font->align('left'); - }); - - // 性别 - $image->text(sexToStringSex($order_prescription['patient_sex']), 1385, 790, function ($font) use ($fontPath) { - $font->file($fontPath); - $font->size(60); - $font->align('left'); - }); - - // 年龄 - $image->text($order_prescription['patient_age'], 354, 900, function ($font) use ($fontPath) { - $font->file($fontPath); - $font->size(60); - $font->align('left'); - }); - - // 过敏史 - $image->text($order_inquiry_case['allergy_history'] ?: "无", 405, 1030, function ($font) use ($fontPath) { - $font->file($fontPath); - $font->size(60); - $font->align('left'); - }); - - // 初步诊断 - $image->text($icd_name, 445, 1145, function ($font) use ($fontPath) { - $font->file($fontPath); - $font->size(60); - $font->align('left'); - }); - - // 医生建议 - $image->text($order_prescription['doctor_advice'] ?: "无", 445, 1252, function ($font) use ($fontPath) { - $font->file($fontPath); - $font->size(60); - $font->align('left'); - }); - - // 商品数据 - foreach ($order_prescription_product as $key => $item) { - $x_axis = 229; - $y_axis = 1600 + $key * 250; - $x_axis_num = 1900;// 数量使用 - - // 商品名称 - $image->text($item['product_name'], $x_axis, $y_axis, function ($font) use ($fontPath) { - $font->file($fontPath); - $font->size(50); - $font->align('left'); - }); - - $image->text("X" . $item['prescription_product_num'] . $item['packaging_unit'], $x_axis_num, $y_axis, function ($font) use ($fontPath) { - $font->file($fontPath); - $font->size(50); - $font->align('left'); - }); - - // 用量 - $image->text("用量:" . $item['single_unit'] . " " . $item['frequency_use'], $x_axis, $y_axis + 70, function ($font) use ($fontPath) { - $font->file($fontPath); - $font->size(50); - $font->align('left'); - }); - - // 用法 - $image->text("用法:" . $item['single_use'], $x_axis, $y_axis + 140, function ($font) use ($fontPath) { - $font->file($fontPath); - $font->size(50); - $font->align('left'); - }); - } - - // 生成图片 - $img_result = (string)$image->encode('png', 75); - dump("处方图片生成成功"); - - // 上传处方图片至oss - $prescription_img_oss_filename = "applet/prescription/" . $order_prescription['order_prescription_id'] . '.' . 'jpg'; - $prescription_img_url = $oss->putObject($prescription_img_oss_filename, $img_result); - $prescription_img_url = '/' . $prescription_img_url; - dump("处方图片上传oss成功"); - - // 图片生成pdf - $pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false); - - $pdf->AddPage(); - $pdf->Image('@' . $img_result, 10, 10, 0, 0, '', '', '', false, 300, '', false, false, 0, false, false, false); - - $prescription_pdf_local_filename = $order_prescription['order_prescription_id'] . '.' . 'pdf'; - - // 图片生成的处方pdf存储为本地文件 - $pdf->Output(dirname(__DIR__, 2) . "/" . $prescription_pdf_local_filename, "F"); - - dump("处方图片生成pdf成功"); - } - - // 药师 - if ($user['user_type'] == 3) { - // 下载医生开具的处方pdf - // 去除第一个/ oss不识别 - $prescription_pdf_path = substr($order_prescription['prescription_pdf'], 1, strlen($order_prescription['prescription_pdf']) - 1); - - $local = "./runtime/" . $order_prescription['order_prescription_id'] . '.' . 'pdf'; - - $oss->getObjectToLocal($prescription_pdf_path, $local); - dump("下载医生开具的处方pdf成功"); - } - - // 下载签名图片 - $style = "image/resize,m_lfit,w_100,h_350"; - $sign_image = $oss->getCusTomObjectToRAM($sign_image_path, $style); - $sign_image = base64_encode($sign_image); - if (!$sign_image) { - throw new BusinessException("签名图片下载失败"); - } - - dump("下载签名图片成功"); - - if ($user['user_type'] == 2) { - $sign_param = [ - [ // 医生端 - "llx" => "120", // 左边底部X坐标 - "lly" => "190", // 左边底部Y坐标 - "urx" => "190", // 右边上部x坐标 - "ury" => "140", // 右边上部y坐标 - "pageList" => [1], - "sealImg" => $sign_image - ], - ]; - } else { - $sign_param = [ - [ // 药师端 - "llx" => "350", // 左边底部X坐标 - "lly" => "190", // 左边底部Y坐标 - "urx" => "440", // 右边上部x坐标 - "ury" => "140", // 右边上部y坐标 - "pageList" => [1], - "sealImg" => $sign_image - ] - ]; - } - - // 打开处方pdf文件 - $pdf_file = fopen("./runtime/" . $order_prescription['order_prescription_id'] . ".pdf", 'r'); - if (!$pdf_file) { - throw new BusinessException("处方图片打开失败"); - } - - - // 处方pdf进行签章 - $data = array(); - $data['sign_param'] = json_encode($sign_param); - $data['pdf_file'] = $pdf_file; - $sign_pdf_result = $CaOnline->addSignPdf($user_entity_id, $data); - if (empty($sign_pdf_result[0]['fileId'])) { - throw new BusinessException("处方签章失败"); - } - - dump("处方pdf进行签章成功"); - - // 下载处方签章文件 - $file_id = $sign_pdf_result[0]['fileId']; - $prescription_pdf_result = $CaOnline->getSignedFile($user_entity_id, $file_id); - - if (empty($prescription_pdf_result)) { - throw new BusinessException("下载处方签章文件失败"); - } - - dump("下载处方签章文件成功"); - - // 上传oss - $filename = "applet/prescription/" . $order_prescription['order_prescription_id'] . '.' . 'pdf'; - $prescription_pdf_url = $oss->putObject($filename, $prescription_pdf_result); - dump("处方pdf上传pss成功"); - - if ($user['user_type'] == 3) { - // 药师端时,需要进行系统签章 - // 把药师签章的pdf存储至本地文件 - $file = fopen("./runtime/" . $order_prescription['order_prescription_id'] . '.' . 'pdf', "w"); - fwrite($file, $prescription_pdf_result); - fclose($file); - - // 下载医院签名图片 - $style = "image/resize,w_300,h_300"; - $sign_image = $oss->getCusTomObjectToRAM($hospital_sign_image_path, $style); - $sign_image = base64_encode($sign_image); - if (!$sign_image) { - throw new BusinessException("医院签名图片下载失败"); - } - - $sign_param = [ - [ // 医院签章 - "llx" => "370", // 左边底部X坐标 控制左右(越小越左) - "lly" => "210", // 左边底部Y坐标 控制上下(越小越下) - "urx" => "520", // 右边上部x坐标 - "ury" => "360", // 右边上部y坐标 - "pageList" => [1], - "sealImg" => $sign_image - ], - ]; - - // 打开处方pdf文件 - unset($pdf_file); - $pdf_file = fopen("./runtime/" . $order_prescription['order_prescription_id'] . ".pdf", 'r'); - - // 处方pdf进行签章 - $data = array(); - $data['sign_param'] = json_encode($sign_param); - $data['pdf_file'] = $pdf_file; - $hospital_sign_pdf_result = $CaOnline->addSignPdf($hospital_entity_id, $data); - if (empty($hospital_sign_pdf_result[0]['fileId'])) { - throw new BusinessException("处方签章失败"); - } - - dump("处方pdf进行医院签章成功"); - - // 下载处方签章文件 - unset($prescription_pdf_result); - $file_id = $hospital_sign_pdf_result[0]['fileId']; - $prescription_pdf_result = $CaOnline->getSignedFile($hospital_entity_id, $file_id); - - if (empty($prescription_pdf_result)) { - throw new BusinessException("下载处方签章文件失败"); - } - - dump("下载医院处方签章文件成功"); - - // 上传oss - $hospital_filename = "applet/prescription/" . $order_prescription['order_prescription_id'] . '.' . 'pdf'; - $prescription_pdf_url = $oss->putObject($hospital_filename, $prescription_pdf_result); - dump("上传医院处方签章文件成功"); - } - - $result = array(); - $result['prescription_img_url'] = $prescription_img_url ?? $order_prescription['prescription_img']; - $result['prescription_pdf_url'] = '/' . $prescription_pdf_url ?: ""; - return $result; - - } catch (\Exception $e) { - throw new BusinessException($e->getMessage()); - } - } - - /** - * 上报处方平台 - * @param string $order_product_id 商品订单id - * @return bool - */ - public function reportPrescription(string $order_product_id): bool - { - // 获取商品订单数据 - $params = array(); - $params['order_product_id'] = $order_product_id; - $order_product = OrderProduct::getOne($params); - if (empty($order_product)) { - throw new BusinessException("上报处方平台失败:商品订单数据错误"); - } - - // 获取处方数据 - $params = array(); - $params['order_prescription_id'] = $order_product['order_prescription_id']; - $order_prescription = OrderPrescription::getOne($params); - if (empty($order_prescription)) { - throw new BusinessException("上报处方平台失败:处方数据错误"); - } - - // 获取问诊订单数据 - $params = array(); - $params['order_inquiry_id'] = $order_prescription['order_inquiry_id']; - $order_inquiry = OrderInquiry::getOne($params); - if (empty($order_inquiry)) { - throw new BusinessException("上报处方平台失败:问诊订单数据错误"); - } - - // 获取商品订单列表数据 - $params = array(); - $params['order_product_id'] = $order_product['order_product_id']; - $order_product_item = OrderProductItem::getList($params); - if (empty($order_product_item)) { - throw new BusinessException("上报处方平台失败:商品订单列表数据错误"); - } - - $wg = new WaitGroup(); - $wg->add(8); - - $user = []; // 就诊患者用户数据 - $patient_family = []; // 家庭成员-基本信息 - $order_prescription_icd = []; // 处方关联疾病数据 - $user_doctor = []; // 医生数据 - $user_doctor_info = []; // 医生详情数据 - $user_pharmacist = []; // 药师数据 - $user_pharmacist_info = []; // 药师详数据 - $order_inquiry_case = []; // 病例数据 - - $user_id = $order_inquiry['user_id']; - $doctor_id = $order_prescription['doctor_id']; - $family_id = $order_inquiry['family_id']; - $pharmacist_id = $order_prescription['pharmacist_id']; - $order_inquiry_id = $order_inquiry['order_inquiry_id']; - - // 获取就诊患者用户数据 - co(function () use ($wg, &$user, $user_id) { - $params = array(); - $params['user_id'] = $user_id; - $user = User::getOne($params)->toArray(); - // 计数器减一 - $wg->done(); - }); - - // 获取家庭成员-基本信息 - co(function () use ($wg, &$patient_family, $family_id) { - $params = array(); - $params['family_id'] = $family_id; - $patient_family = PatientFamily::getOne($params); - - // 计数器减一 - $wg->done(); - }); - - // 获取处方关联疾病数据 - $order_prescription_id = $order_prescription['order_prescription_id']; - co(function () use ($wg, &$order_prescription_icd, $order_prescription_id) { - $params = array(); - $params['order_prescription_id'] = $order_prescription_id; - $order_prescription_icd = OrderPrescriptionIcd::getList($params); - - // 计数器减一 - $wg->done(); - }); - - // 获取医生数据 - co(function () use ($wg, &$user_doctor, $doctor_id) { - $params = array(); - $params['doctor_id'] = $doctor_id; - $user_doctor = UserDoctor::getOne($params); - - // 计数器减一 - $wg->done(); - }); - - // 获取医生详情数据 - co(function () use ($wg, &$user_doctor_info, $doctor_id) { - $params = array(); - $params['doctor_id'] = $doctor_id; - $user_doctor_info = UserDoctorInfo::getOne($params); - - // 计数器减一 - $wg->done(); - }); - - // 获取药师数据 - co(function () use ($wg, &$user_pharmacist, $pharmacist_id) { - $params = array(); - $params['pharmacist_id'] = $pharmacist_id; - $user_pharmacist = UserPharmacist::getOne($params); - - // 计数器减一 - $wg->done(); - }); - - // 获取药师详情数据 - co(function () use ($wg, &$user_pharmacist_info, $pharmacist_id) { - $params = array(); - $params['pharmacist_id'] = $pharmacist_id; - $user_pharmacist_info = UserPharmacistInfo::getOne($params); - - // 计数器减一 - $wg->done(); - }); - - // 获取病例数据 - co(function () use ($wg, &$order_inquiry_case, $order_inquiry_id) { - $params = array(); - $params['order_inquiry_id'] = $order_inquiry_id; - $params['status'] = 1; - $order_inquiry_case = OrderInquiryCase::getOne($params); - - // 计数器减一 - $wg->done(); - }); - - $wg->wait(); - - if (empty($user)) { - throw new BusinessException("用户数据错误"); - } - if (empty($patient_family)) { - throw new BusinessException("用户家庭成员错误"); - } - if (empty($order_prescription_icd)) { - throw new BusinessException("处方疾病数据错误"); - } - if (empty($user_doctor)) { - throw new BusinessException("医生数据错误"); - } - if (empty($user_doctor_info)) { - throw new BusinessException("医生详情数据错误"); - } - if (empty($user_pharmacist)) { - throw new BusinessException("药师数据错误"); - } - if (empty($user_pharmacist_info)) { - throw new BusinessException("药师详情数据错误"); - } - if (empty($order_inquiry_case)) { - throw new BusinessException("病例数据错误"); - } - - // 处理疾病数据 - $icd_name = array_column($order_prescription_icd->toArray(), 'icd_name'); - if (!empty($icd_name)) { - if (count($icd_name) > 1) { - $icd_name = implode(';', $icd_name); - } else { - $icd_name = $icd_name[0]; - } - } else { - $icd_name = ""; - } - - // 获取医生科室 - $params = array(); - $params['department_custom_id'] = $user_doctor['department_custom_id']; - $hospital_department_custom = HospitalDepartmentCustom::getOne($params); - if (empty($hospital_department_custom)) { - throw new BusinessException("医生科室数据错误"); - } - - $arg = array(); - $arg['terminalCode'] = "ZD-10003"; - $arg['orderNo'] = $order_product['order_product_no']; // 订单编号 - $arg['transactNo'] = $order_product['escrow_trade_no']; // 流水单号 - $arg['payDate'] = $order_product['pay_time']; // 支付时间 - $arg['money'] = $order_product['payment_amount_total']; // 订单金额 - $arg['freight'] = $order_product['logistics_fee']; // 运费(单位:元) - $arg['takeTypeCode'] = 2; // 取货方式 1 自提 2 快递,目前只支持快递,传固定值 2 - $arg['buyerName'] = $order_product['consignee_name'];// 收货人姓名 - $arg['buyerPhone'] = $order_product['consignee_tel'];// 收货人联系方式 - $arg['buyerAddress'] = $order_product['address'];// 收货人地址 - $arg['provinceCode'] = $order_product['province_id']; // 收货地址(省) 编码 - $arg['provinceName'] = $order_product['province']; // 收货地址(省) 名称 - $arg['cityCode'] = $order_product['city_id']; // 收货地址(市) 编码 - $arg['cityName'] = $order_product['city']; // 收货地址(市) 名称 - $arg['districtCode'] = $order_product['county_id']; // 收货地址(区 县)编码 - $arg['districtName'] = $order_product['county']; // 收货地址(区 县)名称 - - $arg['presList'][0]['prescriptionNo'] = $order_prescription['prescription_code']; // 处方编号 - $arg['presList'][0]['prescriptionSubType'] = 1; // 处方类型 0:无类型 1:普 通处方 2:儿科处 方 - $arg['presList'][0]['patientName'] = $order_prescription['patient_name']; // 就诊人姓名 - $arg['presList'][0]['patientPhone'] = $user['mobile']; // 就诊人联系方式 - $arg['presList'][0]['idCard'] = $patient_family['id_number']; // 身份证号 - $arg['presList'][0]['advice'] = $order_prescription['doctor_advice'] ?: ""; // 医嘱 - $arg['presList'][0]['diagnosisName'] = $icd_name ?: ""; // 诊断 - $arg['presList'][0]['thirdDoctorName'] = $user_doctor['user_name']; // 开方医生姓名 - $arg['presList'][0]['thirdDeptName'] = $hospital_department_custom['department_name'] ?: ""; // 开方科室名称 - $arg['presList'][0]['thirdDoctorNameImg'] = addAliyunOssWebsite($user_doctor_info['sign_image']); // 开方医生签名链接 - $arg['presList'][0]['prescriptionTime'] = $order_prescription['doctor_created_time']; // 开方时间 - $arg['presList'][0]['thirdFirstPharmacist'] = $user_pharmacist['user_name']; // 初审药师姓名 - $arg['presList'][0]['thirdFirstPharmacistImg'] = addAliyunOssWebsite($user_pharmacist_info['sign_image']); // 初审药师签名链接 - $arg['presList'][0]['thirdFirstTime'] = $order_prescription['pharmacist_verify_time']; // 初审时间 - $arg['presList'][0]['thirdLastPharmacist'] = $user_pharmacist['user_name']; // 终审药师姓名 - $arg['presList'][0]['thirdLastPharmacistImg'] = addAliyunOssWebsite($user_pharmacist_info['sign_image']); // 终审药师签名 链接 - $arg['presList'][0]['ThirdLastTime'] = $order_prescription['pharmacist_verify_time']; // 终审时间 - $arg['presList'][0]['thirdSignImg'] = addAliyunOssWebsite("/basic/file/hospital_signature.png"); // 处方签章链接 - $arg['presList'][0]['referenceCharge'] = $order_product['amount_total']; // 处方费用(不包含运费) - $arg['presList'][0]['chiefComplaint'] = $order_inquiry_case['disease_desc'] ?: ""; // 主诉 - $arg['presList'][0]['historyPresent'] = $order_inquiry_case['disease_class_name'] ?: ""; // 现病史 - $arg['presList'][0]['pastHistory'] = $order_inquiry_case['family_history'] ?: "无"; // 既往史 - $arg['presList'][0]['physicalExamination'] = "无"; // 体格检查 - $arg['presList'][0]['supplementaryExamination'] = "无"; // 辅助检查 - $arg['presList'][0]['allergicHistory'] = $order_inquiry_case['allergy_history'] ?: "无"; // 过敏史 - - // 药品数据 - foreach ($order_product_item as $key => $item) { - // 获取商品数据 - $params = array(); - $params['product_id'] = $item['product_id']; - $product = Product::getOne($params); - if (empty($product)) { - throw new BusinessException("药品数据错误"); - } - - $arg['presList'][0]['drugList'][$key]['drugCode'] = $product['product_platform_code']; // 药品编码 - $arg['presList'][0]['drugList'][$key]['approvalNumber'] = $product['license_number']; // 批准文号 - $arg['presList'][0]['drugList'][$key]['drugName'] = $product['product_name']; // 药品名称 - $arg['presList'][0]['drugList'][$key]['specifications'] = $product['product_spec']; // 药品规格 - $arg['presList'][0]['drugList'][$key]['price'] = $product['product_price']; // 药品单价 - $arg['presList'][0]['drugList'][$key]['packingCount'] = $item['amount']; // 药品数量 - $arg['presList'][0]['drugList'][$key]['surplusPackingCount'] = 0; // 处方药品剩余使用数量 - $arg['presList'][0]['drugList'][$key]['packingUnit'] = $product['packaging_unit']; // 药品单位 - $arg['presList'][0]['drugList'][$key]['singleDosage'] = 1; // 单次用量 - $arg['presList'][0]['drugList'][$key]['singleDosageUnit'] = "片"; // 单次用量单位 - $arg['presList'][0]['drugList'][$key]['useName'] = $product['single_use']; // 用法名称 - $arg['presList'][0]['drugList'][$key]['frequencyName'] = $product['frequency_use']; // 频次名称 - $arg['presList'][0]['drugList'][$key]['useDays'] = $product['available_days']; // 使用天数 - - $arg['presList'][0]['orderDrugList'][$key]['drugCode'] = $product['product_platform_code']; // 药品编码 - $arg['presList'][0]['orderDrugList'][$key]['approvalNumber'] = $product['license_number']; // 批准文号 - $arg['presList'][0]['orderDrugList'][$key]['drugName'] = $product['product_name']; // 药品名称 - $arg['presList'][0]['orderDrugList'][$key]['specifications'] = $product['product_spec']; // 药品规格 - $arg['presList'][0]['orderDrugList'][$key]['price'] = $product['product_price']; // 药品单价 - $arg['presList'][0]['orderDrugList'][$key]['drugCount'] = $item['amount']; // 药品数量 - $arg['presList'][0]['orderDrugList'][$key]['packingUnit'] = $product['packaging_unit']; // 药品单位 - } - - $Prescription = new Prescription(); - $result = $Prescription->reportPrescription($arg); - if ($result['resultCode'] != "1000"){ - if(!empty($result['resultDesc'])){ - throw new BusinessException("上报处方平台失败:" .$result['resultDesc']); - } - - throw new BusinessException("上报处方平台失败:操作编码:" . $result['resultCode']); - } - - return true; - } - -} \ No newline at end of file diff --git a/config/routes.php b/config/routes.php index 5e5e2fa..fc5717b 100644 --- a/config/routes.php +++ b/config/routes.php @@ -274,6 +274,9 @@ Router::addGroup('/patient', function () { // 获取检测机构合作医生列表 Router::get('/doctor', [DetectionController::class, 'getDetectionDoctorList']); + // 获取患者进行中的订单 + Router::get('/progress-order', [DetectionController::class, 'getDetectionDoctorList']); + // 检测项目 Router::addGroup('/project', function () { // 获取合作公司检测项目列表