|
|
@@ -99,7 +99,7 @@ class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterfa
|
|
|
$fields[] = Db::raw('ROUND(6371* 1000 * ACOS(COS(RADIANS('.$this->lat.')) * COS(RADIANS(mw.lat)) * COS(RADIANS(mw.lon) - RADIANS('.$this->lon.')) + SIN(RADIANS('.$this->lat.')) * SIN(RADIANS(mw.lat))), 2) AS user_distance');
|
|
|
$orders = 'user_distance';
|
|
|
}
|
|
|
- return MasterWorker::alias('mw')
|
|
|
+ $list = MasterWorker::alias('mw')
|
|
|
->join('master_worker_register mwr', 'mwr.worker_id = mw.id')
|
|
|
->where($this->searchWhere)
|
|
|
->where($queryWhere)
|
|
|
@@ -107,6 +107,16 @@ class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterfa
|
|
|
->limit($this->limitOffset, $this->limitLength)
|
|
|
->order($orders)
|
|
|
->select()->toArray();
|
|
|
+ $workCount = array_column(ServiceWork::where('master_worker_id','>',0)
|
|
|
+ ->whereNotIn('work_status', [7,8])
|
|
|
+ ->whereIn('master_worker_id', array_column($list, 'id'))
|
|
|
+ ->field(['master_worker_id',Db::raw('COUNT(id) as work_total')])
|
|
|
+ ->group('master_worker_id')
|
|
|
+ ->select()->toArray(),'work_total','master_worker_id');
|
|
|
+ foreach ($list as &$item) {
|
|
|
+ $item['work_total'] = $workCount[$item['id']]??0;
|
|
|
+ }
|
|
|
+ return $list;
|
|
|
}
|
|
|
|
|
|
|