diff --git a/app/Model/OrderInquiry.php b/app/Model/OrderInquiry.php index 6de8916..1c885b0 100644 --- a/app/Model/OrderInquiry.php +++ b/app/Model/OrderInquiry.php @@ -147,8 +147,6 @@ class OrderInquiry extends Model return self::where($params)->orderBy('created_at', 'desc')->first($fields); } -// public static function - /** * 获取医生某一时间段接诊订单分页数据 * 已结束 @@ -209,18 +207,71 @@ class OrderInquiry extends Model return $data; } + /** + * 获取医生可提现金额-坐班医生 + * @param array $params + * @param array $inquiry_status_params + * @param array $inquiry_type_not_params + * @param array $fields + * @return int|mixed|string + */ + public static function getCooperationDoctorCanWithdrawalInquiryOrder(array $params, array $inquiry_status_params,array $inquiry_type_not_params = [],array $fields = ["*"]): mixed + { + $data = self::where($params) + ->when($inquiry_type_not_params, function ($query, $inquiry_type_not_params) { + $query->whereNotIn('inquiry_type', $inquiry_type_not_params); + }) + ->whereIn('inquiry_status', $inquiry_status_params) + ->get($fields); + + return $data; + } + /** * 获取医生接诊订单分页数据 * 已结束 * @param array $params + * @param array $inquiry_status_params * @param array $fields * @param int|null $page * @param int|null $per_page * @return int|mixed|string */ - public static function getDoctorOrderInquiryPage(array $params, array $fields = ["*"], int $page = null, ?int $per_page = 10): mixed + public static function getDoctorOrderInquiryPage(array $params, array $inquiry_status_params, array $fields = ["*"], int $page = null, ?int $per_page = 10): mixed { $raw = self::where($params) + ->whereIn('inquiry_status', $inquiry_status_params) + ->orderBy('finish_time', 'desc') + ->paginate($per_page, $fields, "page", $page); + + $data = array(); + $data['current_page'] = $raw->currentPage();// 当前页码 + $data['total'] = $raw->total();//数据总数 + $data['data'] = $raw->items();//数据 + $data['per_page'] = $raw->perPage();//每页个数 + $data['last_page'] = $raw->lastPage();//最后一页 + + return $data; + } + + /** + * 获取医生接诊订单分页数据-坐班医生 + * 已结束 + * @param array $params + * @param array $inquiry_status_params + * @param array $inquiry_type_not_params + * @param array $fields + * @param int|null $page + * @param int|null $per_page + * @return int|mixed|string + */ + public static function getCooperationDoctorOrderInquiryPage(array $params, array $inquiry_status_params,array $inquiry_type_not_params = [], array $fields = ["*"], int $page = null, ?int $per_page = 10): mixed + { + $raw = self::where($params) + ->whereIn('inquiry_status', $inquiry_status_params) + ->when($inquiry_type_not_params, function ($query, $inquiry_type_not_params) { + $query->whereNotIn('inquiry_type', $inquiry_type_not_params); + }) ->orderBy('finish_time', 'desc') ->paginate($per_page, $fields, "page", $page); @@ -257,10 +308,12 @@ class OrderInquiry extends Model * @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 + public static function getCooperationDoctorAmountTotal(array $params, array $reception_time, array $inquiry_status_params,array $inquiry_type_not_params = []): mixed { return self::where($params) - ->whereNotIn('inquiry_type',[2,4]) + ->when($inquiry_type_not_params, function ($query, $inquiry_type_not_params) { + $query->whereNotIn('inquiry_type', $inquiry_type_not_params); + }) ->whereIn('inquiry_status', $inquiry_status_params) ->whereBetween('reception_time', $reception_time) ->orderBy('reception_time') diff --git a/app/Services/DoctorAccountService.php b/app/Services/DoctorAccountService.php index 60fe9d2..ded0b2e 100644 --- a/app/Services/DoctorAccountService.php +++ b/app/Services/DoctorAccountService.php @@ -266,7 +266,11 @@ class DoctorAccountService extends BaseService $order_inquiry_id_array = $in_params; }else{ $InquiryService = new InquiryService(); - $order_inquiry = $InquiryService->getDoctorCanWithdrawalInquiryOrder($user_info['client_user_id']); + if ($user_doctor['is_platform_deep_cooperation'] == 0){ + $order_inquiry = $InquiryService->getDoctorCanWithdrawalInquiryOrder($user_info['client_user_id']); + }else{ + $order_inquiry = $InquiryService->getCooperationDoctorCanWithdrawalInquiryOrder($user_info['client_user_id']); + } if (!empty($order_inquiry)){ foreach ($order_inquiry as $value){ @@ -307,6 +311,14 @@ class DoctorAccountService extends BaseService $page = $this->request->input('page', 1); $per_page = $this->request->input('per_page', 10); + // 获取医生信息 + $params = array(); + $params['doctor_id'] = $user_info['client_user_id']; + $user_doctor = UserDoctor::getOne($params); + if (empty($user_doctor)) { + return fail(); + } + // 获取医生当日接诊订单金额 $fields = [ 'order_inquiry_id', @@ -326,10 +338,18 @@ class DoctorAccountService extends BaseService $params = array(); $params['doctor_id'] = $user_info['client_user_id']; - $params['inquiry_status'] = 6; // inquiry_status:问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) $params['inquiry_refund_status'] = 0; // inquiry_refund_status:问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭) - $order_inquiry = OrderInquiry:: getDoctorOrderInquiryPage($params, $fields,$page,$per_page); + $inquiry_status_params = [6]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) + + + if ($user_doctor['is_platform_deep_cooperation'] == 0){ + $order_inquiry = OrderInquiry:: getDoctorOrderInquiryPage($params,$inquiry_status_params, $fields,$page,$per_page); + }else{ + $inquiry_type_not_params = [2,4]; + $order_inquiry = OrderInquiry:: getCooperationDoctorOrderInquiryPage($params,$inquiry_status_params,$inquiry_type_not_params, $fields,$page,$per_page); + } + if (!empty($order_inquiry['data'])) { foreach ($order_inquiry['data'] as &$item) { $item['expected_amount_total'] = floor($item['amount_total'] * 0.75 * 100) / 100; diff --git a/app/Services/InquiryService.php b/app/Services/InquiryService.php index 197487e..afed408 100644 --- a/app/Services/InquiryService.php +++ b/app/Services/InquiryService.php @@ -1671,7 +1671,9 @@ class InquiryService extends BaseService $inquiry_status_params = [4,5]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) - $amount_total_sum = OrderInquiry::getCooperationDoctorAmountTotal($params, $reception_time, $inquiry_status_params); + $inquiry_type_not_params = [2,4]; + + $amount_total_sum = OrderInquiry::getCooperationDoctorAmountTotal($params, $reception_time, $inquiry_status_params,$inquiry_type_not_params); return $amount_total_sum ?: 0; } @@ -1734,7 +1736,9 @@ class InquiryService extends BaseService $inquiry_status_params = [5]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) - $amount_total_sum = OrderInquiry::getCooperationDoctorAmountTotal($params, $reception_time, $inquiry_status_params); + $inquiry_type_not_params = [2,4]; + + $amount_total_sum = OrderInquiry::getCooperationDoctorAmountTotal($params, $reception_time, $inquiry_status_params,$inquiry_type_not_params); return $amount_total_sum ?: 0; } @@ -1763,6 +1767,33 @@ class InquiryService extends BaseService return $order_inquiry->toArray(); } + /** + * 获取医生可提现金额-坐班医生 + * @param string $doctor_id + * @return array + */ + public function getCooperationDoctorCanWithdrawalInquiryOrder(string $doctor_id): array + { + // 获取医生当日接诊订单金额 + $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['statistics_status'] = 1; // 订单统计状态(0:未统计 1:已统计 2:统计失败) + $params['is_withdrawal'] = 0; // 是否提现(0:否 1:是 2:提现中) + + $inquiry_status_params = [6]; // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) + + $inquiry_type_not_params = [2,4]; + + $order_inquiry = OrderInquiry::getCooperationDoctorCanWithdrawalInquiryOrder($params,$inquiry_status_params,$inquiry_type_not_params); + if (empty($order_inquiry)) { + return []; + } + + return $order_inquiry->toArray(); + } + /** * 获取患者某一状态下的问诊订单数量 * @param string $patient_id 患者id