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',''), ]; } /**