| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- <?php
- namespace App\Services;
- use App\OrderPackage;
- use App\Services\common\QueryService;
- use Illuminate\Database\Eloquent\Builder;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\DB;
- Class PackageStatisticsService
- {
- /**
- * @param array $params
- * @return Builder
- */
- private function conditionQuery(array $params){
- $ownerIds = Auth::user()->getPermittingOwnerIdsAttribute();
- $query = DB::table('order_packages')->select(DB::raw('COUNT(*) AS count'))
- ->whereIn('owner_id',$ownerIds)
- ->whereNotNull('logistic_id')
- ->leftJoin('orders','order_packages.order_id','orders.id')
- ->selectRaw('owner_id,logistic_id');
- $columnQueryRules=[
- 'created_at_start' => ['alias' => 'created_at','startDate' => ":00"],
- 'created_at_end' => ['alias' => 'created_at','endDate' => ":59"],
- 'logistic_id' => ['multi' => ','],
- 'owner_id' => ['multi' => ','],
- ];
- $query = $query->groupBy('owner_id','logistic_id');
- return app(QueryService::class)->query($params,$query,$columnQueryRules);
- }
- public function get(array $params){
- return $this->conditionQuery($params)->get();
- }
- public function getPackageStatistic(array $params)
- {
- $query = $this->conditionQuery($params);
- return DB::table(DB::raw("({$query->sql()}) AS p"))->selectRaw('p.*')
- ->leftJoin('owners','p.owner_id','owners.id')
- ->selectRaw('owners.name owner_name')
- ->leftJoin('logistics','p.logistic_id','logistics.id')
- ->selectRaw('logistics.name logistic_name')
- ->get();
- }
- }
|