From e0848b42cfca03c9fc3dffacf453018cf2a3b210 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Tue, 16 Apr 2024 09:39:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=94=E5=9B=9E=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Services/OrderServicePackageService.php | 87 ++++++++++----------- 1 file changed, 42 insertions(+), 45 deletions(-) diff --git a/app/Services/OrderServicePackageService.php b/app/Services/OrderServicePackageService.php index 9a30932..a30ccf2 100644 --- a/app/Services/OrderServicePackageService.php +++ b/app/Services/OrderServicePackageService.php @@ -169,30 +169,11 @@ class OrderServicePackageService extends BaseService } } - // 处理问诊次数 + // 处理当月问诊次数 // 3.5号购买,每月2次问诊次数。今天5.3,属于第几个月,这个月的开始时间和结束时间 if ($order_service_package_detail['monthly_frequency'] != 0) { - $month_inquiry_count = 0; // 当前所属月问诊次数 - - // 获取当月问诊次数 - // 获取开启服务日期和今日的相差天数 - $diff = abs(time() - strtotime($order_service_package['start_time'])); - $diff_days = ceil($diff / (60 * 60 * 24)); // 转换为天数 - - // 获取当前月次 - $month_time = ceil($diff_days / 30); - - $days = (int)$month_time * 30; - - // 获取开始日期 - $end_date = date('Y-m-d 23:59:59', strtotime($order_service_package['start_time'] . " +$days days")); - $start_date = date('Y-m-d 00:00:00', strtotime($end_date . "-30 days")); - - $InquiryService = new InquiryService(); - $order_inquiry = $InquiryService->getPatientServiceInquiry($service_type, $user_info['client_user_id'], $doctor_id, $start_date, $end_date); - if (!empty($order_inquiry)) { - $month_inquiry_count = count($order_inquiry); - } + // 获取服务包当月问诊次数 + $month_inquiry_count = $this->getCurrentMonthInquiryCount($order_service_package['start_time'],$service_type,$user_info['client_user_id'], $doctor_id); if ($month_inquiry_count >= $order_service_package_detail['monthly_frequency']) { // 超出当月问诊次数 @@ -713,27 +694,8 @@ class OrderServicePackageService extends BaseService // 检测问诊次数 // 3.5号购买,每月2次问诊次数。今天5.3,属于第几个月,这个月的开始时间和结束时间 if ($order_service_package_detail['monthly_frequency'] != 0) { - $month_inquiry_count = 0; // 当前所属月问诊次数 - - // 获取当月问诊次数 - // 获取开启服务日期和今日的相差天数 - $diff = abs(time() - strtotime($order_service_package['start_time'])); - $diff_days = ceil($diff / (60 * 60 * 24)); // 转换为天数 - - // 获取当前月次 - $month_time = ceil($diff_days / 30); - - $days = (int)$month_time * 30; - - // 获取开始日期 - $end_date = date('Y-m-d 23:59:59', strtotime($order_service_package['start_time'] . " +$days days")); - $start_date = date('Y-m-d 00:00:00', strtotime($end_date . "-30 days")); - - $InquiryService = new InquiryService(); - $order_inquiry = $InquiryService->getPatientServiceInquiry($order_service_package['order_service_type'], $user_info['client_user_id'], $order_service_package['doctor_id'], $start_date, $end_date); - if (!empty($order_inquiry)) { - $month_inquiry_count = count($order_inquiry); - } + // 获取服务包当月问诊次数 + $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']) { return fail(HttpEnumCode::HTTP_ERROR, "超出服务包所包含的当月问诊次数"); @@ -1040,8 +1002,8 @@ class OrderServicePackageService extends BaseService } $result = array(); - $result['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; - $result['order_no'] = $order['order_no']; + $result['order_inquiry_id'] = (string)$order_inquiry['order_inquiry_id']; + $result['order_no'] = (string)$order['order_no']; return success($result); } @@ -1124,4 +1086,39 @@ class OrderServicePackageService extends BaseService return $result; } + + /** + * 获取服务包当月问诊次数 + * @param string $start_time + * @param string|int $service_type + * @param string|int $user_id + * @param string|int $doctor_id + * @return int + */ + public function getCurrentMonthInquiryCount(string $start_time,string|int $service_type,string|int $user_id,string|int $doctor_id): int + { + $month_inquiry_count = 0; // 当前所属月问诊次数 + + // 获取当月问诊次数 + // 获取开启服务日期和今日的相差天数 + $diff = abs(time() - strtotime($start_time)); + $diff_days = ceil($diff / (60 * 60 * 24)); // 转换为天数 + + // 获取当前月次 + $month_time = ceil($diff_days / 30); + + $days = (int)$month_time * 30; + + // 获取开始日期 + $end_date = date('Y-m-d 23:59:59', strtotime($start_time . " +$days days")); + $start_date = date('Y-m-d 00:00:00', strtotime($end_date . "-30 days")); + + $InquiryService = new InquiryService(); + $order_inquiry = $InquiryService->getPatientServiceInquiry($service_type, $user_id, $doctor_id, $start_date, $end_date); + if (!empty($order_inquiry)) { + $month_inquiry_count = count($order_inquiry); + } + + return $month_inquiry_count; + } } \ No newline at end of file