From 5ae167a97061975bfe62aade54ce1206162f5c75 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Tue, 20 Oct 2020 11:46:01 +0800 Subject: [PATCH 01/16] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81-?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/GoodsActivityController.php | 1 + .../v3/GoodsActivityReportController.php | 98 +++++++++++++++++++ app/Admin/Repositories/v3/GoodsReport.php | 77 +++++++++++++++ app/Admin/routes.php | 2 + .../lang/zh-CN/goods-activity-report.php | 19 ++++ resources/lang/zh-CN/goods-activity.php | 1 + 6 files changed, 198 insertions(+) create mode 100644 app/Admin/Controllers/v3/GoodsActivityReportController.php create mode 100644 app/Admin/Repositories/v3/GoodsReport.php create mode 100644 resources/lang/zh-CN/goods-activity-report.php diff --git a/app/Admin/Controllers/v3/GoodsActivityController.php b/app/Admin/Controllers/v3/GoodsActivityController.php index 8508aa2..2a4e77b 100644 --- a/app/Admin/Controllers/v3/GoodsActivityController.php +++ b/app/Admin/Controllers/v3/GoodsActivityController.php @@ -75,6 +75,7 @@ class GoodsActivityController extends AdminController // return empty($item) ? '' : $item->title; // }); $grid->column('expire_time_text'); + $grid->column('sales'); $grid->column('on_sale')->switch(); $grid->model()->orderby('id','desc'); diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php new file mode 100644 index 0000000..6114d58 --- /dev/null +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -0,0 +1,98 @@ +combine('默认统计今天的数据', ['name', 'value'])->responsive()->help('如果未选择时间,则默认只统计当天的所有市场的数据,特殊:现存用户默认统计所有的数据'); + + $grid->column('id')->sortable(); + $grid->column('cover_img')->image('',50); + $grid->column('name'); + + $grid->column('market_id')->display(function($marketId){ + $item = MarketModel::getMarketInfo($marketId,'name'); + return empty($item) ? '' : $item->name; + }); + $grid->column('store_id')->display(function($storeId){ + $item = StoreModel::getStoreInfo($storeId,'name'); + return empty($item) ? '' : $item->name; + })->width('12%'); + $grid->column('price'); + $grid->column('original_price'); + $grid->column('total','销量')->as(function(){ + return 0; + }); + + $grid->filter(function (Filter $filter) use($marketList,$storeList) { + // 更改为 panel 布局 + $filter->panel(); + + $filter->equal('name')->select($marketList); + $filter->equal('market_id','市场')->select($marketList); + $filter->equal('store_id','店铺')->select($storeList); + $filter->equal('start_time','开始时间')->date(); + $filter->equal('end_time','结束时间')->date(); + }); + + $grid->tools([new OrderReportToday(), new OrderReportYesterday(), new OrderReportLastWeek(), new OrderReportLastMonth()]); + + // 每页1条 + $grid->paginate(10); + $grid->disableCreateButton(); + $grid->disableBatchActions(); + $grid->disableBatchDelete(); + + $grid->toolsWithOutline(); + + $grid->disableDeleteButton(); + $grid->disableEditButton(); + $grid->disableQuickEditButton(); + $grid->disableViewButton(); + $grid->disableActions(); + + $grid->disableRowSelector(); + }); + } + + /** + * 获取一个时间段内的日期 + */ + public function periodDateArr($start_time,$end_time){ + $start_time = strtotime($start_time); + $end_time = strtotime($end_time); + $i=0; + $arr = []; + while ($start_time<=$end_time){ + $arr[date('Y-m-d',$start_time)]=date('Y年m月d日',$start_time); + $start_time = strtotime('+1 day',$start_time); + $i++; + } + + return array_reverse($arr); + } +} diff --git a/app/Admin/Repositories/v3/GoodsReport.php b/app/Admin/Repositories/v3/GoodsReport.php new file mode 100644 index 0000000..26c9f02 --- /dev/null +++ b/app/Admin/Repositories/v3/GoodsReport.php @@ -0,0 +1,77 @@ +input('market_id'); + $time = date('Y-m-d',time()); + $startTime = request()->input('start_time'); + $endTime = request()->input('end_time'); + + $orderMainOnline = Model::select(DB::raw('COUNT(id) AS total_num')); + + if($marketId){ + $orderMainOnline->where('market_id',$marketId); + } + if($startTime){ + $date = $startTime; + $startTime = $startTime.' 00:00:00'; + + $orderMainOnline->where([['created_at','>=',strtotime($startTime)]]); + + }else{ + $date = '2020-06-01'; + } + if($endTime){ + $date = $date.' 至 '.$endTime; + $endTime = $endTime.' 23:59:59'; + + $orderMainOnline->where([['created_at','<=',strtotime($endTime)]]); + + }else{ + $date .= ' 至 '.$time; + } + if(empty($startTime) && empty($endTime)){ + + $date = $time; + $todayStart = $time.' 00:00:00'; + $todayEnd = $time.' 23:59:59'; + + $orderMainOnline->where([['created_at','>=',strtotime($todayStart)]]); + } + + $orderReportOnline = $orderMainOnline->get()->toArray(); + + $query = [ + 'order_total_num_online' => !empty($orderReportOnline[0]['total_num'])?$orderReportOnline[0]['total_num']:0, + 'order_total_money_online' => !empty($orderReportOnline[0]['total_money'])?$orderReportOnline[0]['total_money']:0, + + 'user_total' => !empty($userTotal[0]['total'])?$userTotal[0]['total']:0, + ]; + + $list = []; + + return $model->makePaginator( + count($list),$list + ); + } +} diff --git a/app/Admin/routes.php b/app/Admin/routes.php index 02491e3..d8e1001 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -87,5 +87,7 @@ Route::group([ // 订单统计 $router->resource('/order_report', 'v3\OrderReportController'); + // 活动商品统计 + $router->resource('/goods_activity_report', 'v3\GoodsActivityReportController'); }); diff --git a/resources/lang/zh-CN/goods-activity-report.php b/resources/lang/zh-CN/goods-activity-report.php new file mode 100644 index 0000000..18d8b87 --- /dev/null +++ b/resources/lang/zh-CN/goods-activity-report.php @@ -0,0 +1,19 @@ + [ + 'GoodsActivityReport' => '活动商品统计报表', + 'goods_activity_report' => '活动商品统计报表', + ], + 'fields' => [ + 'id' => 'ID', + 'name' => '统计名称', + 'cover_img' => '封面图', + 'market_id' => '市场', + 'store_id' => '店铺', + 'price' => '售价', + 'original_price' => '原价', + 'total' => '统计数量', + ], + 'options' => [ + ], +]; diff --git a/resources/lang/zh-CN/goods-activity.php b/resources/lang/zh-CN/goods-activity.php index ae43209..15f5330 100644 --- a/resources/lang/zh-CN/goods-activity.php +++ b/resources/lang/zh-CN/goods-activity.php @@ -41,6 +41,7 @@ return [ 'video_banners' => '轮播视频', 'spec_key' =>'规格名称', 'spec_value' => '规格参数', + 'sales' => '销量' ], 'options' => [ ], From 42cbfb7b86af6495c357ecd1e454d515bda88d82 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Tue, 20 Oct 2020 15:33:58 +0800 Subject: [PATCH 02/16] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81--?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Repositories/v3/GoodsReport.php | 14 +++++++------- app/Models/ImsCjdcOrder.php | 6 +++++- app/Models/LanzuOrderGoods.php | 7 +++++++ 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/app/Admin/Repositories/v3/GoodsReport.php b/app/Admin/Repositories/v3/GoodsReport.php index 26c9f02..22b87fc 100644 --- a/app/Admin/Repositories/v3/GoodsReport.php +++ b/app/Admin/Repositories/v3/GoodsReport.php @@ -2,7 +2,7 @@ namespace App\Admin\Repositories\v3; -use App\Models\v3\GoodsActivity as Model; +use App\Models\LanzuOrderGoods as Model; use Dcat\Admin\Grid\Model as GridModel; use Dcat\Admin\Repositories\EloquentRepository; use Illuminate\Support\Facades\DB; @@ -27,16 +27,16 @@ class GoodsReport extends EloquentRepository $startTime = request()->input('start_time'); $endTime = request()->input('end_time'); - $orderMainOnline = Model::select(DB::raw('COUNT(id) AS total_num')); + $orderGoodsActivity = Model::select(DB::raw('COUNT(goods.id) as total,goods_id,goods.name')); if($marketId){ - $orderMainOnline->where('market_id',$marketId); + $orderGoodsActivity->where('market_id',$marketId); } if($startTime){ $date = $startTime; $startTime = $startTime.' 00:00:00'; - $orderMainOnline->where([['created_at','>=',strtotime($startTime)]]); + $orderGoodsActivity->where([['created_at','>=',strtotime($startTime)]]); }else{ $date = '2020-06-01'; @@ -45,7 +45,7 @@ class GoodsReport extends EloquentRepository $date = $date.' 至 '.$endTime; $endTime = $endTime.' 23:59:59'; - $orderMainOnline->where([['created_at','<=',strtotime($endTime)]]); + $orderGoodsActivity->where([['created_at','<=',strtotime($endTime)]]); }else{ $date .= ' 至 '.$time; @@ -56,10 +56,10 @@ class GoodsReport extends EloquentRepository $todayStart = $time.' 00:00:00'; $todayEnd = $time.' 23:59:59'; - $orderMainOnline->where([['created_at','>=',strtotime($todayStart)]]); + $orderGoodsActivity->where([['created_at','>=',strtotime($todayStart)]]); } - $orderReportOnline = $orderMainOnline->get()->toArray(); + $orderReportOnline = $orderGoodsActivity->get()->toArray(); $query = [ 'order_total_num_online' => !empty($orderReportOnline[0]['total_num'])?$orderReportOnline[0]['total_num']:0, diff --git a/app/Models/ImsCjdcOrder.php b/app/Models/ImsCjdcOrder.php index 6f28e83..9888fea 100644 --- a/app/Models/ImsCjdcOrder.php +++ b/app/Models/ImsCjdcOrder.php @@ -3,8 +3,8 @@ namespace App\Models; use Dcat\Admin\Traits\HasDateTimeFormatter; - use Illuminate\Database\Eloquent\Model; +use App\Admin\Repositories\ImsCjdcOrderMain as OrderMainModel; class ImsCjdcOrder extends Model { @@ -46,5 +46,9 @@ class ImsCjdcOrder extends Model return ['orders'=>$orders,'show_refund'=>$show_refund]; } + public function orderMain() + { + return $this->belongsTo(new OrderMainModel,'order_main_id','global_order_id'); + } } diff --git a/app/Models/LanzuOrderGoods.php b/app/Models/LanzuOrderGoods.php index d2d2d4c..8e262fc 100644 --- a/app/Models/LanzuOrderGoods.php +++ b/app/Models/LanzuOrderGoods.php @@ -5,6 +5,7 @@ namespace App\Models; use Dcat\Admin\Traits\HasDateTimeFormatter; use Illuminate\Database\Eloquent\Model; +use App\Models\ImsCjdcOrder as OrderModel; class LanzuOrderGoods extends Model { @@ -17,4 +18,10 @@ class LanzuOrderGoods extends Model { return $this->belongsTo('\App\Models\LanzuGoods','goods_id','id'); } + + public function order() + { + return $this->belongsTo(new OrderModel,'order_id','id'); + } + } From d8d569ce3b3840813f5dad23563cb6a5035eb7a9 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Tue, 20 Oct 2020 17:53:39 +0800 Subject: [PATCH 03/16] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81--?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=80=BB=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/GoodsActivityReportController.php | 16 +++--- app/Admin/Repositories/v3/GoodsReport.php | 57 +++++++++++-------- .../lang/zh-CN/goods-activity-report.php | 2 +- 3 files changed, 42 insertions(+), 33 deletions(-) diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php index 6114d58..6428a07 100644 --- a/app/Admin/Controllers/v3/GoodsActivityReportController.php +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -6,7 +6,7 @@ use App\Admin\Actions\Grid\v3\OrderReportLastMonth; use App\Admin\Actions\Grid\v3\OrderReportLastWeek; use App\Admin\Actions\Grid\v3\OrderReportToday; use App\Admin\Actions\Grid\v3\OrderReportYesterday; -use App\Admin\Repositories\v3\GoodsActivity; +use App\Admin\Repositories\v3\GoodsReport; use Dcat\Admin\Grid; use Dcat\Admin\Controllers\AdminController; use App\Models\v3\Market as MarketModel; @@ -23,16 +23,16 @@ class GoodsActivityReportController extends AdminController */ protected function grid() { - return Grid::make(new GoodsActivity(), function (Grid $grid) { + return Grid::make(new GoodsReport(), function (Grid $grid) { $marketList = MarketModel::getMarketArray(); $storeList = StoreModel::getStoreArray(); // $grid->combine('默认统计今天的数据', ['name', 'value'])->responsive()->help('如果未选择时间,则默认只统计当天的所有市场的数据,特殊:现存用户默认统计所有的数据'); - $grid->column('id')->sortable(); + $grid->column('goods_id')->sortable(); $grid->column('cover_img')->image('',50); - $grid->column('name'); + $grid->column('name','商品名称'); $grid->column('market_id')->display(function($marketId){ $item = MarketModel::getMarketInfo($marketId,'name'); @@ -42,8 +42,8 @@ class GoodsActivityReportController extends AdminController $item = StoreModel::getStoreInfo($storeId,'name'); return empty($item) ? '' : $item->name; })->width('12%'); - $grid->column('price'); - $grid->column('original_price'); + // $grid->column('price'); + // $grid->column('original_price'); $grid->column('total','销量')->as(function(){ return 0; }); @@ -52,14 +52,14 @@ class GoodsActivityReportController extends AdminController // 更改为 panel 布局 $filter->panel(); - $filter->equal('name')->select($marketList); + $filter->equal('name','商品名称'); $filter->equal('market_id','市场')->select($marketList); $filter->equal('store_id','店铺')->select($storeList); $filter->equal('start_time','开始时间')->date(); $filter->equal('end_time','结束时间')->date(); }); - $grid->tools([new OrderReportToday(), new OrderReportYesterday(), new OrderReportLastWeek(), new OrderReportLastMonth()]); + // $grid->tools([new OrderReportToday(), new OrderReportYesterday(), new OrderReportLastWeek(), new OrderReportLastMonth()]); // 每页1条 $grid->paginate(10); diff --git a/app/Admin/Repositories/v3/GoodsReport.php b/app/Admin/Repositories/v3/GoodsReport.php index 22b87fc..6c97b52 100644 --- a/app/Admin/Repositories/v3/GoodsReport.php +++ b/app/Admin/Repositories/v3/GoodsReport.php @@ -22,22 +22,40 @@ class GoodsReport extends EloquentRepository */ public function get(GridModel $model) { + // 获取当前页数 + $currentPage = $model->getCurrentPage(); + // 获取每页显示行数 + $perPage = $model->getPerPage(); + // 获取筛选参数 + $name = request()->input('name', ''); $marketId = request()->input('market_id'); + $storeId = request()->input('store_id'); $time = date('Y-m-d',time()); $startTime = request()->input('start_time'); $endTime = request()->input('end_time'); - $orderGoodsActivity = Model::select(DB::raw('COUNT(goods.id) as total,goods_id,goods.name')); + $orderGoodsActivity = Model::select(DB::raw('COUNT(lanzu_order_goods.id) as total,lanzu_order_goods.goods_id,lanzu_order_goods.name,lanzu_order_goods.cover_img,lanzu_order_main.market_id,lanzu_order.store_id')) + ->join('lanzu_order','lanzu_order_goods.order_id','=','lanzu_order.id') + ->join('lanzu_order_main','lanzu_order.order_main_id','=','lanzu_order_main.global_order_id') + ->where('lanzu_order_goods.activity_type',2) + ->where('lanzu_order_goods.status',1) + ->whereIn('lanzu_order_main.state',[4,5,10,11]) + ; + if($name){ + $orderGoodsActivity->where('lanzu_order_goods.name','like',"%$name%"); + } if($marketId){ $orderGoodsActivity->where('market_id',$marketId); } + if($storeId){ + $orderGoodsActivity->where('store_id',$storeId); + } if($startTime){ $date = $startTime; $startTime = $startTime.' 00:00:00'; - $orderGoodsActivity->where([['created_at','>=',strtotime($startTime)]]); - + $orderGoodsActivity->where([['lanzu_order_goods.created_at','>=',strtotime($startTime)]]); }else{ $date = '2020-06-01'; } @@ -45,33 +63,24 @@ class GoodsReport extends EloquentRepository $date = $date.' 至 '.$endTime; $endTime = $endTime.' 23:59:59'; - $orderGoodsActivity->where([['created_at','<=',strtotime($endTime)]]); - + $orderGoodsActivity->where([['lanzu_order_goods.created_at','<=',strtotime($endTime)]]); }else{ $date .= ' 至 '.$time; } - if(empty($startTime) && empty($endTime)){ - - $date = $time; - $todayStart = $time.' 00:00:00'; - $todayEnd = $time.' 23:59:59'; - - $orderGoodsActivity->where([['created_at','>=',strtotime($todayStart)]]); - } + // if(empty($startTime) && empty($endTime)){ + // $date = $time; + // $todayStart = $time.' 00:00:00'; + // $todayEnd = $time.' 23:59:59'; + // $orderGoodsActivity->where([['lanzu_order_goods.created_at','>=',strtotime($todayStart)]]); + // $orderGoodsActivity->where([['lanzu_order_goods.created_at','<=',strtotime($todayEnd)]]); + // } - $orderReportOnline = $orderGoodsActivity->get()->toArray(); - - $query = [ - 'order_total_num_online' => !empty($orderReportOnline[0]['total_num'])?$orderReportOnline[0]['total_num']:0, - 'order_total_money_online' => !empty($orderReportOnline[0]['total_money'])?$orderReportOnline[0]['total_money']:0, - - 'user_total' => !empty($userTotal[0]['total'])?$userTotal[0]['total']:0, - ]; + $list = $orderGoodsActivity->groupBy('goods_id','lanzu_order_goods.name','cover_img','market_id','store_id')->paginate($perPage); + $list = $list->toArray(); - $list = []; - return $model->makePaginator( - count($list),$list + $list['total'] ?? 0,$list['data'] ?? [] ); + } } diff --git a/resources/lang/zh-CN/goods-activity-report.php b/resources/lang/zh-CN/goods-activity-report.php index 18d8b87..39ef5b4 100644 --- a/resources/lang/zh-CN/goods-activity-report.php +++ b/resources/lang/zh-CN/goods-activity-report.php @@ -5,7 +5,7 @@ return [ 'goods_activity_report' => '活动商品统计报表', ], 'fields' => [ - 'id' => 'ID', + 'goods_id' => 'ID', 'name' => '统计名称', 'cover_img' => '封面图', 'market_id' => '市场', From dd6dd1e0308de72bd721b5156a18594b520d6f8d Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Wed, 21 Oct 2020 15:13:22 +0800 Subject: [PATCH 04/16] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1-=E8=AE=A1=E5=88=92=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/GoodsActivityReportController.php | 45 +++-- ...oodsReport.php => GoodsActivityReport.php} | 11 +- .../Charts/OrderGoodsActivityColumnChart.php | 186 ++++++++++++++++++ app/Admin/routes.php | 2 +- 4 files changed, 219 insertions(+), 25 deletions(-) rename app/Admin/Repositories/v3/{GoodsReport.php => GoodsActivityReport.php} (82%) create mode 100644 app/Admin/Widgets/Charts/OrderGoodsActivityColumnChart.php diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php index 6428a07..6439235 100644 --- a/app/Admin/Controllers/v3/GoodsActivityReportController.php +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -6,16 +6,27 @@ use App\Admin\Actions\Grid\v3\OrderReportLastMonth; use App\Admin\Actions\Grid\v3\OrderReportLastWeek; use App\Admin\Actions\Grid\v3\OrderReportToday; use App\Admin\Actions\Grid\v3\OrderReportYesterday; -use App\Admin\Repositories\v3\GoodsReport; + +use App\Admin\Repositories\v3\GoodsActivityReport; +use App\Admin\Widgets\Charts\OrderGoodsActivityColumnChart; use Dcat\Admin\Grid; use Dcat\Admin\Controllers\AdminController; use App\Models\v3\Market as MarketModel; use App\Models\v3\Store as StoreModel; use Dcat\Admin\Grid\Filter; +use Dcat\Admin\Layout\Content; +use Dcat\Admin\Layout\Row; class GoodsActivityReportController extends AdminController { - // public static $searchTime = []; + public $data = []; + public $repositories = null; + public function __construct() + { + $this->option = $this->id = 7; + $this->repositories = new GoodsActivityReport(); + $this->data = $this->repositories->data; + } /** * Make a grid builder. * @@ -23,7 +34,7 @@ class GoodsActivityReportController extends AdminController */ protected function grid() { - return Grid::make(new GoodsReport(), function (Grid $grid) { + return Grid::make($this->repositories, function (Grid $grid) { $marketList = MarketModel::getMarketArray(); $storeList = StoreModel::getStoreArray(); @@ -44,9 +55,7 @@ class GoodsActivityReportController extends AdminController })->width('12%'); // $grid->column('price'); // $grid->column('original_price'); - $grid->column('total','销量')->as(function(){ - return 0; - }); + $grid->column('total','销量'); $grid->filter(function (Filter $filter) use($marketList,$storeList) { // 更改为 panel 布局 @@ -80,19 +89,17 @@ class GoodsActivityReportController extends AdminController } /** - * 获取一个时间段内的日期 + * 页面 */ - public function periodDateArr($start_time,$end_time){ - $start_time = strtotime($start_time); - $end_time = strtotime($end_time); - $i=0; - $arr = []; - while ($start_time<=$end_time){ - $arr[date('Y-m-d',$start_time)]=date('Y年m月d日',$start_time); - $start_time = strtotime('+1 day',$start_time); - $i++; - } - - return array_reverse($arr); + public function index(Content $content) + { + return $content->title('活动商品统计') + ->body(function(Row $row){ + $row->column(12,$this->grid()); + }) + ->body(function(Row $row){ + $list = $this->data;dd($list); + $row->column(12,new OrderGoodsActivityColumnChart($list)); + }); } } diff --git a/app/Admin/Repositories/v3/GoodsReport.php b/app/Admin/Repositories/v3/GoodsActivityReport.php similarity index 82% rename from app/Admin/Repositories/v3/GoodsReport.php rename to app/Admin/Repositories/v3/GoodsActivityReport.php index 6c97b52..36c93e5 100644 --- a/app/Admin/Repositories/v3/GoodsReport.php +++ b/app/Admin/Repositories/v3/GoodsActivityReport.php @@ -6,10 +6,11 @@ use App\Models\LanzuOrderGoods as Model; use Dcat\Admin\Grid\Model as GridModel; use Dcat\Admin\Repositories\EloquentRepository; use Illuminate\Support\Facades\DB; +use App\Admin\Controllers\v3\GoodsActivityController; - -class GoodsReport extends EloquentRepository +class GoodsActivityReport extends EloquentRepository { + public $data = []; /** * Model. * @@ -34,7 +35,7 @@ class GoodsReport extends EloquentRepository $startTime = request()->input('start_time'); $endTime = request()->input('end_time'); - $orderGoodsActivity = Model::select(DB::raw('COUNT(lanzu_order_goods.id) as total,lanzu_order_goods.goods_id,lanzu_order_goods.name,lanzu_order_goods.cover_img,lanzu_order_main.market_id,lanzu_order.store_id')) + $orderGoodsActivity = Model::select(DB::raw('SUM(lanzu_order_goods.number) as total,lanzu_order_goods.goods_id,lanzu_order_goods.name,lanzu_order_goods.cover_img,lanzu_order_main.market_id,lanzu_order.store_id')) ->join('lanzu_order','lanzu_order_goods.order_id','=','lanzu_order.id') ->join('lanzu_order_main','lanzu_order.order_main_id','=','lanzu_order_main.global_order_id') ->where('lanzu_order_goods.activity_type',2) @@ -74,9 +75,9 @@ class GoodsReport extends EloquentRepository // $orderGoodsActivity->where([['lanzu_order_goods.created_at','>=',strtotime($todayStart)]]); // $orderGoodsActivity->where([['lanzu_order_goods.created_at','<=',strtotime($todayEnd)]]); // } - - $list = $orderGoodsActivity->groupBy('goods_id','lanzu_order_goods.name','cover_img','market_id','store_id')->paginate($perPage); + $list = $orderGoodsActivity->orderBy('total','desc')->groupBy('goods_id','lanzu_order_goods.name','cover_img','market_id','store_id')->paginate($perPage); $list = $list->toArray(); + $this->data = $list['data'] ?? []; return $model->makePaginator( $list['total'] ?? 0,$list['data'] ?? [] diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityColumnChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityColumnChart.php new file mode 100644 index 0000000..d4f02ae --- /dev/null +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityColumnChart.php @@ -0,0 +1,186 @@ +option = $this->id = 7; + $this->data = $data; + parent::__construct($containerSelector, $options); + + $this->setUpOptions(); + } + + /** + * 初始化图表配置 + */ + protected function setUpOptions() + { + $color = Admin::color(); + + $this->options([ + 'chart' => [ + 'type' => 'bar', + 'height'=> 350, + ], + 'colors' => [ + '#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B', '#2b908f', '#f9a3a4', '#90ee7e', '#f48024', '#69d2e7' + ,'#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B', '#2b908f', '#f9a3a4', '#90ee7e', '#f48024', '#69d2e7' + ], + 'plotOptions'=> [ + 'bar'=> [ + 'distributed' =>false, // 柱状图颜色 + 'horizontal' => false, // 竖直 + 'columnWidth' => '50%', // 柱状宽 + 'dataLabels' => [ + 'position' => 'bottom' + ] + ] + ], + 'dataLabels' => [ + 'enabled'=> true, + ], + 'xaxis' => [ + 'categories' => $this->categories, + ], + 'yaxis' => [ + 'axisBorder' => [ + 'show' => true, + 'color' => $color->primary() + ], + 'labels' => [ + 'show' => true, + 'style' => [ + 'colors' => $color->primary() + ] + ], + 'title' => [ + 'text' => "销量", + 'align' => 'center', + 'style' => [ + 'color' => $color->primary() + ] + ] + ] + ]); + $number = 10; + // $this->chartOption( + // 'dataLabels.formatter', + // // 这个值最后段代码会作为JS代码执行 + // JavaScript::make("function () { return {$number}; }") + // ); + } + + /** + * 处理请求 + * 如果你的图表类中包含此方法,则可以通过此方法处理前端通过ajax提交的获取图表数据的请求 + * + * @param Request $request + * @return mixed|void + */ + public function handle(Request $request) + { + + switch ((int) $request->get('option')) { + case 30: + // 你的数据查询逻辑 + $data = [ + [ + 'name' => '活动商品', + 'data' => [54, 45, 41, 64, 22, 46, 52, 10, 9, 11, 54, 45, 41, 64, 22, 46, 52, 10, 9, 11] + ] + ]; + break; + case 28: + // 你的数据查询逻辑 + $data = [ + [ + 'name' => '活动商品', + 'data' => [44, 55, 41, 64, 22, 56, 52, 12, 52, 12, 44, 55, 41, 64, 22, 56, 52, 12, 52, 12] + ] + ]; + break; + case 7: + default: + // 你的数据查询逻辑 + $data = [ + [ + 'name' => '活动商品', + 'data' => [54, 45, 41, 64, 22, 46, 52, 10, 9, 11] + ] + ]; + break; + } + + $this->withData($data); + } + /** + * 处理图表数据 + */ + protected function buildData() + { + // 执行你的数据查询逻辑 + $data = [ + [ + 'name' => '活动商品', + 'data' => [44, 55, 41, 64, 22, 56, 52, 12, 52, 12] + ] + ]; + $categories = $this->categories; + + $this->withData($data); + $this->withCategories($categories); + } + + /** + * 这里返回需要异步传递到 handler 方法的参数 + * + * @return array + */ + public function parameters(): array + { + return [ + 'id' => $this->id, + 'option' => $this->option, + ]; + } + + /** + * 设置图表数据 + * + * @param array $data + * + * @return $this + */ + public function withData(array $data) + { + return $this->option('series', $data); + } + + /** + * 渲染图表 + * + * @return string + */ + public function render() + { + $this->buildData(); + + return parent::render(); + } + +} \ No newline at end of file diff --git a/app/Admin/routes.php b/app/Admin/routes.php index d8e1001..52a25ff 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -88,6 +88,6 @@ Route::group([ // 订单统计 $router->resource('/order_report', 'v3\OrderReportController'); // 活动商品统计 - $router->resource('/goods_activity_report', 'v3\GoodsActivityReportController'); + $router->any('/goods_activity_report', 'v3\GoodsActivityReportController@index'); }); From cf54d8655e394447fe69c14cf0440018bcc29483 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Wed, 21 Oct 2020 15:45:08 +0800 Subject: [PATCH 05/16] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81-?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=95=B0=E6=8D=AE=E5=9B=BE=E6=A0=87-?= =?UTF-8?q?=E9=9A=90=E8=97=8F=EF=BC=8C=E6=9C=AA=E6=83=B3=E5=88=B0=E5=A5=BD?= =?UTF-8?q?=E6=96=B9=E6=A1=88=EF=BC=8C=E8=8E=B7=E5=8F=96=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=E4=B8=8D=E9=87=8D=E5=A4=8D=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/GoodsActivityReportController.php | 15 +++-------- .../Repositories/v3/GoodsActivityReport.php | 27 ++++++++++--------- app/Admin/routes.php | 2 +- 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php index 6439235..c959d7d 100644 --- a/app/Admin/Controllers/v3/GoodsActivityReportController.php +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -7,6 +7,7 @@ use App\Admin\Actions\Grid\v3\OrderReportLastWeek; use App\Admin\Actions\Grid\v3\OrderReportToday; use App\Admin\Actions\Grid\v3\OrderReportYesterday; +use Dcat\Admin\Grid\Model as GridModel; use App\Admin\Repositories\v3\GoodsActivityReport; use App\Admin\Widgets\Charts\OrderGoodsActivityColumnChart; use Dcat\Admin\Grid; @@ -19,14 +20,7 @@ use Dcat\Admin\Layout\Row; class GoodsActivityReportController extends AdminController { - public $data = []; - public $repositories = null; - public function __construct() - { - $this->option = $this->id = 7; - $this->repositories = new GoodsActivityReport(); - $this->data = $this->repositories->data; - } + /** * Make a grid builder. * @@ -34,7 +28,7 @@ class GoodsActivityReportController extends AdminController */ protected function grid() { - return Grid::make($this->repositories, function (Grid $grid) { + return Grid::make(new GoodsActivityReport(), function (Grid $grid) { $marketList = MarketModel::getMarketArray(); $storeList = StoreModel::getStoreArray(); @@ -98,8 +92,7 @@ class GoodsActivityReportController extends AdminController $row->column(12,$this->grid()); }) ->body(function(Row $row){ - $list = $this->data;dd($list); - $row->column(12,new OrderGoodsActivityColumnChart($list)); + // $row->column(12,new OrderGoodsActivityColumnChart()); }); } } diff --git a/app/Admin/Repositories/v3/GoodsActivityReport.php b/app/Admin/Repositories/v3/GoodsActivityReport.php index 36c93e5..d2f480f 100644 --- a/app/Admin/Repositories/v3/GoodsActivityReport.php +++ b/app/Admin/Repositories/v3/GoodsActivityReport.php @@ -6,7 +6,6 @@ use App\Models\LanzuOrderGoods as Model; use Dcat\Admin\Grid\Model as GridModel; use Dcat\Admin\Repositories\EloquentRepository; use Illuminate\Support\Facades\DB; -use App\Admin\Controllers\v3\GoodsActivityController; class GoodsActivityReport extends EloquentRepository { @@ -27,6 +26,16 @@ class GoodsActivityReport extends EloquentRepository $currentPage = $model->getCurrentPage(); // 获取每页显示行数 $perPage = $model->getPerPage(); + $list = $this->getData($perPage); + + return $model->makePaginator( + $list['total'] ?? 0,$list['data'] ?? [] + ); + + } + + public function getData($perPage = 10) + { // 获取筛选参数 $name = request()->input('name', ''); $marketId = request()->input('market_id'); @@ -34,15 +43,14 @@ class GoodsActivityReport extends EloquentRepository $time = date('Y-m-d',time()); $startTime = request()->input('start_time'); $endTime = request()->input('end_time'); - + $orderGoodsActivity = Model::select(DB::raw('SUM(lanzu_order_goods.number) as total,lanzu_order_goods.goods_id,lanzu_order_goods.name,lanzu_order_goods.cover_img,lanzu_order_main.market_id,lanzu_order.store_id')) ->join('lanzu_order','lanzu_order_goods.order_id','=','lanzu_order.id') ->join('lanzu_order_main','lanzu_order.order_main_id','=','lanzu_order_main.global_order_id') ->where('lanzu_order_goods.activity_type',2) ->where('lanzu_order_goods.status',1) - ->whereIn('lanzu_order_main.state',[4,5,10,11]) - ; - + ->whereIn('lanzu_order_main.state',[4,5,10,11]); + if($name){ $orderGoodsActivity->where('lanzu_order_goods.name','like',"%$name%"); } @@ -76,12 +84,7 @@ class GoodsActivityReport extends EloquentRepository // $orderGoodsActivity->where([['lanzu_order_goods.created_at','<=',strtotime($todayEnd)]]); // } $list = $orderGoodsActivity->orderBy('total','desc')->groupBy('goods_id','lanzu_order_goods.name','cover_img','market_id','store_id')->paginate($perPage); - $list = $list->toArray(); - $this->data = $list['data'] ?? []; - - return $model->makePaginator( - $list['total'] ?? 0,$list['data'] ?? [] - ); - + $list = $list->toArray(); + return $list; } } diff --git a/app/Admin/routes.php b/app/Admin/routes.php index 52a25ff..d8e1001 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -88,6 +88,6 @@ Route::group([ // 订单统计 $router->resource('/order_report', 'v3\OrderReportController'); // 活动商品统计 - $router->any('/goods_activity_report', 'v3\GoodsActivityReportController@index'); + $router->resource('/goods_activity_report', 'v3\GoodsActivityReportController'); }); From c0f6df7065cda894107065023350c9ec2585b4ee Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Wed, 21 Oct 2020 17:50:17 +0800 Subject: [PATCH 06/16] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81--?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BF=AB=E6=8D=B7=E6=97=A5=E6=9C=9F=E9=80=89?= =?UTF-8?q?=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Actions/Grid/v3/DataReportOption.php | 113 ++++++++++++++++++ .../v3/GoodsActivityReportController.php | 26 ++-- .../Controllers/v3/OrderReportController.php | 6 +- 3 files changed, 130 insertions(+), 15 deletions(-) create mode 100644 app/Admin/Actions/Grid/v3/DataReportOption.php diff --git a/app/Admin/Actions/Grid/v3/DataReportOption.php b/app/Admin/Actions/Grid/v3/DataReportOption.php new file mode 100644 index 0000000..36f7253 --- /dev/null +++ b/app/Admin/Actions/Grid/v3/DataReportOption.php @@ -0,0 +1,113 @@ +option = $option; + $this->url = $url; + $this->title = $title; + } + + /** + * Handle the action request. + * + * @param Request $request + * + * @return Response + */ + public function handle(Request $request) + { + // $date = $this->getDataByOption($this->option); + // $startTime = $date['start'] ?? ''; + // $endTime = $date['end'] ?? ''; + return $this->response() + ->success('查询中~'); + // ->redirect('/'.$this->url.'?start_time='.$startTime.'&end_time='.$endTime); + } + + /** + * @return string + */ + protected function html() + { + $date = $this->getDataByOption($this->option); + $startTime = $date['start'] ?? ''; + $endTime = $date['end'] ?? ''; + $url = 'admin/'.$this->url.'?start_time='.$startTime.'&end_time='.$endTime; + $this->defaultHtmlAttribute('href', url($url)); + + return <<formatHtmlAttributes()}>{$this->title()} +HTML; + } + + public function getDataByOption($option) + { + $date = ['start','end']; + $today = date('Y-m-d'); + switch($option){ + case 'today': + $date['start'] = $today; + $date['end'] = $today; + break; + case 'yesterday': + $yesterday = date("Y-m-d",strtotime("-1 days",time())); + $date['start'] = $yesterday; + $date['end'] = $yesterday; + break; + case 'this_week': + $first=1; + //获取当前周的第几天 周日是 0 周一到周六是 1 - 6 + $w=date('w',strtotime($today)); + //获取本周开始日期,如果$w是0,则表示周日,减去 6 天 + $week_start=date('Y-m-d',strtotime("$today -".($w ? $w - $first : 6).' days')); + //本周结束日期 + $week_end=date('Y-m-d',strtotime("$week_start +6 days")); + $date['start'] = $week_start; + $date['end'] = $week_end; + break; + case 'last_week': + // 上周日 + $lastSunday = date('Y-m-d', strtotime('-1 sunday', time())); + // 上周一 + $lastMonday = date('Y-m-d', strtotime('-1 monday', strtotime($lastSunday))); + + $date['start'] = $lastMonday; + $date['end'] = $lastSunday; + break; + case 'this_month': + $thisMonthStart = date('Y-m-01', strtotime($today)); + $thisMonthEnd = date('Y-m-d', strtotime($today)); + + $date['start'] = $thisMonthStart; + $date['end'] = $thisMonthEnd; + break; + case 'last_month': + //上月初 + $lastMonthStart = date('Y-m-d', strtotime('-1 month', strtotime(date('Y-m', time()) . '-01'))); + // 上月底 + $lastMonthEnd = date('Y-m-d', strtotime(date('Y-m', time()) . '-01') - 86400); + + $date['start'] = $lastMonthStart; + $date['end'] = $lastMonthEnd; + break; + default: + break; + } + + return $date; + } + +} diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php index c959d7d..d534c72 100644 --- a/app/Admin/Controllers/v3/GoodsActivityReportController.php +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -2,12 +2,8 @@ namespace App\Admin\Controllers\v3; -use App\Admin\Actions\Grid\v3\OrderReportLastMonth; -use App\Admin\Actions\Grid\v3\OrderReportLastWeek; -use App\Admin\Actions\Grid\v3\OrderReportToday; -use App\Admin\Actions\Grid\v3\OrderReportYesterday; +use App\Admin\Actions\Grid\v3\DataReportOption; -use Dcat\Admin\Grid\Model as GridModel; use App\Admin\Repositories\v3\GoodsActivityReport; use App\Admin\Widgets\Charts\OrderGoodsActivityColumnChart; use Dcat\Admin\Grid; @@ -54,15 +50,21 @@ class GoodsActivityReportController extends AdminController $grid->filter(function (Filter $filter) use($marketList,$storeList) { // 更改为 panel 布局 $filter->panel(); - - $filter->equal('name','商品名称'); - $filter->equal('market_id','市场')->select($marketList); - $filter->equal('store_id','店铺')->select($storeList); - $filter->equal('start_time','开始时间')->date(); - $filter->equal('end_time','结束时间')->date(); + $filter->equal('start_time','开始时间')->date()->width(2); + $filter->equal('end_time','结束时间')->date()->width(2); + $filter->equal('name','商品名称')->width(3); + $filter->equal('market_id','市场')->select($marketList)->width(2); + $filter->equal('store_id','店铺')->select($storeList)->width(3); }); - // $grid->tools([new OrderReportToday(), new OrderReportYesterday(), new OrderReportLastWeek(), new OrderReportLastMonth()]); + $grid->tools([ + new DataReportOption('today','goods_activity_report','今日'), + new DataReportOption('yesterday','goods_activity_report','昨日'), + new DataReportOption('this_week','goods_activity_report','本周'), + new DataReportOption('last_week','goods_activity_report','上周'), + new DataReportOption('this_month','goods_activity_report','本月'), + new DataReportOption('last_month','goods_activity_report','上月') + ]); // 每页1条 $grid->paginate(10); diff --git a/app/Admin/Controllers/v3/OrderReportController.php b/app/Admin/Controllers/v3/OrderReportController.php index fc2394e..082b23c 100644 --- a/app/Admin/Controllers/v3/OrderReportController.php +++ b/app/Admin/Controllers/v3/OrderReportController.php @@ -35,9 +35,9 @@ class OrderReportController extends AdminController // 更改为 panel 布局 $filter->panel(); - $filter->equal('market_id','市场')->select($marketList); - $filter->equal('start_time','开始时间')->date(); - $filter->equal('end_time','结束时间')->date(); + $filter->equal('market_id','市场')->select($marketList)->width(3); + $filter->equal('start_time','开始时间')->date()->width(2); + $filter->equal('end_time','结束时间')->date()->width(2); }); $grid->tools([new OrderReportToday(), new OrderReportYesterday(), new OrderReportLastWeek(), new OrderReportLastMonth()]); From 64a4df2400f07212cf9bb2f018ca0723d912752c Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Wed, 21 Oct 2020 18:23:08 +0800 Subject: [PATCH 07/16] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1--=E6=B7=BB=E5=8A=A0=E5=9B=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/GoodsActivityReportController.php | 4 + .../Charts/OrderGoodsActivityTotalChart.php | 84 +++++++++++++++++++ app/Admin/routes.php | 2 +- 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php index d534c72..a0e4042 100644 --- a/app/Admin/Controllers/v3/GoodsActivityReportController.php +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -6,6 +6,7 @@ use App\Admin\Actions\Grid\v3\DataReportOption; use App\Admin\Repositories\v3\GoodsActivityReport; use App\Admin\Widgets\Charts\OrderGoodsActivityColumnChart; +use App\Admin\Widgets\Charts\OrderGoodsActivityTotalChart; use Dcat\Admin\Grid; use Dcat\Admin\Controllers\AdminController; use App\Models\v3\Market as MarketModel; @@ -90,6 +91,9 @@ class GoodsActivityReportController extends AdminController public function index(Content $content) { return $content->title('活动商品统计') + ->body(function(Row $row){ + $row->column(4,new OrderGoodsActivityTotalChart()); + }) ->body(function(Row $row){ $row->column(12,$this->grid()); }) diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php new file mode 100644 index 0000000..3592a17 --- /dev/null +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php @@ -0,0 +1,84 @@ +option = $this->id = 7; + $this->data = $data; + parent::__construct(); + } + + protected function init() + { + parent::init(); + + // 设置标题 + $this->title('销售总数量'); + // 设置下拉菜单 + // $this->dropdown([]); + } + + /** + * 处理请求 + * 如果你的图表类中包含此方法,则可以通过此方法处理前端通过ajax提交的获取图表数据的请求 + * + * @param Request $request + * @return mixed|void + */ + public function handle(Request $request) + { + // dd($request); + // 数据查询逻辑 + $data = ['total' => $this->data['total'] ?? 0 ]; + + $this->withData($data); + } + + /** + * 这里返回需要异步传递到 handler 方法的参数 + * + * @return array + */ + public function parameters(): array + { + return [ + 'id' => $this->id, + 'option' => $this->option, + ]; + } + + public function withData($data) + { + $this->data = $data; + } + + /** + * 渲染卡片内容. + * + * @return string + */ + public function renderContent() + { + $total = $this->data['total'] ?? 0 ; + + return << +

