OrderIssueWorkLoadService.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace App\Services;
  3. use App\OrderIssue;
  4. use App\OrderIssueProcessLog;
  5. use App\Services\common\QueryService;
  6. use App\User;
  7. use Illuminate\Support\Facades\Auth;
  8. Class OrderIssueWorkLoadService
  9. {
  10. public function getQuery(array $queryParam){
  11. $user = Auth::user();
  12. $owner_ids = $user ? $user->getPermittingOwnerIdsAttribute() : [];
  13. $query = OrderIssue::with(['log.user'=>function($query) use (&$queryParam){
  14. if($queryParam['create_user_id'] ?? false){
  15. $query->where('type','创建')->where('user_id',$queryParam['create_user_id']);
  16. }
  17. if($queryParam['end_user_id'] ?? false){
  18. $query->where('type','完结')->where('user_id',$queryParam['end_user_id']);
  19. }
  20. },'order'])->whereHas('order',function($query) use (&$queryParam,$owner_ids) {
  21. if($queryParam['client_no'] ?? false){
  22. $query->whereHas('client_no',$queryParam['client_no']);
  23. }
  24. if($queryParam['owner_id'] ?? false && in_array($queryParam['owner_id'],$owner_ids)){
  25. $query->whereHas('owner_id',$queryParam['owner_id']);
  26. }else{
  27. $query->whereIn('owner_id',$owner_ids);
  28. }
  29. });
  30. unset($queryParam['create_user_id'],$queryParam['end_user_id'],$queryParam['client_no'],$queryParam['owner_id']);
  31. $columnQueryRules = [
  32. 'create_start' => ['alias' => 'created_at', 'startDate' => ' 00:00:00'],
  33. 'create_end' => ['alias' => 'created_at', 'endDate' => ' 23:59:59'],
  34. 'order_issue_id'=>['alias'=>'id']
  35. ];
  36. $query = app(QueryService::class)->query($queryParam, $query, $columnQueryRules);
  37. return $query;
  38. }
  39. public function paginate(array $params){
  40. return $this->getQuery($params)->paginate($params['paginate'] ?? 50);
  41. }
  42. public function getUsers(){
  43. $arr = OrderIssueProcessLog::all()->groupBy('user_id');
  44. $user_ids = array_keys($arr->toArray());
  45. return User::whereIn('id',$user_ids)->get();
  46. }
  47. }