合并dev
This commit is contained in:
@@ -8,6 +8,7 @@ namespace App\Model;
|
||||
use Hyperf\Database\Model\Collection;
|
||||
use Hyperf\Database\Model\Relations\HasOne;
|
||||
use Hyperf\Database\Query\Builder;
|
||||
use Hyperf\DbConnection\Db;
|
||||
use Hyperf\Snowflake\Concern\Snowflake;
|
||||
|
||||
/**
|
||||
@@ -434,4 +435,102 @@ class OrderInquiry extends Model
|
||||
->limit($limit)
|
||||
->get($fields);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取问诊结束会话列表-分页
|
||||
* @param array $params
|
||||
* @param array $fields
|
||||
* @param int|null $page
|
||||
* @param int|null $per_page
|
||||
* @return array
|
||||
*/
|
||||
public static function getInquiryEndPage(array $params, int $page = null, ?int $per_page = 10): array
|
||||
{
|
||||
// 参考sql
|
||||
// SELECT t1.* FROM test t1 INNER JOIN (
|
||||
// SELECT user_id, MAX(create_at) AS max_create_at FROM test GROUP BY user_id
|
||||
// ) t2 ON t1.user_id = t2.user_id AND t1.create_at = t2.max_create_at;
|
||||
$subQuery = self::select(["user_id","family_id",Db::raw('max(reception_time) as at')])
|
||||
->whereNotIn('user_id', function ($query) use ($params){
|
||||
$query->select('user_id')
|
||||
->from('order_inquiry')
|
||||
->whereIn('inquiry_status', [1,2,3,4])
|
||||
->where($params)
|
||||
->groupBy(["user_id"]);
|
||||
})
|
||||
->where($params)
|
||||
->groupBy(["user_id","family_id"]);
|
||||
|
||||
|
||||
$query = self:: joinSub($subQuery, 'sub_query', function($join) {
|
||||
$join->on('order_inquiry.user_id', '=', 'sub_query.user_id')
|
||||
->on('order_inquiry.family_id', '=', 'sub_query.family_id')
|
||||
->on('order_inquiry.reception_time', '=', 'sub_query.at');
|
||||
})
|
||||
->whereIn('inquiry_status', [5,6])
|
||||
->where($params)
|
||||
->orderBy("sub_query.at",'desc');
|
||||
|
||||
|
||||
$fields = [
|
||||
'order_inquiry.order_inquiry_id',
|
||||
'order_inquiry.user_id',
|
||||
'order_inquiry.patient_id',
|
||||
'order_inquiry.doctor_id',
|
||||
'order_inquiry.family_id',
|
||||
'order_inquiry.inquiry_type',
|
||||
'order_inquiry.inquiry_mode',
|
||||
'order_inquiry.inquiry_status',
|
||||
'order_inquiry.inquiry_no',
|
||||
'order_inquiry.reception_time',
|
||||
'order_inquiry.complete_time',
|
||||
'order_inquiry.finish_time',
|
||||
'order_inquiry.cancel_time',
|
||||
'order_inquiry.cancel_reason',
|
||||
'order_inquiry.cancel_remarks',
|
||||
'order_inquiry.patient_name',
|
||||
'order_inquiry.patient_sex',
|
||||
'order_inquiry.patient_age',
|
||||
'order_inquiry.created_at',
|
||||
];
|
||||
|
||||
$result = $query->paginate($per_page, $fields, "page", $page);
|
||||
|
||||
$data = array();
|
||||
$data['current_page'] = $result->currentPage();// 当前页码
|
||||
$data['total'] = $result->total();//数据总数
|
||||
$data['data'] = $result->items();//数据
|
||||
$data['per_page'] = $result->perPage();//每页个数
|
||||
$data['last_page'] = $result->lastPage();//最后一页
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取某种状态的最后一条订单
|
||||
* @param array $params
|
||||
* @param array $inquiry_status_params
|
||||
* @param array $fields
|
||||
* @return object|null
|
||||
*/
|
||||
public static function getInquiryStatusLastOne(array $params, array $inquiry_status_params,array $fields = ["*"]): object|null
|
||||
{
|
||||
return self::where($params)
|
||||
->whereIn("inquiry_status", $inquiry_status_params)
|
||||
->latest()
|
||||
->first($fields);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取最后一条订单
|
||||
* @param array $params
|
||||
* @param array $fields
|
||||
* @return object|null
|
||||
*/
|
||||
public static function getInquiryLastOne(array $params,array $fields = ["*"]): object|null
|
||||
{
|
||||
return self::where($params)
|
||||
->latest()
|
||||
->first($fields);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user