PackageStatisticsService.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. namespace App\Services;
  3. use App\OrderPackage;
  4. use App\Services\common\QueryService;
  5. use Illuminate\Database\Eloquent\Builder;
  6. use Illuminate\Support\Facades\Auth;
  7. use Illuminate\Support\Facades\DB;
  8. Class PackageStatisticsService
  9. {
  10. /**
  11. * @param array $params
  12. * @return Builder
  13. */
  14. private function conditionQuery(array $params){
  15. $ownerIds = Auth::user()->getPermittingOwnerIdsAttribute();
  16. $query = DB::table('order_packages')->select(DB::raw('COUNT(*) AS count'))
  17. ->whereIn('owner_id',$ownerIds)
  18. ->whereNotNull('logistic_id')
  19. ->leftJoin('orders','order_packages.order_id','orders.id')
  20. ->selectRaw('owner_id,logistic_id');
  21. $columnQueryRules=[
  22. 'date_start' => ['alias' => 'created_at','startDate' => " 00:00:00"],
  23. 'date_end' => ['alias' => 'created_at','endDate' => " 23:59:59"],
  24. 'logistic_id' => ['multi' => ','],
  25. 'owner_id' => ['multi' => ','],
  26. ];
  27. $query = $query->groupBy('owner_id','logistic_id');
  28. return app(QueryService::class)->query($params,$query,$columnQueryRules);
  29. }
  30. public function get(array $params){
  31. return $this->conditionQuery($params)->get();
  32. }
  33. }