hasOne(UserDoctor::class, 'doctor_id','doctor_id'); } /** * 关联问诊病例表 */ public function OrderInquiryCase(): HasOne { return $this->hasOne(OrderInquiryCase::class, 'order_inquiry_id','order_inquiry_id'); } /** * 获取问诊订单-单条 * @param array $params * @param array $fields * @return object|null */ public static function getOne(array $params, array $fields = ['*']): object|null { return self::where($params)->first($fields); } /** * 新增问诊订单-批量 * @param array $data 新增数据 * @return \Hyperf\Database\Model\Model|OrderInquiry */ public static function addOrderInquiry(array $data): \Hyperf\Database\Model\Model|OrderInquiry { return self::create($data); } /** * 获取信息-多条 * @param array $params * @param array $fields * @return object|null */ public static function getList(array $params, array $fields = ['*']): object|null { return self::where($params)->get($fields); } /** * 获取数量 * @param array $params * @return int */ public static function getCount(array $params): int { return self::where($params)->count(); } /** * 获取单条,排序 * @param array $params * @param array $fields * @return object|null */ public static function getOrderOne(array $params, array $fields = ['*']): object|null { return self::where($params)->orderBy('created_at','desc')->first($fields); } // public static function /** * 获取医生某一时间段接诊订单分页数据 * 已结束 * @param array $params * @param array $reception_time 接诊时间区间 ['2023-01-02','2023-01-03'] * @param array $fields * @param int|null $page * @param int|null $per_page * @return int|mixed|string */ public static function getDoctorDateOrderInquiryPage(array $params, array $reception_time, array $fields = ["*"], int $page = null, ?int $per_page = 10): mixed { $raw = self::where($params) ->whereBetween('finish_time',$reception_time) ->orderBy('finish_time') ->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 $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 { $raw = self::where($params) ->orderBy('finish_time') ->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 $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 { return self::where($params) ->whereIn('inquiry_status',$inquiry_status_params) ->whereBetween('reception_time',$reception_time) ->orderBy('reception_time') ->sum("amount_total"); } /** * 获取医生某种状态的订单金额 * @param array $params * @param array $inquiry_status_params inquiry_status字段搜索条件 * @return int|mixed|string */ public static function getOrderInquiryAmountTotalSum(array $params, array $inquiry_status_params): mixed { return self::where($params) ->whereIn('inquiry_status',$inquiry_status_params) ->orderBy('reception_time') ->sum("amount_total"); } /** * 获取某种状态的所有订单 * @param array $params * @param array $inquiry_status_params * @param array $fields * @return Collection|array */ public static function getInquiryStatusWithDoctorList(array $params, array $inquiry_status_params, array $fields = ["*"]): Collection|array { return self::with([ 'UserDoctor' => function ($query){ $query->orderBy('is_platform_deep_cooperation', 'desc'); } ]) ->where($params) ->whereIn('inquiry_status',$inquiry_status_params) ->get($fields); } /** * 获取某种状态的所有订单 * @param array $params * @param array $inquiry_status_params * @param array $not_in_params * @param array $fields * @return Collection|array */ public static function getInquiryStatusWithDoctorNotInList(array $params, array $inquiry_status_params,array $not_in_params, array $fields = ["*"]): Collection|array { return self::with([ 'UserDoctor' => function ($query){ $query->orderBy('is_platform_deep_cooperation', 'desc'); } ]) ->where($params) ->whereIn('inquiry_status',$inquiry_status_params) ->whereNotIn('doctor_id',$not_in_params) ->get($fields); } /** * 获取某种状态的订单 * @param array $params * @param array $inquiry_status_params * @param array $fields * @return object|null */ public static function getInquiryStatusOne(array $params,array $inquiry_status_params,array $fields = ["*"]): object|null { return self::where($params) ->whereIn('inquiry_status',$inquiry_status_params) ->first($fields); } /** * 修改 * @param array $params * @param array $data * @return int */ public static function edit(array $params = [], array $data = []): int { return self::where($params)->update($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 getPatientOrderInquiryPage(array $params,array $inquiry_status_params ,array $fields = ["*"], int $page = null, ?int $per_page = 10): mixed { $raw = self::with([ 'OrderInquiryCase:inquiry_case_id,order_inquiry_id,disease_desc', ]) ->where($params) ->when($inquiry_status_params, function ($query, $inquiry_status_params) { $query->whereIn('inquiry_status',$inquiry_status_params); }) ->orderBy('created_at','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 $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); } /** * 获取某种状态的订单总数 * @param array $params * @param array $inquiry_status_params * @return int */ public static function getInquiryStatusCount(array $params, array $inquiry_status_params): int { return self::where($params)->whereIn("inquiry_status",$inquiry_status_params)->count(); } }