diff --git a/app/Model/OrderInquiry.php b/app/Model/OrderInquiry.php index 9c5555a..ef0a297 100644 --- a/app/Model/OrderInquiry.php +++ b/app/Model/OrderInquiry.php @@ -231,13 +231,13 @@ class OrderInquiry extends Model } /** - * 获取医生某一时间段,某种状态的订单金额 + * 获取医生接诊的订单金额 * @param array $params * @param array $reception_time 接诊时间区间 * @param array $inquiry_status_params inquiry_status字段搜索条件 * @return int|mixed|string */ - public static function getOrderInquiryBetweenTimeAmountTotalSum(array $params, array $reception_time, array $inquiry_status_params): mixed + public static function getDoctorAmountTotal(array $params, array $reception_time, array $inquiry_status_params): mixed { return self::where($params) ->whereIn('inquiry_status', $inquiry_status_params) @@ -246,6 +246,23 @@ class OrderInquiry extends Model ->sum("amount_total"); } + /** + * 获取医生接诊的订单金额-坐班医生 + * @param array $params + * @param array $reception_time 接诊时间区间 + * @param array $inquiry_status_params inquiry_status字段搜索条件 + * @return int|mixed|string + */ + public static function getCooperationDoctorAmountTotal(array $params, array $reception_time, array $inquiry_status_params): mixed + { + return self::where($params) + ->whereNotIn('inquiry_type',[2,4]) + ->whereIn('inquiry_status', $inquiry_status_params) + ->whereBetween('reception_time', $reception_time) + ->orderBy('reception_time') + ->sum("amount_total"); + } + /** * 获取医生某种状态的订单金额 * @param array $params diff --git a/app/Services/DoctorAccountService.php b/app/Services/DoctorAccountService.php index 080386d..f361b91 100644 --- a/app/Services/DoctorAccountService.php +++ b/app/Services/DoctorAccountService.php @@ -32,12 +32,29 @@ class DoctorAccountService extends BaseService $date = date('Y-m-d',time()); - // 今日接诊收入 - $inquiryService = new InquiryService(); - $doctor_today_inquiry_total = $inquiryService->getDoctorDayAmountTotal($user_info['client_user_id'],$date); + // 获取医生数据 + $params = array(); + $params['doctor_id'] = $user_info['client_user_id']; + $user_doctor = UserDoctor::getOne($params); + if (empty($user_doctor)){ + return fail(); + } - // 今日已完成收入 - $doctor_day_completed_amount_total = $inquiryService->getDoctorDayCompletedAmountTotal($user_info['client_user_id'],$date); + $inquiryService = new InquiryService(); + + if ($user_doctor['is_platform_deep_cooperation'] == 0){ + // 获取医生当日接诊的订单金额 + $doctor_today_inquiry_total = $inquiryService->getDoctorDayAmountTotal($user_info['client_user_id'],$date); + + // 获取医生当日已完成未结束的订单金额 + $doctor_day_completed_amount_total = $inquiryService->getDoctorDayCompletedAmountTotal($user_info['client_user_id'],$date); + }else{ + // 获取医生当日接诊的订单金额-坐班医生 + $doctor_today_inquiry_total = $inquiryService->getCooperationDoctorDayAmountTotal($user_info['client_user_id'],$date); + + // 获取医生当日已完成未结束的订单金额-坐班医生 + $doctor_day_completed_amount_total = $inquiryService->getCooperationDoctorCompletedAmountTotal($user_info['client_user_id'],$date); + } // 获取医生账户余额 $balance_account = $this->getDoctorBalanceAccount($user_info['client_user_id']); diff --git a/app/Services/InquiryService.php b/app/Services/InquiryService.php index 1e1a39d..197487e 100644 --- a/app/Services/InquiryService.php +++ b/app/Services/InquiryService.php @@ -1639,7 +1639,39 @@ class InquiryService extends BaseService $inquiry_status_params = [4,5]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) - $amount_total_sum = OrderInquiry::getOrderInquiryBetweenTimeAmountTotalSum($params, $reception_time, $inquiry_status_params); + $amount_total_sum = OrderInquiry::getDoctorAmountTotal($params, $reception_time, $inquiry_status_params); + + return $amount_total_sum ?: 0; + } + + /** + * 获取医生当日接诊的订单金额-坐班医生 + * 状态:已接诊 + * 排除快速-购药 + * @param string $doctor_id + * @param string $date + * @return float + */ + public function getCooperationDoctorDayAmountTotal(string $doctor_id, string $date): float + { + // 获取当天开始时间 + $start_date = date('Y-m-d 00:00:00', strtotime($date)); + + // 获取当天结束时间 + $end_date = date('Y-m-d 23:59:59', strtotime($date)); + + // 获取医生当日接诊订单金额 + $params = array(); + $params['doctor_id'] = $doctor_id; + $params['inquiry_refund_status'] = 0; // 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭) + $params['inquiry_pay_status'] = 2; // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款) + $params['is_withdrawal'] = 0; // 是否提现(0:否 1:是 2:提现中) + + $reception_time = [$start_date, $end_date]; + + $inquiry_status_params = [4,5]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) + + $amount_total_sum = OrderInquiry::getCooperationDoctorAmountTotal($params, $reception_time, $inquiry_status_params); return $amount_total_sum ?: 0; } @@ -1670,7 +1702,39 @@ class InquiryService extends BaseService $inquiry_status_params = [5]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) - $amount_total_sum = OrderInquiry::getOrderInquiryBetweenTimeAmountTotalSum($params, $reception_time, $inquiry_status_params); + $amount_total_sum = OrderInquiry::getDoctorAmountTotal($params, $reception_time, $inquiry_status_params); + + return $amount_total_sum ?: 0; + } + + /** + * 获取医生当日已完成未结束的订单金额-坐班医生 + * 状态:已完成 + * 排除快速-购药 + * @param string $doctor_id + * @param string $date + * @return float + */ + public function getCooperationDoctorCompletedAmountTotal(string $doctor_id, string $date): float + { + // 获取当天开始时间 + $start_date = date('Y-m-d 00:00:00', strtotime($date)); + + // 获取当天结束时间 + $end_date = date('Y-m-d 23:59:59', strtotime($date)); + + // 获取医生当日接诊订单金额 + $params = array(); + $params['doctor_id'] = $doctor_id; + $params['inquiry_refund_status'] = 0; // 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭) + $params['inquiry_pay_status'] = 2; // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款) + $params['is_withdrawal'] = 0; // 是否提现(0:否 1:是 2:提现中) + + $reception_time = [$start_date, $end_date]; + + $inquiry_status_params = [5]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) + + $amount_total_sum = OrderInquiry::getCooperationDoctorAmountTotal($params, $reception_time, $inquiry_status_params); return $amount_total_sum ?: 0; }