|
|
@@ -0,0 +1,52 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace App\Services;
|
|
|
+
|
|
|
+use App\OrderIssue;
|
|
|
+use App\OrderIssueProcessLog;
|
|
|
+use App\Services\common\QueryService;
|
|
|
+use App\User;
|
|
|
+use Illuminate\Support\Facades\Auth;
|
|
|
+
|
|
|
+Class OrderIssueWorkLoadService
|
|
|
+{
|
|
|
+ public function getQuery(array $queryParam){
|
|
|
+ $user = Auth::user();
|
|
|
+ $owner_ids = $user ? $user->getPermittingOwnerIdsAttribute() : [];
|
|
|
+ $query = OrderIssue::with(['log.user'=>function($query) use (&$queryParam){
|
|
|
+ if($queryParam['create_user_id'] ?? false){
|
|
|
+ $query->where('type','创建')->where('user_id',$queryParam['create_user_id']);
|
|
|
+ }
|
|
|
+ if($queryParam['end_user_id'] ?? false){
|
|
|
+ $query->where('type','完结')->where('user_id',$queryParam['end_user_id']);
|
|
|
+ }
|
|
|
+ },'order'])->whereHas('order',function($query) use (&$queryParam,$owner_ids) {
|
|
|
+ if($queryParam['client_no'] ?? false){
|
|
|
+ $query->whereHas('client_no',$queryParam['client_no']);
|
|
|
+ }
|
|
|
+ if($queryParam['owner_id'] ?? false && in_array($queryParam['owner_id'],$owner_ids)){
|
|
|
+ $query->whereHas('owner_id',$queryParam['owner_id']);
|
|
|
+ }else{
|
|
|
+ $query->whereIn('owner_id',$owner_ids);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ unset($queryParam['create_user_id'],$queryParam['end_user_id'],$queryParam['client_no'],$queryParam['owner_id']);
|
|
|
+ $columnQueryRules = [
|
|
|
+ 'create_start' => ['alias' => 'created_at', 'startDate' => ' 00:00:00'],
|
|
|
+ 'create_end' => ['alias' => 'created_at', 'endDate' => ' 23:59:59'],
|
|
|
+ 'order_issue_id'=>['alias'=>'id']
|
|
|
+ ];
|
|
|
+ $query = app(QueryService::class)->query($queryParam, $query, $columnQueryRules);
|
|
|
+ return $query;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function paginate(array $params){
|
|
|
+ return $this->getQuery($params)->paginate($params['paginate'] ?? 50);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getUsers(){
|
|
|
+ $arr = OrderIssueProcessLog::all()->groupBy('user_id');
|
|
|
+ $user_ids = array_keys($arr->toArray());
|
|
|
+ return User::whereIn('id',$user_ids)->get();
|
|
|
+ }
|
|
|
+}
|