{$total}

+ +HTML; + } + +} \ No newline at end of file diff --git a/app/Admin/routes.php b/app/Admin/routes.php index d8e1001..52a25ff 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -88,6 +88,6 @@ Route::group([ // 订单统计 $router->resource('/order_report', 'v3\OrderReportController'); // 活动商品统计 - $router->resource('/goods_activity_report', 'v3\GoodsActivityReportController'); + $router->any('/goods_activity_report', 'v3\GoodsActivityReportController@index'); }); From 863196bf90424afec81d2a72d124c5c72942f5b1 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Thu, 22 Oct 2020 15:46:53 +0800 Subject: [PATCH 08/16] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81--?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9B=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/GoodsActivityReportController.php | 19 ++- .../Repositories/v3/GoodsActivityReport.php | 27 +++- .../Charts/OrderGoodsActivityTotalChart.php | 133 +++++++++++++++--- 3 files changed, 147 insertions(+), 32 deletions(-) diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php index a0e4042..bb37090 100644 --- a/app/Admin/Controllers/v3/GoodsActivityReportController.php +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -17,6 +17,12 @@ use Dcat\Admin\Layout\Row; class GoodsActivityReportController extends AdminController { + public $totalData = []; + protected $GoodsActivityReport = null; + public function __construct() + { + $this->GoodsActivityReport = new GoodsActivityReport(); + } /** * Make a grid builder. @@ -25,7 +31,7 @@ class GoodsActivityReportController extends AdminController */ protected function grid() { - return Grid::make(new GoodsActivityReport(), function (Grid $grid) { + return Grid::make($this->GoodsActivityReport, function (Grid $grid) { $marketList = MarketModel::getMarketArray(); $storeList = StoreModel::getStoreArray(); @@ -44,9 +50,10 @@ class GoodsActivityReportController extends AdminController $item = StoreModel::getStoreInfo($storeId,'name'); return empty($item) ? '' : $item->name; })->width('12%'); - // $grid->column('price'); - // $grid->column('original_price'); + $grid->column('price'); + $grid->column('original_price'); $grid->column('total','销量'); + $grid->column('subsidy_total','补贴'); $grid->filter(function (Filter $filter) use($marketList,$storeList) { // 更改为 panel 布局 @@ -92,13 +99,11 @@ class GoodsActivityReportController extends AdminController { return $content->title('活动商品统计') ->body(function(Row $row){ - $row->column(4,new OrderGoodsActivityTotalChart()); + $row->column(6,new OrderGoodsActivityTotalChart($this->totalData)); + // $row->column(6,new OrderGoodsActivityColumnChart()); }) ->body(function(Row $row){ $row->column(12,$this->grid()); - }) - ->body(function(Row $row){ - // $row->column(12,new OrderGoodsActivityColumnChart()); }); } } diff --git a/app/Admin/Repositories/v3/GoodsActivityReport.php b/app/Admin/Repositories/v3/GoodsActivityReport.php index d2f480f..c9491e7 100644 --- a/app/Admin/Repositories/v3/GoodsActivityReport.php +++ b/app/Admin/Repositories/v3/GoodsActivityReport.php @@ -26,7 +26,11 @@ class GoodsActivityReport extends EloquentRepository $currentPage = $model->getCurrentPage(); // 获取每页显示行数 $perPage = $model->getPerPage(); - $list = $this->getData($perPage); + + $selects = 'SUM(number) as total,SUM((original_price-price)*number) as subsidy_total,price,original_price,lanzu_order_goods.goods_id,lanzu_order_goods.name,lanzu_order_goods.cover_img,lanzu_order_main.market_id,lanzu_order.store_id'; + $orderGoodsActivity = $this->getDataModel($selects, $perPage); + $list = $orderGoodsActivity->orderBy('total','desc')->groupBy('goods_id','lanzu_order_goods.name','cover_img','market_id','store_id','price','original_price')->paginate($perPage); + $list = $list->toArray(); return $model->makePaginator( $list['total'] ?? 0,$list['data'] ?? [] @@ -34,7 +38,7 @@ class GoodsActivityReport extends EloquentRepository } - public function getData($perPage = 10) + public function getDataModel($selects ,$perPage = 10) { // 获取筛选参数 $name = request()->input('name', ''); @@ -44,7 +48,7 @@ class GoodsActivityReport extends EloquentRepository $startTime = request()->input('start_time'); $endTime = request()->input('end_time'); - $orderGoodsActivity = Model::select(DB::raw('SUM(lanzu_order_goods.number) as total,lanzu_order_goods.goods_id,lanzu_order_goods.name,lanzu_order_goods.cover_img,lanzu_order_main.market_id,lanzu_order.store_id')) + $orderGoodsActivity = Model::select(DB::raw($selects)) ->join('lanzu_order','lanzu_order_goods.order_id','=','lanzu_order.id') ->join('lanzu_order_main','lanzu_order.order_main_id','=','lanzu_order_main.global_order_id') ->where('lanzu_order_goods.activity_type',2) @@ -83,8 +87,19 @@ class GoodsActivityReport extends EloquentRepository // $orderGoodsActivity->where([['lanzu_order_goods.created_at','>=',strtotime($todayStart)]]); // $orderGoodsActivity->where([['lanzu_order_goods.created_at','<=',strtotime($todayEnd)]]); // } - $list = $orderGoodsActivity->orderBy('total','desc')->groupBy('goods_id','lanzu_order_goods.name','cover_img','market_id','store_id')->paginate($perPage); - $list = $list->toArray(); - return $list; + + return $orderGoodsActivity; + } + + /** + * 获取总数 + */ + public function getCountData() + { + $selects = "SUM(lanzu_order_goods.number) as total,SUM((original_price-price)*number) as subsidy_total,FROM_UNIXTIME(lanzu_order_goods.created_at,'%Y-%m-%d') as dtime"; + $orderGoodsActivity = $this->getDataModel($selects); + $total = $orderGoodsActivity->groupBy('dtime')->get()->toArray(); + + return $total ?? []; } } diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php index 3592a17..6bc2d70 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php @@ -2,33 +2,99 @@ namespace App\Admin\Widgets\Charts; -use Dcat\Admin\Widgets\Metrics\Card; +use App\Admin\Repositories\v3\GoodsActivityReport; +use Dcat\Admin\Admin; +use Dcat\Admin\Support\JavaScript; +use Dcat\Admin\Widgets\Metrics\Bar; use Illuminate\Http\Request; -class OrderGoodsActivityTotalChart extends Card +class OrderGoodsActivityTotalChart extends Bar { /** * 活动商品总数 */ + protected $categories = []; protected $data = []; + protected $total = []; protected $id; protected $option; + protected $GoodsActivityReport = null; + protected $valueData = []; public function __construct($data = []) { + $this->GoodsActivityReport = new GoodsActivityReport(); $this->option = $this->id = 7; - $this->data = $data; + + // 分页的时候不重复查询数据 + $currentPage = request()->input('page', 1); + if($currentPage == 1){ + $data = $this->GoodsActivityReport->getCountData(); + if(!empty($data) && is_array($data)){ + $total = 0; + $subsidyTotal = 0; + foreach($data as $key => $value){ + if($key < 10){ + $this->data[] = $value['total']; + $this->categories[] = $value['dtime']; + + $this->valueData[] = $value['subsidy_total']; + } + $total += $value['total']; + $subsidyTotal += $value['subsidy_total']; + } + $this->total['number_total'] = $total; + $this->total['subsidy_total'] = $subsidyTotal; + } + } + parent::__construct(); } protected function init() { parent::init(); - + $color = Admin::color(); // 设置标题 - $this->title('销售总数量'); + $this->title(''); // 设置下拉菜单 // $this->dropdown([]); + + // $this->chartBarColumnWidth('50%'); + // $this->style('display:block'); + + // 设置图表颜色 + $this->chartColors([$color->primary()]); + + $this->chartOption( + 'tooltip.x', + ['show' => true] + ); + + // $this->chartOption( + // 'tooltip.y.formatter', + // JavaScript::make("function (params) { + // return params; + // }") + // ); + $this->chartOption( + 'tooltip.trigger', + 'axis' + ); + $this->chartOption( + 'tooltip.formatter', + JavaScript::make("function (params) { + return 'ff'; + }") + ); + $this->chartOption( + 'xaxis.type', + 'category' + ); + $this->chartOption( + 'xaxis.categories', + $this->categories + ); } /** @@ -42,9 +108,17 @@ class OrderGoodsActivityTotalChart extends Card { // dd($request); // 数据查询逻辑 - $data = ['total' => $this->data['total'] ?? 0 ]; - - $this->withData($data); + $data = $this->data; + $categories = $this->categories; + $chartData = [ + [ + 'name' => '销量', + 'data' => $data, + ] + ]; + $this->withContent($this->total); + $this->withChart($chartData); + $this->withCategories($categories); } /** @@ -59,26 +133,47 @@ class OrderGoodsActivityTotalChart extends Card 'option' => $this->option, ]; } - - public function withData($data) + /** + * 设置图表数据. + * + * @param array $data + * + * @return $this + */ + public function withChart(array $data) { - $this->data = $data; + return $this->chart([ + 'series' => $data, + ]); } - /** + /** * 渲染卡片内容. * * @return string */ - public function renderContent() + public function withContent($total = []) { - $total = $this->data['total'] ?? 0 ; - - return << -

{$total}

+ $numberTotal = $this->total['number_total'] ?? 0; + $subsidyTotal = $this->total['subsidy_total'] ?? 0;//d-flex + return $this->content( + << +
+
+
销售总数量(单)
+
{$numberTotal}
+
+
+
+
+
总补贴金额(元)
+
{$subsidyTotal}
+
+
-HTML; +HTML + ); } } \ No newline at end of file From df61f52d96222725bbbaca57610799ad6f6f3c34 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Thu, 22 Oct 2020 17:41:51 +0800 Subject: [PATCH 09/16] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81--?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9B=BE=E8=A1=A8=EF=BC=8C=E5=88=86=E5=B8=82?= =?UTF-8?q?=E5=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/GoodsActivityReportController.php | 7 +- .../Repositories/v3/GoodsActivityReport.php | 12 ++ .../Charts/OrderGoodsActivityColumnChart.php | 14 +- .../Charts/OrderGoodsActivityMarketChart.php | 129 ++++++++++++++++++ .../Charts/OrderGoodsActivityTotalChart.php | 20 +-- 5 files changed, 161 insertions(+), 21 deletions(-) create mode 100644 app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php index bb37090..1b0c2e3 100644 --- a/app/Admin/Controllers/v3/GoodsActivityReportController.php +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -6,6 +6,7 @@ use App\Admin\Actions\Grid\v3\DataReportOption; use App\Admin\Repositories\v3\GoodsActivityReport; use App\Admin\Widgets\Charts\OrderGoodsActivityColumnChart; +use App\Admin\Widgets\Charts\OrderGoodsActivityMarketChart; use App\Admin\Widgets\Charts\OrderGoodsActivityTotalChart; use Dcat\Admin\Grid; use Dcat\Admin\Controllers\AdminController; @@ -17,7 +18,6 @@ use Dcat\Admin\Layout\Row; class GoodsActivityReportController extends AdminController { - public $totalData = []; protected $GoodsActivityReport = null; public function __construct() { @@ -99,11 +99,12 @@ class GoodsActivityReportController extends AdminController { return $content->title('活动商品统计') ->body(function(Row $row){ - $row->column(6,new OrderGoodsActivityTotalChart($this->totalData)); + $row->column(6,new OrderGoodsActivityTotalChart()); + $row->column(3,new OrderGoodsActivityMarketChart()); // $row->column(6,new OrderGoodsActivityColumnChart()); }) ->body(function(Row $row){ - $row->column(12,$this->grid()); + // $row->column(12,$this->grid()); }); } } diff --git a/app/Admin/Repositories/v3/GoodsActivityReport.php b/app/Admin/Repositories/v3/GoodsActivityReport.php index c9491e7..b848f9b 100644 --- a/app/Admin/Repositories/v3/GoodsActivityReport.php +++ b/app/Admin/Repositories/v3/GoodsActivityReport.php @@ -102,4 +102,16 @@ class GoodsActivityReport extends EloquentRepository return $total ?? []; } + + /** + * 分市场获取 + */ + public function getMarketData() + { + $selects = "SUM(lanzu_order_goods.number) as total,SUM((original_price-price)*number) as subsidy_total,market_id"; + $orderGoodsActivity = $this->getDataModel($selects); + $total = $orderGoodsActivity->groupBy('market_id')->get()->toArray(); + + return $total ?? []; + } } diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityColumnChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityColumnChart.php index d4f02ae..0095dd5 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityColumnChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityColumnChart.php @@ -3,6 +3,7 @@ namespace App\Admin\Widgets\Charts; use Dcat\Admin\Admin; +use Dcat\Admin\Support\JavaScript; use Dcat\Admin\Widgets\ApexCharts\Chart; use Illuminate\Http\Request; @@ -75,13 +76,20 @@ class OrderGoodsActivityColumnChart extends Chart 'color' => $color->primary() ] ] - ] + ], + // 'tooltip' => [ + // 'x' => [ + // 'show' => true + // ] + // ] ]); $number = 10; // $this->chartOption( - // 'dataLabels.formatter', + // 'tooltip.y.formatter', // // 这个值最后段代码会作为JS代码执行 - // JavaScript::make("function () { return {$number}; }") + // JavaScript::make("function (params, index) { + // return params +'-'+ index; + // }") // ); } diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php new file mode 100644 index 0000000..687bcc0 --- /dev/null +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php @@ -0,0 +1,129 @@ +GoodsActivityReport = new GoodsActivityReport(); + $this->option = $this->id = 7; + + // 分页的时候不重复查询数据 + $currentPage = request()->input('page', 1); + if($currentPage == 1){ + $data = $this->GoodsActivityReport->getMarketData(); + $market = MarketModel::getMarketArray(); + if(!empty($data) && is_array($data)){ + $total = 0; + foreach($data as $key => $value){ + $this->data[] = (int)$value['total']; + $this->labels[] = $market[$value['market_id']]??'未知'; + $this->colors[] = $this->color[$key]; + $total += $value['total']; + } + $this->total['number_total'] = $total; + } + } + + parent::__construct(); + } + + protected function init() + { + parent::init(); + // 设置标题 + $this->title(''); + $this->chartHeight(160); + // 设置下拉菜单 + // $this->dropdown([]); + + $this->chartLabels($this->labels); + + // 设置图表颜色 + $this->chartColors($this->colors); + } + + /** + * 处理请求 + * 如果你的图表类中包含此方法,则可以通过此方法处理前端通过ajax提交的获取图表数据的请求 + * + * @param Request $request + * @return mixed|void + */ + public function handle(Request $request) + { + // 数据查询逻辑 + $data = $this->data; + $this->withContent($data); + $this->withChart($data); + } + + /** + * 这里返回需要异步传递到 handler 方法的参数 + * + * @return array + */ + public function parameters(): array + { + return [ + 'id' => $this->id, + 'option' => $this->option, + ]; + } + + /** + * 设置图表数据. + * + * @param array $data + * + * @return $this + */ + public function withChart(array $data) + { + return $this->chart([ + 'series' => $data, + ]); + } + + /** + * 渲染卡片内容. + * + * @return string + */ + public function withContent($data = []) + { + $div = ''; + $style = 'margin-bottom: 8px'; + if(!empty($data) && is_array($data)){ + foreach($data as $key => $value){ + $div .= '
+ '.$this->labels[$key].' +
'.$value.'
'; + } + } + return $this->content( + << true] ); - // $this->chartOption( - // 'tooltip.y.formatter', - // JavaScript::make("function (params) { - // return params; - // }") - // ); $this->chartOption( - 'tooltip.trigger', - 'axis' - ); - $this->chartOption( - 'tooltip.formatter', - JavaScript::make("function (params) { - return 'ff'; + 'tooltip.y.formatter', + JavaScript::make("function (params,index) { + return params ; }") ); + $this->chartOption( 'xaxis.type', 'category' @@ -106,7 +97,6 @@ class OrderGoodsActivityTotalChart extends Bar */ public function handle(Request $request) { - // dd($request); // 数据查询逻辑 $data = $this->data; $categories = $this->categories; From a7fb9fb6c280a761f49dd8e40e38cbce1f33074f Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Thu, 22 Oct 2020 18:37:15 +0800 Subject: [PATCH 10/16] =?UTF-8?q?=20=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81--?= =?UTF-8?q?=E8=A1=A8=E5=A4=B4=E7=BB=9F=E8=AE=A1=E5=9B=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/GoodsActivityReportController.php | 31 +++- .../Charts/OrderGoodsActivityCountChart.php | 152 ++++++++++++++++++ .../Charts/OrderGoodsActivityMarketChart.php | 7 +- .../Charts/OrderGoodsActivityTotalChart.php | 35 ++-- 4 files changed, 188 insertions(+), 37 deletions(-) create mode 100644 app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php index 1b0c2e3..9758ba0 100644 --- a/app/Admin/Controllers/v3/GoodsActivityReportController.php +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -5,16 +5,18 @@ namespace App\Admin\Controllers\v3; use App\Admin\Actions\Grid\v3\DataReportOption; use App\Admin\Repositories\v3\GoodsActivityReport; -use App\Admin\Widgets\Charts\OrderGoodsActivityColumnChart; +use App\Admin\Widgets\Charts\OrderGoodsActivityCountChart; use App\Admin\Widgets\Charts\OrderGoodsActivityMarketChart; use App\Admin\Widgets\Charts\OrderGoodsActivityTotalChart; use Dcat\Admin\Grid; use Dcat\Admin\Controllers\AdminController; use App\Models\v3\Market as MarketModel; use App\Models\v3\Store as StoreModel; +use Dcat\Admin\Layout\Column; use Dcat\Admin\Grid\Filter; use Dcat\Admin\Layout\Content; use Dcat\Admin\Layout\Row; +use Dcat\Admin\Widgets\Card; class GoodsActivityReportController extends AdminController { @@ -36,8 +38,6 @@ class GoodsActivityReportController extends AdminController $marketList = MarketModel::getMarketArray(); $storeList = StoreModel::getStoreArray(); - // $grid->combine('默认统计今天的数据', ['name', 'value'])->responsive()->help('如果未选择时间,则默认只统计当天的所有市场的数据,特殊:现存用户默认统计所有的数据'); - $grid->column('goods_id')->sortable(); $grid->column('cover_img')->image('',50); $grid->column('name','商品名称'); @@ -53,7 +53,7 @@ class GoodsActivityReportController extends AdminController $grid->column('price'); $grid->column('original_price'); $grid->column('total','销量'); - $grid->column('subsidy_total','补贴'); + $grid->column('subsidy_total','补贴')->help('(原价-售价)* 销量'); $grid->filter(function (Filter $filter) use($marketList,$storeList) { // 更改为 panel 布局 @@ -99,12 +99,27 @@ class GoodsActivityReportController extends AdminController { return $content->title('活动商品统计') ->body(function(Row $row){ - $row->column(6,new OrderGoodsActivityTotalChart()); - $row->column(3,new OrderGoodsActivityMarketChart()); - // $row->column(6,new OrderGoodsActivityColumnChart()); + // $row->column(2,function (Column $column){ + // $title = "销售总数量(单)"; + // $value = 123; + // $card = Card::make("{$title}","{$value}"); + // $card->style('background-color:#4e9876'); + // $column->row($card); + // }); + // $row->column(2,function (Column $column){ + // $title = "总补贴金额(元)"; + // $value = 56.23; + // $card = Card::make("{$title}","{$value}"); + // $card->style('background-color:#4e9876'); + // $column->row($card); + // }); + $row->column(4,new OrderGoodsActivityTotalChart()); + $row->column(4,new OrderGoodsActivityCountChart()); + $row->column(4,new OrderGoodsActivityMarketChart()); + }) ->body(function(Row $row){ - // $row->column(12,$this->grid()); + $row->column(12,$this->grid()); }); } } diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php new file mode 100644 index 0000000..1c02bd0 --- /dev/null +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php @@ -0,0 +1,152 @@ +GoodsActivityReport = new GoodsActivityReport(); + $this->option = $this->id = 7; + + // 分页的时候不重复查询数据 + $currentPage = request()->input('page', 1); + if($currentPage == 1){ + $data = $this->GoodsActivityReport->getCountData(); + if(!empty($data) && is_array($data)){ + $total = 0; + $subsidyTotal = 0; + foreach($data as $key => $value){ + if($key < $this->showNumber){ + $this->data[] = $value['subsidy_total']; + $this->categories[] = $value['dtime']; + } + $subsidyTotal += $value['subsidy_total']; + } + $this->total['subsidy_total'] = $subsidyTotal; + } + } + + parent::__construct(); + } + + protected function init() + { + parent::init(); + $color = Admin::color(); + // 设置标题 + $this->title('总补贴金额(元)'); + $this->subTitle('近'.$this->showNumber.'天每天总补贴金额'); + $this->chartHeight(140); + + // 设置图表颜色 + $this->chartColors([$color->primary()]); + + $this->chartOption( + 'tooltip.x', + ['show' => true] + ); + + $this->chartOption( + 'tooltip.y.formatter', + JavaScript::make("function (params,index) { + return params ; + }") + ); + + $this->chartOption( + 'xaxis.type', + 'category' + ); + $this->chartOption( + 'xaxis.categories', + $this->categories + ); + } + + /** + * 处理请求 + * 如果你的图表类中包含此方法,则可以通过此方法处理前端通过ajax提交的获取图表数据的请求 + * + * @param Request $request + * @return mixed|void + */ + public function handle(Request $request) + { + // 数据查询逻辑 + $data = $this->data; + $categories = $this->categories; + $chartData = [ + [ + 'name' => '金额', + 'data' => $data, + ] + ]; + $this->withContent($this->total); + $this->withChart($chartData); + $this->withCategories($categories); + } + + /** + * 这里返回需要异步传递到 handler 方法的参数 + * + * @return array + */ + public function parameters(): array + { + return [ + 'id' => $this->id, + 'option' => $this->option, + ]; + } + /** + * 设置图表数据. + * + * @param array $data + * + * @return $this + */ + public function withChart(array $data) + { + return $this->chart([ + 'series' => $data, + ]); + } + + /** + * 渲染卡片内容. + * + * @return string + */ + public function withContent($total = []) + { + $content = $total['subsidy_total'] ??0; + return $this->content( + << +

{$content}

+ + +HTML + ); + } + +} \ No newline at end of file diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php index 687bcc0..c7c7a65 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php @@ -18,7 +18,7 @@ class OrderGoodsActivityMarketChart extends Donut protected $id; protected $option; protected $GoodsActivityReport = null; - protected $color = [ '#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B', '#2b908f', '#f9a3a4', '#90ee7e', '#f48024', '#69d2e7']; + protected $color = ['#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B', '#2b908f', '#f9a3a4', '#90ee7e', '#f48024', '#69d2e7']; protected $colors = []; public function __construct($data = []) @@ -50,8 +50,9 @@ class OrderGoodsActivityMarketChart extends Donut { parent::init(); // 设置标题 - $this->title(''); - $this->chartHeight(160); + $this->title('各市场销售量(单)'); + $this->subTitle('各市场销售量的占比图'); + $this->chartHeight(170); // 设置下拉菜单 // $this->dropdown([]); diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php index 5721cce..5b71305 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php @@ -20,6 +20,7 @@ class OrderGoodsActivityTotalChart extends Bar protected $option; protected $valueData = []; protected $GoodsActivityReport = null; + protected $showNumber = 7; public function __construct($data = []) { @@ -34,17 +35,13 @@ class OrderGoodsActivityTotalChart extends Bar $total = 0; $subsidyTotal = 0; foreach($data as $key => $value){ - if($key < 10){ + if($key < $this->showNumber){ $this->data[] = $value['total']; $this->categories[] = $value['dtime']; - - $this->valueData[] = $value['subsidy_total']; } $total += $value['total']; - $subsidyTotal += $value['subsidy_total']; } $this->total['number_total'] = $total; - $this->total['subsidy_total'] = $subsidyTotal; } } @@ -56,13 +53,8 @@ class OrderGoodsActivityTotalChart extends Bar parent::init(); $color = Admin::color(); // 设置标题 - $this->title(''); - // 设置下拉菜单 - // $this->dropdown([]); - - // $this->chartBarColumnWidth('50%'); - // $this->style('display:block'); - + $this->title('销售总数量(单)'); + $this->subTitle('近'.$this->showNumber.'天每天的销量'); // 设置图表颜色 $this->chartColors([$color->primary()]); @@ -144,22 +136,13 @@ class OrderGoodsActivityTotalChart extends Bar */ public function withContent($total = []) { - $numberTotal = $this->total['number_total'] ?? 0; - $subsidyTotal = $this->total['subsidy_total'] ?? 0;//d-flex + $value = $total['number_total'] ?? 0; + $minHeight = '113px'; return $this->content( << -
-
-
销售总数量(单)
-
{$numberTotal}
-
-
-
-
-
总补贴金额(元)
-
{$subsidyTotal}
-
+
+
+

{$value}

HTML From 80e81e8afbcce902b264aa09756bd9c2d029b868 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Fri, 23 Oct 2020 11:01:17 +0800 Subject: [PATCH 11/16] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81--?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9B=BE=E8=A1=A8-end?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/GoodsActivityReportController.php | 1 - .../Repositories/v3/GoodsActivityReport.php | 29 +++++----- .../Charts/OrderGoodsActivityCountChart.php | 49 +++++++++-------- .../Charts/OrderGoodsActivityMarketChart.php | 55 ++++++++++--------- .../Charts/OrderGoodsActivityTotalChart.php | 49 +++++++++-------- 5 files changed, 94 insertions(+), 89 deletions(-) diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php index 9758ba0..b0aaa4e 100644 --- a/app/Admin/Controllers/v3/GoodsActivityReportController.php +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -116,7 +116,6 @@ class GoodsActivityReportController extends AdminController $row->column(4,new OrderGoodsActivityTotalChart()); $row->column(4,new OrderGoodsActivityCountChart()); $row->column(4,new OrderGoodsActivityMarketChart()); - }) ->body(function(Row $row){ $row->column(12,$this->grid()); diff --git a/app/Admin/Repositories/v3/GoodsActivityReport.php b/app/Admin/Repositories/v3/GoodsActivityReport.php index b848f9b..0679da9 100644 --- a/app/Admin/Repositories/v3/GoodsActivityReport.php +++ b/app/Admin/Repositories/v3/GoodsActivityReport.php @@ -28,7 +28,7 @@ class GoodsActivityReport extends EloquentRepository $perPage = $model->getPerPage(); $selects = 'SUM(number) as total,SUM((original_price-price)*number) as subsidy_total,price,original_price,lanzu_order_goods.goods_id,lanzu_order_goods.name,lanzu_order_goods.cover_img,lanzu_order_main.market_id,lanzu_order.store_id'; - $orderGoodsActivity = $this->getDataModel($selects, $perPage); + $orderGoodsActivity = $this->getDataModel($selects); $list = $orderGoodsActivity->orderBy('total','desc')->groupBy('goods_id','lanzu_order_goods.name','cover_img','market_id','store_id','price','original_price')->paginate($perPage); $list = $list->toArray(); @@ -38,15 +38,16 @@ class GoodsActivityReport extends EloquentRepository } - public function getDataModel($selects ,$perPage = 10) + public function getDataModel($selects,$params = []) { - // 获取筛选参数 - $name = request()->input('name', ''); - $marketId = request()->input('market_id'); - $storeId = request()->input('store_id'); $time = date('Y-m-d',time()); - $startTime = request()->input('start_time'); - $endTime = request()->input('end_time'); + // 获取筛选参数 + $name = $params['name'] ?? request()->input('name', ''); + $marketId = $params['market_id'] ?? request()->input('market_id',0); + $storeId = $params['store_id'] ?? request()->input('store_id',0); + + $startTime = $params['start_time'] ?? request()->input('start_time',''); + $endTime = $params['end_time'] ?? request()->input('end_time',''); $orderGoodsActivity = Model::select(DB::raw($selects)) ->join('lanzu_order','lanzu_order_goods.order_id','=','lanzu_order.id') @@ -68,7 +69,7 @@ class GoodsActivityReport extends EloquentRepository $date = $startTime; $startTime = $startTime.' 00:00:00'; - $orderGoodsActivity->where([['lanzu_order_goods.created_at','>=',strtotime($startTime)]]); + $orderGoodsActivity->where('lanzu_order_goods.created_at','>=',strtotime($startTime)); }else{ $date = '2020-06-01'; } @@ -76,7 +77,7 @@ class GoodsActivityReport extends EloquentRepository $date = $date.' 至 '.$endTime; $endTime = $endTime.' 23:59:59'; - $orderGoodsActivity->where([['lanzu_order_goods.created_at','<=',strtotime($endTime)]]); + $orderGoodsActivity->where('lanzu_order_goods.created_at','<=',strtotime($endTime)); }else{ $date .= ' 至 '.$time; } @@ -94,10 +95,10 @@ class GoodsActivityReport extends EloquentRepository /** * 获取总数 */ - public function getCountData() + public function getCountData($params = []) { $selects = "SUM(lanzu_order_goods.number) as total,SUM((original_price-price)*number) as subsidy_total,FROM_UNIXTIME(lanzu_order_goods.created_at,'%Y-%m-%d') as dtime"; - $orderGoodsActivity = $this->getDataModel($selects); + $orderGoodsActivity = $this->getDataModel($selects,$params); $total = $orderGoodsActivity->groupBy('dtime')->get()->toArray(); return $total ?? []; @@ -106,10 +107,10 @@ class GoodsActivityReport extends EloquentRepository /** * 分市场获取 */ - public function getMarketData() + public function getMarketData($params = []) { $selects = "SUM(lanzu_order_goods.number) as total,SUM((original_price-price)*number) as subsidy_total,market_id"; - $orderGoodsActivity = $this->getDataModel($selects); + $orderGoodsActivity = $this->getDataModel($selects,$params); $total = $orderGoodsActivity->groupBy('market_id')->get()->toArray(); return $total ?? []; diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php index 1c02bd0..7abf935 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php @@ -16,8 +16,6 @@ class OrderGoodsActivityCountChart extends Line protected $categories = []; protected $data = []; protected $total = []; - protected $id; - protected $option; protected $valueData = []; protected $GoodsActivityReport = null; protected $showNumber = 7; @@ -25,25 +23,6 @@ class OrderGoodsActivityCountChart extends Line public function __construct($data = []) { $this->GoodsActivityReport = new GoodsActivityReport(); - $this->option = $this->id = 7; - - // 分页的时候不重复查询数据 - $currentPage = request()->input('page', 1); - if($currentPage == 1){ - $data = $this->GoodsActivityReport->getCountData(); - if(!empty($data) && is_array($data)){ - $total = 0; - $subsidyTotal = 0; - foreach($data as $key => $value){ - if($key < $this->showNumber){ - $this->data[] = $value['subsidy_total']; - $this->categories[] = $value['dtime']; - } - $subsidyTotal += $value['subsidy_total']; - } - $this->total['subsidy_total'] = $subsidyTotal; - } - } parent::__construct(); } @@ -54,7 +33,7 @@ class OrderGoodsActivityCountChart extends Line $color = Admin::color(); // 设置标题 $this->title('总补贴金额(元)'); - $this->subTitle('近'.$this->showNumber.'天每天总补贴金额'); + $this->subTitle('其中'.$this->showNumber.'天每天总补贴金额'); $this->chartHeight(140); // 设置图表颜色 @@ -92,6 +71,24 @@ class OrderGoodsActivityCountChart extends Line public function handle(Request $request) { // 数据查询逻辑 + // 分页的时候不重复查询数据 + $currentPage = request()->input('page', 1); + if($currentPage == 1){ + $params = $this->parameters(); + $data = $this->GoodsActivityReport->getCountData($params); + if(!empty($data) && is_array($data)){ + $subsidyTotal = 0; + foreach($data as $key => $value){ + if($key < $this->showNumber){ + $this->data[] = $value['subsidy_total']; + $this->categories[] = $value['dtime']; + } + $subsidyTotal += $value['subsidy_total']; + } + $this->total['subsidy_total'] = $subsidyTotal; + } + } + $data = $this->data; $categories = $this->categories; $chartData = [ @@ -113,8 +110,12 @@ class OrderGoodsActivityCountChart extends Line public function parameters(): array { return [ - 'id' => $this->id, - 'option' => $this->option, + 'page' => request()->input('page', 1), + 'name' => request()->input('name', ''), + 'market_id' => request()->input('market_id',0), + 'store_id' => request()->input('store_id',0), + 'start_time' => request()->input('start_time',''), + 'end_time' => request()->input('end_time',''), ]; } /** diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php index c7c7a65..a6d6916 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php @@ -15,33 +15,14 @@ class OrderGoodsActivityMarketChart extends Donut protected $labels = []; protected $data = []; protected $total = []; - protected $id; - protected $option; - protected $GoodsActivityReport = null; - protected $color = ['#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B', '#2b908f', '#f9a3a4', '#90ee7e', '#f48024', '#69d2e7']; protected $colors = []; + protected $GoodsActivityReport = null; + protected $color = ['#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B', '#2b908f', '#f9a3a4', '#90ee7e', '#f48024', '#69d2e7']; + public function __construct($data = []) { $this->GoodsActivityReport = new GoodsActivityReport(); - $this->option = $this->id = 7; - - // 分页的时候不重复查询数据 - $currentPage = request()->input('page', 1); - if($currentPage == 1){ - $data = $this->GoodsActivityReport->getMarketData(); - $market = MarketModel::getMarketArray(); - if(!empty($data) && is_array($data)){ - $total = 0; - foreach($data as $key => $value){ - $this->data[] = (int)$value['total']; - $this->labels[] = $market[$value['market_id']]??'未知'; - $this->colors[] = $this->color[$key]; - $total += $value['total']; - } - $this->total['number_total'] = $total; - } - } parent::__construct(); } @@ -53,12 +34,11 @@ class OrderGoodsActivityMarketChart extends Donut $this->title('各市场销售量(单)'); $this->subTitle('各市场销售量的占比图'); $this->chartHeight(170); + $this->chartMarginTop(20); // 设置下拉菜单 // $this->dropdown([]); $this->chartLabels($this->labels); - - // 设置图表颜色 $this->chartColors($this->colors); } @@ -71,6 +51,25 @@ class OrderGoodsActivityMarketChart extends Donut */ public function handle(Request $request) { + // 分页的时候不重复查询数据 + $currentPage = $request->get('page'); + if($currentPage == 1){ + $params = $this->parameters(); + $data = $this->GoodsActivityReport->getMarketData($params); + $market = MarketModel::getMarketArray(); + if(!empty($data) && is_array($data)){ + $total = 0; + foreach($data as $key => $value){ + $this->data[] = (int)$value['total']; + $this->labels[] = $market[$value['market_id']]??'未知'; + $this->colors[] = $this->color[$key]; + $total += $value['total']; + } + $this->total['number_total'] = $total; + } + } + $this->chartLabels($this->labels); + $this->chartColors($this->colors); // 数据查询逻辑 $data = $this->data; $this->withContent($data); @@ -85,8 +84,12 @@ class OrderGoodsActivityMarketChart extends Donut public function parameters(): array { return [ - 'id' => $this->id, - 'option' => $this->option, + 'page' => request()->input('page', 1), + 'name' => request()->input('name', ''), + 'market_id' => request()->input('market_id',0), + 'store_id' => request()->input('store_id',0), + 'start_time' => request()->input('start_time',''), + 'end_time' => request()->input('end_time',''), ]; } diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php index 5b71305..e3e14e1 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php @@ -16,8 +16,6 @@ class OrderGoodsActivityTotalChart extends Bar protected $categories = []; protected $data = []; protected $total = []; - protected $id; - protected $option; protected $valueData = []; protected $GoodsActivityReport = null; protected $showNumber = 7; @@ -25,25 +23,6 @@ class OrderGoodsActivityTotalChart extends Bar public function __construct($data = []) { $this->GoodsActivityReport = new GoodsActivityReport(); - $this->option = $this->id = 7; - - // 分页的时候不重复查询数据 - $currentPage = request()->input('page', 1); - if($currentPage == 1){ - $data = $this->GoodsActivityReport->getCountData(); - if(!empty($data) && is_array($data)){ - $total = 0; - $subsidyTotal = 0; - foreach($data as $key => $value){ - if($key < $this->showNumber){ - $this->data[] = $value['total']; - $this->categories[] = $value['dtime']; - } - $total += $value['total']; - } - $this->total['number_total'] = $total; - } - } parent::__construct(); } @@ -54,7 +33,7 @@ class OrderGoodsActivityTotalChart extends Bar $color = Admin::color(); // 设置标题 $this->title('销售总数量(单)'); - $this->subTitle('近'.$this->showNumber.'天每天的销量'); + $this->subTitle('其中'.$this->showNumber.'天每天的销量'); // 设置图表颜色 $this->chartColors([$color->primary()]); @@ -90,6 +69,24 @@ class OrderGoodsActivityTotalChart extends Bar public function handle(Request $request) { // 数据查询逻辑 + // 分页的时候不重复查询数据 + $currentPage = request()->input('page', 1); + if($currentPage == 1){ + $params = $this->parameters(); + $data = $this->GoodsActivityReport->getCountData($params); + if(!empty($data) && is_array($data)){ + $total = 0; + foreach($data as $key => $value){ + if($key < $this->showNumber){ + $this->data[] = $value['total']; + $this->categories[] = $value['dtime']; + } + $total += $value['total']; + } + $this->total['number_total'] = $total; + } + } + $data = $this->data; $categories = $this->categories; $chartData = [ @@ -111,8 +108,12 @@ class OrderGoodsActivityTotalChart extends Bar public function parameters(): array { return [ - 'id' => $this->id, - 'option' => $this->option, + 'page' => request()->input('page', 1), + 'name' => request()->input('name', ''), + 'market_id' => request()->input('market_id',0), + 'store_id' => request()->input('store_id',0), + 'start_time' => request()->input('start_time',''), + 'end_time' => request()->input('end_time',''), ]; } /** From e19e9d73de46e2b4288f51f5ccdc98f6e813e108 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Fri, 23 Oct 2020 15:13:05 +0800 Subject: [PATCH 12/16] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81-?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E6=9C=8D=E5=8A=A1=E7=AB=99=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Actions/EXporter/GoodsActivitySales.php | 65 ++++++++++++++ .../Actions/Tools/GoodsActivityExport.php | 84 +++++++++++++++++++ .../v3/GoodsActivityReportController.php | 65 +++++++++++--- .../Repositories/v3/GoodsActivityReport.php | 14 +++- .../Charts/OrderGoodsActivityCountChart.php | 6 +- .../Charts/OrderGoodsActivityMarketChart.php | 6 +- .../Charts/OrderGoodsActivityTotalChart.php | 10 +-- app/Admin/routes.php | 1 + 8 files changed, 227 insertions(+), 24 deletions(-) create mode 100644 app/Admin/Actions/EXporter/GoodsActivitySales.php create mode 100644 app/Admin/Actions/Tools/GoodsActivityExport.php diff --git a/app/Admin/Actions/EXporter/GoodsActivitySales.php b/app/Admin/Actions/EXporter/GoodsActivitySales.php new file mode 100644 index 0000000..6a6432c --- /dev/null +++ b/app/Admin/Actions/EXporter/GoodsActivitySales.php @@ -0,0 +1,65 @@ +params = $params; + } + + public function array(): array + { + $result = [[ + '商品ID', + '商品名称', + '市场', + '店铺', + '售价(元)', + '原价(元)', + '销量(单)', + '补贴(元)', + ]]; + $data = $this->getData($this->params); + $markets = MarketModel::getMarketArray(); + $stores = StoreModel::getStoreArray(); + foreach ($data as $value){ + $item = [ + $value['goods_id'], + $value['name']??'', + $markets[$value['market_id']]??'', + $stores[$value['store_id']]??'', + $value['price']??0, + $value['original_price']??0, + $value['total']??0, + $value['subsidy_total']??0 + ]; + + $result[] = $item; + } + return $result; + } + + /** + * 获取数据 + */ + public function getData($option = []) + { + $params = $option; + $repository = new GoodsActivityReport(); + $selects = 'SUM(number) as total,SUM((original_price-price)*number) as subsidy_total,price,original_price,lanzu_order_goods.goods_id,lanzu_order_goods.name,lanzu_order_goods.cover_img,lanzu_order_main.market_id,lanzu_order.store_id'; + $orderGoodsActivity = $repository->getDataModel($selects,$params); + $list = $orderGoodsActivity->orderBy('total','desc')->groupBy('goods_id','lanzu_order_goods.name','cover_img','market_id','store_id','price','original_price')->get()->toArray(); + + return $list; + } + +} diff --git a/app/Admin/Actions/Tools/GoodsActivityExport.php b/app/Admin/Actions/Tools/GoodsActivityExport.php new file mode 100644 index 0000000..c495fa9 --- /dev/null +++ b/app/Admin/Actions/Tools/GoodsActivityExport.php @@ -0,0 +1,84 @@ +导出'; + + /** + * Handle the action request. + * + * @param Request $request + * + * @return Response + */ + public function handle(Request $request) + { + $url = '/goods_activity_export?'; + $name = $request->get('name', ''); + $marketId = $request->get('market_id',0); + $storeId = $request->get('store_id',0); + $startTime = $request->get('start_time',''); + $endTime = $request->get('end_time',''); + + if(!empty($name)){ + $url .= '&name='.$name; + } + if(!empty($marketId)){ + $url .= '&market_id='.$marketId; + } + if(!empty($storeId)){ + $url .= '&store_id='.$storeId; + } + if(!empty($startTime)){ + $url .= '&start_time='.$startTime; + } + + if(!empty($endTime)){ + $url .= '&end_time='.$endTime; + } + return $this->response() + ->success('导出中~') + ->redirect($url); + } + public function parameters() + { + return [ + 'page' => request()->input('page', 1), + 'name' => request()->input('name', ''), + 'market_id' => request()->input('market_id',0), + 'store_id' => request()->input('store_id',0), + 'start_time' => request()->input('start_time',''), + 'end_time' => request()->input('end_time',''), + ]; + } + /** + * @return string|array|void + */ + public function confirm() + { + return '确定导出数据吗?'; + } + + /** + * @param Model|Authenticatable|HasPermissions|null $user + * + * @return bool + */ + protected function authorize($user): bool + { + return true; + } +} diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php index b0aaa4e..77959a4 100644 --- a/app/Admin/Controllers/v3/GoodsActivityReportController.php +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -3,7 +3,8 @@ namespace App\Admin\Controllers\v3; use App\Admin\Actions\Grid\v3\DataReportOption; - +use App\Admin\Actions\Tools\GoodsActivityExport; +use App\Admin\Common\Auth; use App\Admin\Repositories\v3\GoodsActivityReport; use App\Admin\Widgets\Charts\OrderGoodsActivityCountChart; use App\Admin\Widgets\Charts\OrderGoodsActivityMarketChart; @@ -17,13 +18,16 @@ use Dcat\Admin\Grid\Filter; use Dcat\Admin\Layout\Content; use Dcat\Admin\Layout\Row; use Dcat\Admin\Widgets\Card; +use Illuminate\Http\Request; +use Maatwebsite\Excel\Facades\Excel; class GoodsActivityReportController extends AdminController { protected $GoodsActivityReport = null; + protected $marketId = 0; + protected $newParams = []; public function __construct() { - $this->GoodsActivityReport = new GoodsActivityReport(); } /** @@ -33,10 +37,15 @@ class GoodsActivityReportController extends AdminController */ protected function grid() { - return Grid::make($this->GoodsActivityReport, function (Grid $grid) { - - $marketList = MarketModel::getMarketArray(); - $storeList = StoreModel::getStoreArray(); + + return Grid::make(new GoodsActivityReport($this->newParams), function (Grid $grid) { + if($this->marketId){ + $marketList = MarketModel::getMarketArray([['id','=',$this->marketId]]); + $storeList = StoreModel::getStoreArray([['market_id','=',$this->marketId]]); + }else{ + $marketList = MarketModel::getMarketArray(); + $storeList = StoreModel::getStoreArray(); + } $grid->column('goods_id')->sortable(); $grid->column('cover_img')->image('',50); @@ -44,11 +53,11 @@ class GoodsActivityReportController extends AdminController $grid->column('market_id')->display(function($marketId){ $item = MarketModel::getMarketInfo($marketId,'name'); - return empty($item) ? '' : $item->name; + return $item->name ?? ''; }); $grid->column('store_id')->display(function($storeId){ $item = StoreModel::getStoreInfo($storeId,'name'); - return empty($item) ? '' : $item->name; + return $item->name ?? ''; })->width('12%'); $grid->column('price'); $grid->column('original_price'); @@ -61,7 +70,9 @@ class GoodsActivityReportController extends AdminController $filter->equal('start_time','开始时间')->date()->width(2); $filter->equal('end_time','结束时间')->date()->width(2); $filter->equal('name','商品名称')->width(3); - $filter->equal('market_id','市场')->select($marketList)->width(2); + if(!$this->marketId){ + $filter->equal('market_id','市场')->select($marketList)->width(2); + } $filter->equal('store_id','店铺')->select($storeList)->width(3); }); @@ -71,7 +82,8 @@ class GoodsActivityReportController extends AdminController new DataReportOption('this_week','goods_activity_report','本周'), new DataReportOption('last_week','goods_activity_report','上周'), new DataReportOption('this_month','goods_activity_report','本月'), - new DataReportOption('last_month','goods_activity_report','上月') + new DataReportOption('last_month','goods_activity_report','上月'), + new GoodsActivityExport() ]); // 每页1条 @@ -97,6 +109,10 @@ class GoodsActivityReportController extends AdminController */ public function index(Content $content) { + $this->marketId = Auth::getMarket(); + if($this->marketId){ + $this->newParams = ['market_id'=>$this->marketId]; + } return $content->title('活动商品统计') ->body(function(Row $row){ // $row->column(2,function (Column $column){ @@ -113,12 +129,35 @@ class GoodsActivityReportController extends AdminController // $card->style('background-color:#4e9876'); // $column->row($card); // }); - $row->column(4,new OrderGoodsActivityTotalChart()); - $row->column(4,new OrderGoodsActivityCountChart()); - $row->column(4,new OrderGoodsActivityMarketChart()); + $row->column(4,new OrderGoodsActivityTotalChart($this->newParams)); + $row->column(4,new OrderGoodsActivityCountChart($this->newParams)); + $row->column(4,new OrderGoodsActivityMarketChart($this->newParams)); }) ->body(function(Row $row){ $row->column(12,$this->grid()); }); } + + /** + * 数据导出 + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + */ + public function export(Request $request) + { + $params = [ + 'page' => request()->input('page', 1), + 'name' => request()->input('name', ''), + 'market_id' => request()->input('market_id',0), + 'store_id' => request()->input('store_id',0), + 'start_time' => request()->input('start_time',''), + 'end_time' => request()->input('end_time',''), + ]; + + $name = date('Y-m-d-His',time()); + $data = new \App\Admin\Actions\Exporter\GoodsActivitySales($params); + if(empty($data)){ + return $this->error('没有数据!'); + } + return Excel::download($data, $name.'.xlsx'); + } } diff --git a/app/Admin/Repositories/v3/GoodsActivityReport.php b/app/Admin/Repositories/v3/GoodsActivityReport.php index 0679da9..859f023 100644 --- a/app/Admin/Repositories/v3/GoodsActivityReport.php +++ b/app/Admin/Repositories/v3/GoodsActivityReport.php @@ -9,7 +9,7 @@ use Illuminate\Support\Facades\DB; class GoodsActivityReport extends EloquentRepository { - public $data = []; + public $params = []; /** * Model. * @@ -17,6 +17,11 @@ class GoodsActivityReport extends EloquentRepository */ protected $eloquentClass = Model::class; + public function __construct($params = []) + { + $this->params = $params; + } + /** * 获取统计列表数据 */ @@ -27,8 +32,13 @@ class GoodsActivityReport extends EloquentRepository // 获取每页显示行数 $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 = 'SUM(number) as total,SUM((original_price-price)*number) as subsidy_total,price,original_price,lanzu_order_goods.goods_id,lanzu_order_goods.name,lanzu_order_goods.cover_img,lanzu_order_main.market_id,lanzu_order.store_id'; - $orderGoodsActivity = $this->getDataModel($selects); + $orderGoodsActivity = $this->getDataModel($selects,$where); $list = $orderGoodsActivity->orderBy('total','desc')->groupBy('goods_id','lanzu_order_goods.name','cover_img','market_id','store_id','price','original_price')->paginate($perPage); $list = $list->toArray(); diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php index 7abf935..943124b 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php @@ -7,6 +7,7 @@ use Dcat\Admin\Admin; use Dcat\Admin\Support\JavaScript; use Dcat\Admin\Widgets\Metrics\Line; use Illuminate\Http\Request; +use App\Admin\Common\Auth; class OrderGoodsActivityCountChart extends Line { @@ -22,7 +23,7 @@ class OrderGoodsActivityCountChart extends Line public function __construct($data = []) { - $this->GoodsActivityReport = new GoodsActivityReport(); + $this->GoodsActivityReport = new GoodsActivityReport($data); parent::__construct(); } @@ -109,10 +110,11 @@ class OrderGoodsActivityCountChart extends Line */ public function parameters(): array { + $this->marketId = Auth::getMarket(); return [ 'page' => request()->input('page', 1), 'name' => request()->input('name', ''), - 'market_id' => request()->input('market_id',0), + 'market_id' => $this->marketId ? $this->marketId : request()->input('market_id',0), 'store_id' => request()->input('store_id',0), 'start_time' => request()->input('start_time',''), 'end_time' => request()->input('end_time',''), diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php index a6d6916..570ab8c 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php @@ -2,6 +2,7 @@ namespace App\Admin\Widgets\Charts; +use App\Admin\Common\Auth; use App\Admin\Repositories\v3\GoodsActivityReport; use Dcat\Admin\Widgets\Metrics\Donut; use Illuminate\Http\Request; @@ -22,7 +23,7 @@ class OrderGoodsActivityMarketChart extends Donut public function __construct($data = []) { - $this->GoodsActivityReport = new GoodsActivityReport(); + $this->GoodsActivityReport = new GoodsActivityReport($data); parent::__construct(); } @@ -83,10 +84,11 @@ class OrderGoodsActivityMarketChart extends Donut */ public function parameters(): array { + $this->marketId = Auth::getMarket(); return [ 'page' => request()->input('page', 1), 'name' => request()->input('name', ''), - 'market_id' => request()->input('market_id',0), + 'market_id' => $this->marketId ? $this->marketId : request()->input('market_id',0), 'store_id' => request()->input('store_id',0), 'start_time' => request()->input('start_time',''), 'end_time' => request()->input('end_time',''), diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php index e3e14e1..e99bd4f 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php @@ -2,6 +2,7 @@ namespace App\Admin\Widgets\Charts; +use App\Admin\Common\Auth; use App\Admin\Repositories\v3\GoodsActivityReport; use Dcat\Admin\Admin; use Dcat\Admin\Support\JavaScript; @@ -22,7 +23,7 @@ class OrderGoodsActivityTotalChart extends Bar public function __construct($data = []) { - $this->GoodsActivityReport = new GoodsActivityReport(); + $this->GoodsActivityReport = new GoodsActivityReport($data); parent::__construct(); } @@ -86,13 +87,11 @@ class OrderGoodsActivityTotalChart extends Bar $this->total['number_total'] = $total; } } - - $data = $this->data; $categories = $this->categories; $chartData = [ [ 'name' => '销量', - 'data' => $data, + 'data' => $this->data, ] ]; $this->withContent($this->total); @@ -107,10 +106,11 @@ class OrderGoodsActivityTotalChart extends Bar */ public function parameters(): array { + $this->marketId = Auth::getMarket(); return [ 'page' => request()->input('page', 1), 'name' => request()->input('name', ''), - 'market_id' => request()->input('market_id',0), + 'market_id' => $this->marketId ? $this->marketId : request()->input('market_id',0), 'store_id' => request()->input('store_id',0), 'start_time' => request()->input('start_time',''), 'end_time' => request()->input('end_time',''), diff --git a/app/Admin/routes.php b/app/Admin/routes.php index 52a25ff..d303aa3 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -89,5 +89,6 @@ Route::group([ $router->resource('/order_report', 'v3\OrderReportController'); // 活动商品统计 $router->any('/goods_activity_report', 'v3\GoodsActivityReportController@index'); + $router->any('/goods_activity_export', 'v3\GoodsActivityReportController@export'); }); From c785440755f2023056973ba24da59d331d4a97c9 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Fri, 23 Oct 2020 16:31:51 +0800 Subject: [PATCH 13/16] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81--?= =?UTF-8?q?=E6=9D=83=E9=99=90=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/GoodsActivityReportController.php | 35 ++++++++++++------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php index 77959a4..d1ca7b7 100644 --- a/app/Admin/Controllers/v3/GoodsActivityReportController.php +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -24,8 +24,10 @@ use Maatwebsite\Excel\Facades\Excel; class GoodsActivityReportController extends AdminController { protected $GoodsActivityReport = null; - protected $marketId = 0; - protected $newParams = []; + public $marketId = 0; + public $newParams = []; + public $marketList = []; + public $storeList = []; public function __construct() { } @@ -39,14 +41,8 @@ class GoodsActivityReportController extends AdminController { return Grid::make(new GoodsActivityReport($this->newParams), function (Grid $grid) { - if($this->marketId){ - $marketList = MarketModel::getMarketArray([['id','=',$this->marketId]]); - $storeList = StoreModel::getStoreArray([['market_id','=',$this->marketId]]); - }else{ - $marketList = MarketModel::getMarketArray(); - $storeList = StoreModel::getStoreArray(); - } - + $marketList = $this->marketList; + $storeList = $this->storeList; $grid->column('goods_id')->sortable(); $grid->column('cover_img')->image('',50); $grid->column('name','商品名称'); @@ -113,6 +109,14 @@ class GoodsActivityReportController extends AdminController if($this->marketId){ $this->newParams = ['market_id'=>$this->marketId]; } + if($this->marketId){ + $this->marketList = MarketModel::getMarketArray([['id','=',$this->marketId]]); + $this->storeList = StoreModel::getStoreArray([['market_id','=',$this->marketId]]); + }else{ + $this->marketList = MarketModel::getMarketArray(); + $this->storeList = StoreModel::getStoreArray(); + } + return $content->title('活动商品统计') ->body(function(Row $row){ // $row->column(2,function (Column $column){ @@ -129,9 +133,14 @@ class GoodsActivityReportController extends AdminController // $card->style('background-color:#4e9876'); // $column->row($card); // }); - $row->column(4,new OrderGoodsActivityTotalChart($this->newParams)); - $row->column(4,new OrderGoodsActivityCountChart($this->newParams)); - $row->column(4,new OrderGoodsActivityMarketChart($this->newParams)); + $newParams = [ + 'market_id'=>$this->marketId, + 'data' => [], + 'markets' => $this->marketList + ]; + $row->column(4,new OrderGoodsActivityTotalChart($newParams)); + $row->column(4,new OrderGoodsActivityCountChart($newParams)); + $row->column(4,new OrderGoodsActivityMarketChart($newParams)); }) ->body(function(Row $row){ $row->column(12,$this->grid()); From 73349d10065ea340412733d4c918a726946f1c92 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Fri, 23 Oct 2020 17:26:38 +0800 Subject: [PATCH 14/16] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81--?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/GoodsActivityReportController.php | 25 +++++++---- .../Charts/OrderGoodsActivityCountChart.php | 34 ++++++++++++-- .../Charts/OrderGoodsActivityMarketChart.php | 45 ++++++++++++++----- .../Charts/OrderGoodsActivityTotalChart.php | 32 +++++++++++-- 4 files changed, 109 insertions(+), 27 deletions(-) diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php index d1ca7b7..9c019a6 100644 --- a/app/Admin/Controllers/v3/GoodsActivityReportController.php +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -40,7 +40,7 @@ class GoodsActivityReportController extends AdminController protected function grid() { - return Grid::make(new GoodsActivityReport($this->newParams), function (Grid $grid) { + return Grid::make($this->GoodsActivityReport, function (Grid $grid) { $marketList = $this->marketList; $storeList = $this->storeList; $grid->column('goods_id')->sortable(); @@ -106,13 +106,14 @@ class GoodsActivityReportController extends AdminController public function index(Content $content) { $this->marketId = Auth::getMarket(); + if($this->marketId){ $this->newParams = ['market_id'=>$this->marketId]; - } - if($this->marketId){ + $this->GoodsActivityReport = new GoodsActivityReport($this->newParams); $this->marketList = MarketModel::getMarketArray([['id','=',$this->marketId]]); $this->storeList = StoreModel::getStoreArray([['market_id','=',$this->marketId]]); }else{ + $this->GoodsActivityReport = new GoodsActivityReport(); $this->marketList = MarketModel::getMarketArray(); $this->storeList = StoreModel::getStoreArray(); } @@ -133,14 +134,20 @@ class GoodsActivityReportController extends AdminController // $card->style('background-color:#4e9876'); // $column->row($card); // }); - $newParams = [ - 'market_id'=>$this->marketId, - 'data' => [], + $marketData = $this->GoodsActivityReport->getMarketData($this->newParams); + $totalData = $this->GoodsActivityReport->getCountData($this->newParams); + + $totalParams = [ + 'list' => $totalData, + ]; + $marketParams = [ + 'list' => $marketData, 'markets' => $this->marketList ]; - $row->column(4,new OrderGoodsActivityTotalChart($newParams)); - $row->column(4,new OrderGoodsActivityCountChart($newParams)); - $row->column(4,new OrderGoodsActivityMarketChart($newParams)); + + $row->column(4,new OrderGoodsActivityTotalChart($totalParams)); + $row->column(4,new OrderGoodsActivityCountChart($totalParams)); + $row->column(4,new OrderGoodsActivityMarketChart($marketParams)); }) ->body(function(Row $row){ $row->column(12,$this->grid()); diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php index 943124b..c3b4a9a 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php @@ -21,11 +21,35 @@ class OrderGoodsActivityCountChart extends Line protected $GoodsActivityReport = null; protected $showNumber = 7; - public function __construct($data = []) + public function __construct($params = []) { - $this->GoodsActivityReport = new GoodsActivityReport($data); - parent::__construct(); + + $data = $params['list'] ?? []; + + if(!empty($data) && is_array($data)){ + $subsidyTotal = 0; + foreach($data as $key => $value){ + if($key < $this->showNumber){ + $this->data[] = $value['subsidy_total']; + $this->categories[] = $value['dtime']; + } + $subsidyTotal += $value['subsidy_total']; + } + $this->total['subsidy_total'] = $subsidyTotal; + } + + $data = $this->data; + $categories = $this->categories; + $chartData = [ + [ + 'name' => '金额', + 'data' => $data, + ] + ]; + $this->withContent($this->total); + $this->withChart($chartData); + $this->withCategories($categories); } protected function init() @@ -69,8 +93,10 @@ class OrderGoodsActivityCountChart extends Line * @param Request $request * @return mixed|void */ - public function handle(Request $request) + public function handleBar(Request $request) { + // $this->GoodsActivityReport = new GoodsActivityReport($data); + // 数据查询逻辑 // 分页的时候不重复查询数据 $currentPage = request()->input('page', 1); diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php index 570ab8c..8532607 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php @@ -21,11 +21,32 @@ class OrderGoodsActivityMarketChart extends Donut protected $GoodsActivityReport = null; protected $color = ['#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B', '#2b908f', '#f9a3a4', '#90ee7e', '#f48024', '#69d2e7']; - public function __construct($data = []) + public function __construct($params = []) { - $this->GoodsActivityReport = new GoodsActivityReport($data); - parent::__construct(); + + // $params = $this->parameters($params); + + $data = $params['list'] ?? []; + $market = $params['markets'] ?? []; + + if(!empty($data) && is_array($data)){ + $total = 0; + foreach($data as $key => $value){ + $this->data[] = (int)$value['total']; + $this->labels[] = $market[$value['market_id']]??'未知'; + $this->colors[] = $this->color[$key]; + $total += $value['total']; + } + $this->total['number_total'] = $total; + } + + $this->chartLabels($this->labels); + $this->chartColors($this->colors); + // 数据查询逻辑 + $data = $this->data; + $this->withContent($data); + $this->withChart($data); } protected function init() @@ -36,11 +57,6 @@ class OrderGoodsActivityMarketChart extends Donut $this->subTitle('各市场销售量的占比图'); $this->chartHeight(170); $this->chartMarginTop(20); - // 设置下拉菜单 - // $this->dropdown([]); - - $this->chartLabels($this->labels); - $this->chartColors($this->colors); } /** @@ -50,8 +66,16 @@ class OrderGoodsActivityMarketChart extends Donut * @param Request $request * @return mixed|void */ - public function handle(Request $request) + public function handleBar(Request $request) { + // $this->GoodsActivityReport = new GoodsActivityReport($params); + // 分页的时候不重复查询数据 + // $currentPage = $params['page'] ?? 1; + // if($currentPage == 1){ + // $data = $this->GoodsActivityReport->getMarketData($params); + // $market = MarketModel::getMarketArray(); + // }else{ + // } // 分页的时候不重复查询数据 $currentPage = $request->get('page'); if($currentPage == 1){ @@ -82,7 +106,7 @@ class OrderGoodsActivityMarketChart extends Donut * * @return array */ - public function parameters(): array + public function parameters($data = []): array { $this->marketId = Auth::getMarket(); return [ @@ -92,6 +116,7 @@ class OrderGoodsActivityMarketChart extends Donut 'store_id' => request()->input('store_id',0), 'start_time' => request()->input('start_time',''), 'end_time' => request()->input('end_time',''), + 'data' => $data ]; } diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php index e99bd4f..5af62b3 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php @@ -21,11 +21,34 @@ class OrderGoodsActivityTotalChart extends Bar protected $GoodsActivityReport = null; protected $showNumber = 7; - public function __construct($data = []) + public function __construct($params = []) { - $this->GoodsActivityReport = new GoodsActivityReport($data); - parent::__construct(); + + $data = $params['list'] ?? []; + + if(!empty($data) && is_array($data)){ + $total = 0; + foreach($data as $key => $value){ + if($key < $this->showNumber){ + $this->data[] = $value['total']; + $this->categories[] = $value['dtime']; + } + $total += $value['total']; + } + $this->total['number_total'] = $total; + } + + $categories = $this->categories; + $chartData = [ + [ + 'name' => '销量', + 'data' => $this->data, + ] + ]; + $this->withContent($this->total); + $this->withChart($chartData); + $this->withCategories($categories); } protected function init() @@ -67,8 +90,9 @@ class OrderGoodsActivityTotalChart extends Bar * @param Request $request * @return mixed|void */ - public function handle(Request $request) + public function handleBar(Request $request) { + // $this->GoodsActivityReport = new GoodsActivityReport($data); // 数据查询逻辑 // 分页的时候不重复查询数据 $currentPage = request()->input('page', 1); From 9fc86228b280e4fead2a4199bdaa5b6b580a8215 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Fri, 23 Oct 2020 17:43:38 +0800 Subject: [PATCH 15/16] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81--?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=EF=BC=8C=E4=BC=98=E5=8C=96=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/GoodsActivityReportController.php | 4 +-- .../Repositories/v3/GoodsActivityReport.php | 2 +- .../Charts/OrderGoodsActivityCountChart.php | 27 ++++++++++--------- .../Charts/OrderGoodsActivityTotalChart.php | 16 ++++++----- 4 files changed, 26 insertions(+), 23 deletions(-) diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php index 9c019a6..ead085f 100644 --- a/app/Admin/Controllers/v3/GoodsActivityReportController.php +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -136,7 +136,7 @@ class GoodsActivityReportController extends AdminController // }); $marketData = $this->GoodsActivityReport->getMarketData($this->newParams); $totalData = $this->GoodsActivityReport->getCountData($this->newParams); - + $totalParams = [ 'list' => $totalData, ]; @@ -144,7 +144,7 @@ class GoodsActivityReportController extends AdminController 'list' => $marketData, 'markets' => $this->marketList ]; - + $row->column(4,new OrderGoodsActivityTotalChart($totalParams)); $row->column(4,new OrderGoodsActivityCountChart($totalParams)); $row->column(4,new OrderGoodsActivityMarketChart($marketParams)); diff --git a/app/Admin/Repositories/v3/GoodsActivityReport.php b/app/Admin/Repositories/v3/GoodsActivityReport.php index 859f023..47d1e6f 100644 --- a/app/Admin/Repositories/v3/GoodsActivityReport.php +++ b/app/Admin/Repositories/v3/GoodsActivityReport.php @@ -109,7 +109,7 @@ class GoodsActivityReport extends EloquentRepository { $selects = "SUM(lanzu_order_goods.number) as total,SUM((original_price-price)*number) as subsidy_total,FROM_UNIXTIME(lanzu_order_goods.created_at,'%Y-%m-%d') as dtime"; $orderGoodsActivity = $this->getDataModel($selects,$params); - $total = $orderGoodsActivity->groupBy('dtime')->get()->toArray(); + $total = $orderGoodsActivity->orderBy('dtime','asc')->groupBy('dtime')->get()->toArray(); return $total ?? []; } diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php index c3b4a9a..c7e9147 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php @@ -18,18 +18,20 @@ class OrderGoodsActivityCountChart extends Line protected $data = []; protected $total = []; protected $valueData = []; + protected $chartData = []; protected $GoodsActivityReport = null; protected $showNumber = 7; public function __construct($params = []) { parent::__construct(); - + $data = $params['list'] ?? []; - + if(!empty($data) && is_array($data)){ $subsidyTotal = 0; foreach($data as $key => $value){ + if($key < $this->showNumber){ $this->data[] = $value['subsidy_total']; $this->categories[] = $value['dtime']; @@ -39,22 +41,13 @@ class OrderGoodsActivityCountChart extends Line $this->total['subsidy_total'] = $subsidyTotal; } - $data = $this->data; - $categories = $this->categories; - $chartData = [ + $this->chartData = [ [ 'name' => '金额', - 'data' => $data, + 'data' => $this->data, ] ]; - $this->withContent($this->total); - $this->withChart($chartData); - $this->withCategories($categories); - } - protected function init() - { - parent::init(); $color = Admin::color(); // 设置标题 $this->title('总补贴金额(元)'); @@ -84,6 +77,14 @@ class OrderGoodsActivityCountChart extends Line 'xaxis.categories', $this->categories ); + $this->withContent($this->total); + $this->withChart($this->chartData); + $this->withCategories($this->categories); + } + + protected function init() + { + parent::init(); } /** diff --git a/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php b/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php index 5af62b3..ad664c1 100644 --- a/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php +++ b/app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php @@ -46,14 +46,7 @@ class OrderGoodsActivityTotalChart extends Bar 'data' => $this->data, ] ]; - $this->withContent($this->total); - $this->withChart($chartData); - $this->withCategories($categories); - } - protected function init() - { - parent::init(); $color = Admin::color(); // 设置标题 $this->title('销售总数量(单)'); @@ -81,6 +74,15 @@ class OrderGoodsActivityTotalChart extends Bar 'xaxis.categories', $this->categories ); + + $this->withContent($this->total); + $this->withChart($chartData); + $this->withCategories($categories); + } + + protected function init() + { + parent::init(); } /** From d75bdd90a3553aee7756d230d6c3caa8ce43867b Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Fri, 23 Oct 2020 17:50:45 +0800 Subject: [PATCH 16/16] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81--=20?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1-=E5=AF=BC=E5=87=BA=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Controllers/v3/GoodsActivityReportController.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/Admin/Controllers/v3/GoodsActivityReportController.php b/app/Admin/Controllers/v3/GoodsActivityReportController.php index ead085f..0b5241a 100644 --- a/app/Admin/Controllers/v3/GoodsActivityReportController.php +++ b/app/Admin/Controllers/v3/GoodsActivityReportController.php @@ -160,15 +160,16 @@ class GoodsActivityReportController extends AdminController */ public function export(Request $request) { + $this->marketId = Auth::getMarket(); $params = [ 'page' => request()->input('page', 1), 'name' => request()->input('name', ''), - 'market_id' => request()->input('market_id',0), + 'market_id' => $this->marketId ? $this->marketId : request()->input('market_id',0), 'store_id' => request()->input('store_id',0), 'start_time' => request()->input('start_time',''), 'end_time' => request()->input('end_time',''), ]; - + $name = date('Y-m-d-His',time()); $data = new \App\Admin\Actions\Exporter\GoodsActivitySales($params); if(empty($data)){