链街Dcat后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

90 lines
3.3 KiB

<?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->groupBy('horseman_id',EmployeesModel::TABLE_NAME.'.market_id',EmployeesModel::TABLE_NAME.'.name',EmployeesModel::TABLE_NAME.'.user_id')->paginate($perPage);
// ->orderBy('total_number','desc')
$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',Model::ORDER_STATE_FINISH)
->where(Model::$tableName.'.created_at','>=',strtotime('2020-10-01 00:00:00'));
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;
}
}