|
|
<?php
namespace App\Admin\Repositories\v3;
use App\Models\ImsCjdcOrderMain as Model;use Dcat\Admin\Grid\Model as GridModel;use Dcat\Admin\Repositories\EloquentRepository;use Illuminate\Support\Facades\DB;use App\Models\v3\LanzuEmployees as EmployeesModel;class OrderDeliveryReport extends EloquentRepository{ public $params = []; /** * Model. * * @var string */ protected $eloquentClass = Model::class;
public function __construct($params = []) { $this->params = $params; }
/** * 获取统计列表数据 */ public function get(GridModel $model) { // 获取当前页数
$currentPage = $model->getCurrentPage(); // 获取每页显示行数
$perPage = $model->getPerPage();
$where = []; if(!empty($this->params) && isset($this->params['market_id']) && !empty($this->params['market_id'])){ $where = ['market_id'=>$this->params['market_id']]; } $selects = 'count('.Model::$tableName.'.id) AS total_number,horseman_id,'.EmployeesModel::TABLE_NAME.'.user_id,'.EmployeesModel::TABLE_NAME.'.name,'.EmployeesModel::TABLE_NAME.'.market_id,SUM( CASE WHEN delivery_money=0 THEN 3.5 when delivery_money>0 THEN delivery_money+3.5 ELSE 0 END) as total_delivery'; $delivery = $this->getDataModel($selects,$where); $list = $delivery->orderBy('total_number','desc')->groupBy('horseman_id',EmployeesModel::TABLE_NAME.'.market_id',EmployeesModel::TABLE_NAME.'.name',EmployeesModel::TABLE_NAME.'.user_id')->paginate($perPage); $list = $list->toArray();
return $model->makePaginator( $list['total'] ?? 0,$list['data'] ?? [] ); }
public function getDataModel($selects,$params = []) { // 获取筛选参数
$userId = $params['user_id'] ?? request()->input('user_id',0); $name = $params['name'] ?? request()->input('name', ''); $marketId = $params['market_id'] ?? request()->input('market_id',0);
$startTime = $params['start_time'] ?? request()->input('start_time',''); $endTime = $params['end_time'] ?? request()->input('end_time',''); // 外卖类型 type = 1
$model = Model::select(DB::raw($selects)) // ->with('employees:id,user_id,name,market_id')
->join(EmployeesModel::TABLE_NAME,EmployeesModel::TABLE_NAME.'.id','=',Model::$tableName.'.horseman_id','left') ->where(Model::$tableName.'.type',1) ->where('shipping_type',1) ->whereIn('state',[4,5,10,11]);
if($userId){ $model->where(EmployeesModel::TABLE_NAME.'.user_id',$userId); } if($name){ $model->where(EmployeesModel::TABLE_NAME.'.name','like',"%$name%"); } if($marketId){ $model->where(EmployeesModel::TABLE_NAME.'.market_id',$marketId); } if($startTime){ $startTime = $startTime.' 00:00:00'; $model->where(Model::$tableName.'.created_at','>=',strtotime($startTime)); } if($endTime){ $endTime = $endTime.' 23:59:59'; $model->where(Model::$tableName.'.created_at','<=',strtotime($endTime)); } return $model; }
}
|