From 1c9f5c25ae2e1adbb3e5b7470443ac3a0bfac70b Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Fri, 27 Nov 2020 18:02:23 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E9=85=8D=E9=80=81=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1--=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E5=BD=93=E5=A4=A9=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Exporter/OrderDeliveryDetailSheet.php | 3 +- .../Exporter/OrderDeliveryTotalSheet.php | 3 +- .../v3/OrderDeliveryReportController.php | 41 +++++++++++++------ app/Admin/Renderable/OrderDeliveryById.php | 31 ++++++++++---- .../Repositories/v3/OrderDeliveryReport.php | 19 +++++---- app/Models/ImsCjdcOrderMain.php | 5 +++ config/admin.php | 12 +++++- 7 files changed, 82 insertions(+), 32 deletions(-) diff --git a/app/Admin/Actions/Exporter/OrderDeliveryDetailSheet.php b/app/Admin/Actions/Exporter/OrderDeliveryDetailSheet.php index 487f37f..3847e85 100644 --- a/app/Admin/Actions/Exporter/OrderDeliveryDetailSheet.php +++ b/app/Admin/Actions/Exporter/OrderDeliveryDetailSheet.php @@ -37,6 +37,7 @@ class OrderDeliveryDetailSheet implements FromArray, WithStrictNullComparison, S $data = $this->getData($this->params); $markets = MarketModel::getMarketArray(); $list = []; + $baseFee = config('admin.delivery.base_fee'); foreach ($data as $value){ $global_order_id = $value['global_order_id'] ?? ''; $delivery_money = $value['delivery_money'] ?? 0; @@ -45,7 +46,7 @@ class OrderDeliveryDetailSheet implements FromArray, WithStrictNullComparison, S ' '.$global_order_id, $markets[$value['market_id']] ?? '', date('Y-m_d H:i:s',$value['created_at']), - $delivery_money+3.5 + $delivery_money+$baseFee ]; } return array_merge($titles,$list); diff --git a/app/Admin/Actions/Exporter/OrderDeliveryTotalSheet.php b/app/Admin/Actions/Exporter/OrderDeliveryTotalSheet.php index e06352b..42a8c28 100644 --- a/app/Admin/Actions/Exporter/OrderDeliveryTotalSheet.php +++ b/app/Admin/Actions/Exporter/OrderDeliveryTotalSheet.php @@ -72,8 +72,9 @@ class OrderDeliveryTotalSheet implements FromArray, WithStrictNullComparison, Sh public function getData($option = []) { $params = $option; + $baseFee = config('admin.delivery.base_fee'); $repository = new OrderDeliveryReport(); - $selects = EmployeesModel::TABLE_NAME.'.name,SUM( CASE WHEN delivery_money=0 THEN 3.5 when delivery_money>0 THEN delivery_money+3.5 ELSE 0 END) as total_delivery'; + $selects = EmployeesModel::TABLE_NAME.'.name,SUM( CASE WHEN delivery_money=0 THEN '.$baseFee.' when delivery_money>0 THEN delivery_money+'.$baseFee.' ELSE 0 END) as total_delivery'; $orderGoods = $repository->getDataModel($selects,$params); $list = $orderGoods->groupBy(EmployeesModel::TABLE_NAME.'.name')->get()->toArray(); diff --git a/app/Admin/Controllers/v3/OrderDeliveryReportController.php b/app/Admin/Controllers/v3/OrderDeliveryReportController.php index ba975e1..59725f3 100644 --- a/app/Admin/Controllers/v3/OrderDeliveryReportController.php +++ b/app/Admin/Controllers/v3/OrderDeliveryReportController.php @@ -21,10 +21,15 @@ class OrderDeliveryReportController extends AdminController * 订单的配送统计 */ protected $GoodsActivityReport = null; - public $marketId = 0; - public $newParams = []; - public $marketList = []; - public $storeList = []; + protected $marketId = 0; + protected $newParams = []; + protected $marketList = []; + protected $storeList = []; + public function __construct() + { + $this->newParams['start_time'] = date('Y-m-d',time()); + $this->newParams['end_time'] = date('Y-m-d',time()); + } /** * Make a grid builder. @@ -33,19 +38,19 @@ class OrderDeliveryReportController extends AdminController */ protected function grid() { - $this->marketId = Auth::getMarket(); + $this->marketId = Auth::getMarket(); if($this->marketId){ $this->newParams = ['market_id'=>$this->marketId]; $builder = new OrderDeliveryReport($this->newParams); $this->marketList = MarketModel::getMarketArray([['id','=',$this->marketId]]); }else{ - $builder = new OrderDeliveryReport(); + $builder = new OrderDeliveryReport($this->newParams); $this->marketList = MarketModel::getMarketArray(); } return Grid::make($builder, function (Grid $grid) { $marketList = $this->marketList; - $grid->column('horseman_id','ID'); + $grid->column('horseman_id','配送员ID'); $grid->column('user_id','懒ID'); $grid->column('avatar','微信头像')->display(function(){ $userId = $this->user_id ?? 0; @@ -59,12 +64,18 @@ class OrderDeliveryReportController extends AdminController }); $grid->column('total_number','配送单数') - ->modal(function($modal){ + ->modal(function($modal) { $name = $this->name; $modal->title($name.'的配送明细'); - $startTime = request()->input('start_time') ?? null; - $endTime = request()->input('end_time') ?? null; - $table = OrderDeliveryById::make(['horseman_id'=>$this->horseman_id,'start_time'=>$startTime, 'end_time'=>$endTime]); + $params = [ + 'horseman_id' => $this->horseman_id, + 'market_id' => $this->marketId ? $this->marketId : request()->input('market_id',0), + 'user_id' => request()->input('user_id',0), + 'start_time' => request()->input('start_time', ''), + 'end_time' => request()->input('end_time', ''), + ]; + + $table = OrderDeliveryById::make($params); return $table; })->help('只统计2020年10月01日之后(包括10月01日)的数据'); $grid->column('total_delivery','总配送费'); @@ -121,9 +132,13 @@ class OrderDeliveryReportController extends AdminController 'horseman_id' => request()->input('horseman_id', 0), 'market_id' => $this->marketId ? $this->marketId : request()->input('market_id',0), 'user_id' => request()->input('user_id',0), - 'start_time' => request()->input('start_time',''), - 'end_time' => request()->input('end_time',''), + 'start_time' => request()->input('start_time', ''), + 'end_time' => request()->input('end_time', ''), ]; + if(empty($params['start_time']) && empty($params['end_time'])){ + $params['start_time'] = $this->newParams['start_time']; + $params['end_time'] = $this->newParams['end_time']; + } $name = date('Y-m-d-His',time()); $data = new \App\Admin\Actions\Exporter\OrderDelivery($params); diff --git a/app/Admin/Renderable/OrderDeliveryById.php b/app/Admin/Renderable/OrderDeliveryById.php index 2ed7c14..b2953d0 100644 --- a/app/Admin/Renderable/OrderDeliveryById.php +++ b/app/Admin/Renderable/OrderDeliveryById.php @@ -2,7 +2,6 @@ namespace App\Admin\Renderable; use Dcat\Admin\Grid; -use App\Admin\Common\Type; use Dcat\Admin\Grid\LazyRenderable; use App\Models\ImsCjdcOrderMain as OrderMainModel; use App\Models\v3\Market as MarketModel; @@ -17,7 +16,15 @@ class OrderDeliveryById extends LazyRenderable $horsemanId = $this->horseman_id ?? 0; $startTime = $this->start_time ?? null; $endTime = $this->end_time ?? null; - $model = OrderMainModel::where('type',1)->where('shipping_type',1)->whereIn('state',OrderMainModel::ORDER_STATE_FINISH)->where('created_at','>=',strtotime('2020-10-01 00:00:00'));; + $marketId = $this->market_id ?? 0; + if(empty($startTime) && empty($endTime)){ + $startTime = date('Y-m-d', time()); + $endTime = date('Y-m-d', time()); + } + $model = OrderMainModel::where('type', OrderMainModel::ORDER_TYPE_ONLINE) + ->where('shipping_type', OrderMainModel::ORDER_SHIPPING_TYPE_MARKET) + ->whereIn('state',OrderMainModel::ORDER_STATE_FINISH) + ->where('created_at','>=',strtotime('2020-10-01 00:00:00'));; if($horsemanId > 0){ $model->where('horseman_id',$horsemanId); } @@ -29,7 +36,10 @@ class OrderDeliveryById extends LazyRenderable $endTime = $endTime.' 23:59:59'; $model->where('created_at','<=',strtotime($endTime)); } - return Grid::make($model, function (Grid $grid) { + if($marketId > 0){ + $model->where('market_id',$marketId); + } + return Grid::make($model, function (Grid $grid) use($marketId){ $marketList = MarketModel::getMarketArray(); $grid->column('global_order_id','订单编号'); @@ -45,14 +55,15 @@ class OrderDeliveryById extends LazyRenderable return date('Y-m-d H:i:s',$createdAt); }); // 搜索 - $grid->filter(function (Grid\Filter $filter) use($marketList){ + $grid->filter(function (Grid\Filter $filter) use($marketList, $marketId){ $filter->equal('user_id','下单用户懒ID')->width(3); $filter->equal('global_order_id','订单编号')->width(3); - - $filter->equal('market_id','下单市场')->select($marketList)->width(4); - + if(!$marketId){ + $filter->equal('market_id','下单市场')->select($marketList)->width(4); + } + $filter->whereBetween('created_at',function($q){ $start = $this->input['start'] ?? null; $end = $this->input['end'] ?? null; @@ -77,13 +88,15 @@ class OrderDeliveryById extends LazyRenderable { // 获取外部传递的参数 $horsemanId = $this->payload['horseman_id'] ?? 0; - $startTime = $this->payload['start_time'] ? request()->input('start_time') : null; - $endTime = $this->payload['end_time'] ? request()->input('end_time') : null; + $startTime = $this->payload['start_time'] ?? request()->input('start_time', null); + $endTime = $this->payload['end_time'] ?? request()->input('end_time', null); + $marketId = $this->payload['market_id'] ?? 0; return [ 'horseman_id' => $horsemanId, 'start_time' => $startTime, 'end_time' => $endTime, + 'market_id' => $marketId, ]; } } \ No newline at end of file diff --git a/app/Admin/Repositories/v3/OrderDeliveryReport.php b/app/Admin/Repositories/v3/OrderDeliveryReport.php index cd4f6e8..443da6e 100644 --- a/app/Admin/Repositories/v3/OrderDeliveryReport.php +++ b/app/Admin/Repositories/v3/OrderDeliveryReport.php @@ -34,10 +34,14 @@ class OrderDeliveryReport extends EloquentRepository $where = []; if(!empty($this->params) && isset($this->params['market_id']) && !empty($this->params['market_id'])){ - $where = ['market_id'=>$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'; + if(!($model->filter()->input('start_time') || $model->filter()->input('end_time'))){ + $where['start_time'] = $this->params['start_time']; + $where['end_time'] = $this->params['end_time']; + } + $baseFee = config('admin.delivery.base_fee'); + $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 '.$baseFee.' when delivery_money>0 THEN delivery_money+'.$baseFee.' 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') @@ -57,12 +61,13 @@ class OrderDeliveryReport extends EloquentRepository $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) + ->where(Model::$tableName.'.type', Model::ORDER_TYPE_ONLINE) + ->where('shipping_type', Model::ORDER_SHIPPING_TYPE_MARKET) ->whereIn('state',Model::ORDER_STATE_FINISH) ->where(Model::$tableName.'.created_at','>=',strtotime('2020-10-01 00:00:00')); @@ -80,10 +85,10 @@ class OrderDeliveryReport extends EloquentRepository $model->where(Model::$tableName.'.created_at','>=',strtotime($startTime)); } if($endTime){ - $endTime = $endTime.' 23:59:59'; + $endTime = $endTime.' 23:59:59'; $model->where(Model::$tableName.'.created_at','<=',strtotime($endTime)); } - + return $model; } diff --git a/app/Models/ImsCjdcOrderMain.php b/app/Models/ImsCjdcOrderMain.php index 332ba5a..065afd1 100644 --- a/app/Models/ImsCjdcOrderMain.php +++ b/app/Models/ImsCjdcOrderMain.php @@ -16,6 +16,11 @@ class ImsCjdcOrderMain extends Model // 线下订单,当面付 const ORDER_TYPE_OFFLINE = 4; + // 配送方式:1服务站配送,2达达配送,3用户自提 shipping_type + const ORDER_SHIPPING_TYPE_MARKET = 1; + const ORDER_SHIPPING_TYPE_DADA = 2; + const ORDER_SHIPPING_TYPE_USER_SELF = 3; + // 订单状态 // 待付款 const ORDER_STATE_UNPAY = 1; diff --git a/config/admin.php b/config/admin.php index d653267..8f689d1 100644 --- a/config/admin.php +++ b/config/admin.php @@ -374,11 +374,21 @@ return [ /* |-------------------------------------------------------------------------- - | Settings for password. + | Settings for store user. |-------------------------------------------------------------------------- | */ 'setting' => [ 'authkey' => '5705e957' ], + + /* + |-------------------------------------------------------------------------- + | delivery for order. + |-------------------------------------------------------------------------- + | 订单配送 + */ + 'delivery' => [ + 'base_fee' => 3.5 // 配送基础费用 + ], ];