Browse Source

活动商品--统计优化

master
liangyuyan 5 years ago
parent
commit
73349d1006
  1. 25
      app/Admin/Controllers/v3/GoodsActivityReportController.php
  2. 34
      app/Admin/Widgets/Charts/OrderGoodsActivityCountChart.php
  3. 45
      app/Admin/Widgets/Charts/OrderGoodsActivityMarketChart.php
  4. 32
      app/Admin/Widgets/Charts/OrderGoodsActivityTotalChart.php

25
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());

34
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);

45
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
];
}

32
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);

Loading…
Cancel
Save