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

140 lines
5.3 KiB

  1. <?php
  2. namespace App\Admin\Controllers\v3;
  3. use App\Admin\Actions\Grid\v3\DataReportOption;
  4. use App\Admin\Actions\Tools\OrderDeliveryExport;
  5. use App\Admin\Common\Auth;
  6. use App\Admin\Renderable\OrderDeliveryById;
  7. use App\Admin\Repositories\v3\OrderDeliveryReport;
  8. use Dcat\Admin\Grid;
  9. use Dcat\Admin\Controllers\AdminController;
  10. use Dcat\Admin\Grid\Filter;
  11. use Illuminate\Http\Request;
  12. use Maatwebsite\Excel\Facades\Excel;
  13. use App\Models\v3\Market as MarketModel;
  14. use App\Models\ImsCjdcUser as UserModel;
  15. class ReportCommunityController extends AdminController
  16. {
  17. /**
  18. * 社区代理点统计
  19. */
  20. protected $GoodsActivityReport = null;
  21. public $marketId = 0;
  22. public $newParams = [];
  23. public $marketList = [];
  24. public $storeList = [];
  25. /**
  26. * Make a grid builder.
  27. *
  28. * @return Grid
  29. */
  30. protected function grid()
  31. {
  32. $this->marketId = Auth::getMarket();
  33. if($this->marketId){
  34. $this->newParams = ['market_id'=>$this->marketId];
  35. $builder = new OrderDeliveryReport($this->newParams);
  36. $this->marketList = MarketModel::getMarketArray([['id','=',$this->marketId]]);
  37. }else{
  38. $builder = new OrderDeliveryReport();
  39. $this->marketList = MarketModel::getMarketArray();
  40. }
  41. return Grid::make($builder, function (Grid $grid) {
  42. $marketList = $this->marketList;
  43. $grid->column('market_id','市场')->display(function($marketId) use($marketList){
  44. return $marketList[$marketId] ?? '';
  45. });
  46. $grid->column('user_id','懒ID');
  47. $grid->column('avatar','微信头像')->display(function(){
  48. $userId = $this->user_id ?? 0;
  49. $item = UserModel::select('avatar')->find($userId);
  50. return $item['avatar'] ?? '';
  51. })->image('',50);
  52. $grid->column('name','姓名');
  53. $grid->column('total_new_agent','新拓展代理点数');
  54. $grid->column('total_bound_new_user','新增绑定用户数')
  55. ->modal(function($modal){
  56. $name = $this->name;
  57. $modal->title($name.'的配送明细');
  58. $startTime = request()->input('start_time') ?? null;
  59. $endTime = request()->input('end_time') ?? null;
  60. $table = OrderDeliveryById::make(['horseman_id'=>$this->horseman_id,'start_time'=>$startTime, 'end_time'=>$endTime]);
  61. return $table;
  62. })->help('只统计2020年10月01日之后(包括10.01)的数据');
  63. $grid->column('total_add_new_user','平台新增用户数');
  64. $grid->column('total_bound_order_online','绑定用户线上订单总数');
  65. $grid->column('total_add_order_online','平台新增用户线上订单数');
  66. $grid->filter(function (Filter $filter) use($marketList) {
  67. // 更改为 panel 布局
  68. $filter->panel();
  69. $filter->equal('start_time','开始时间')->date()->width(2);
  70. $filter->equal('end_time','结束时间')->date()->width(2);
  71. $filter->equal('user_id','懒ID')->width(2);
  72. $filter->equal('name','姓名')->width(2);
  73. if(!$this->marketId){
  74. $filter->equal('market_id','市场')->select($marketList)->width(2);
  75. }
  76. });
  77. $grid->tools([
  78. new DataReportOption('today','report_community','今日'),
  79. new DataReportOption('yesterday','report_community','昨日'),
  80. new DataReportOption('this_week','report_community','本周'),
  81. new DataReportOption('last_week','report_community','上周'),
  82. new DataReportOption('this_month','report_community','本月'),
  83. new DataReportOption('last_month','report_community','上月'),
  84. new OrderDeliveryExport()
  85. ]);
  86. // 每页1条
  87. $grid->paginate(10);
  88. $grid->disableCreateButton();
  89. $grid->disableBatchActions();
  90. $grid->disableBatchDelete();
  91. $grid->toolsWithOutline();
  92. $grid->disableDeleteButton();
  93. $grid->disableEditButton();
  94. $grid->disableQuickEditButton();
  95. $grid->disableViewButton();
  96. $grid->disableActions();
  97. $grid->disableRowSelector();
  98. });
  99. }
  100. /**
  101. * 数据导出
  102. * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
  103. */
  104. public function export(Request $request)
  105. {
  106. $this->marketId = Auth::getMarket();
  107. $params = [
  108. 'horseman_id' => request()->input('horseman_id', 0),
  109. 'market_id' => $this->marketId ? $this->marketId : request()->input('market_id',0),
  110. 'user_id' => request()->input('user_id',0),
  111. 'start_time' => request()->input('start_time',''),
  112. 'end_time' => request()->input('end_time',''),
  113. ];
  114. $name = date('Y-m-d-His',time());
  115. $data = new \App\Admin\Actions\Exporter\OrderDelivery($params);
  116. if(empty($data)){
  117. return $this->error('没有数据!');
  118. }
  119. return Excel::download($data, $name.'.xlsx');
  120. }
  121. }