链街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.

87 lines
3.2 KiB

  1. <?php
  2. namespace App\Admin\Repositories\v3;
  3. use App\Models\LanzuOrderGoods as Model;
  4. use Dcat\Admin\Grid\Model as GridModel;
  5. use Dcat\Admin\Repositories\EloquentRepository;
  6. use Illuminate\Support\Facades\DB;
  7. use App\Admin\Controllers\v3\GoodsActivityController;
  8. class GoodsActivityReport extends EloquentRepository
  9. {
  10. public $data = [];
  11. /**
  12. * Model.
  13. *
  14. * @var string
  15. */
  16. protected $eloquentClass = Model::class;
  17. /**
  18. * 获取统计列表数据
  19. */
  20. public function get(GridModel $model)
  21. {
  22. // 获取当前页数
  23. $currentPage = $model->getCurrentPage();
  24. // 获取每页显示行数
  25. $perPage = $model->getPerPage();
  26. // 获取筛选参数
  27. $name = request()->input('name', '');
  28. $marketId = request()->input('market_id');
  29. $storeId = request()->input('store_id');
  30. $time = date('Y-m-d',time());
  31. $startTime = request()->input('start_time');
  32. $endTime = request()->input('end_time');
  33. $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'))
  34. ->join('lanzu_order','lanzu_order_goods.order_id','=','lanzu_order.id')
  35. ->join('lanzu_order_main','lanzu_order.order_main_id','=','lanzu_order_main.global_order_id')
  36. ->where('lanzu_order_goods.activity_type',2)
  37. ->where('lanzu_order_goods.status',1)
  38. ->whereIn('lanzu_order_main.state',[4,5,10,11])
  39. ;
  40. if($name){
  41. $orderGoodsActivity->where('lanzu_order_goods.name','like',"%$name%");
  42. }
  43. if($marketId){
  44. $orderGoodsActivity->where('market_id',$marketId);
  45. }
  46. if($storeId){
  47. $orderGoodsActivity->where('store_id',$storeId);
  48. }
  49. if($startTime){
  50. $date = $startTime;
  51. $startTime = $startTime.' 00:00:00';
  52. $orderGoodsActivity->where([['lanzu_order_goods.created_at','>=',strtotime($startTime)]]);
  53. }else{
  54. $date = '2020-06-01';
  55. }
  56. if($endTime){
  57. $date = $date.' 至 '.$endTime;
  58. $endTime = $endTime.' 23:59:59';
  59. $orderGoodsActivity->where([['lanzu_order_goods.created_at','<=',strtotime($endTime)]]);
  60. }else{
  61. $date .= ' 至 '.$time;
  62. }
  63. // if(empty($startTime) && empty($endTime)){
  64. // $date = $time;
  65. // $todayStart = $time.' 00:00:00';
  66. // $todayEnd = $time.' 23:59:59';
  67. // $orderGoodsActivity->where([['lanzu_order_goods.created_at','>=',strtotime($todayStart)]]);
  68. // $orderGoodsActivity->where([['lanzu_order_goods.created_at','<=',strtotime($todayEnd)]]);
  69. // }
  70. $list = $orderGoodsActivity->orderBy('total','desc')->groupBy('goods_id','lanzu_order_goods.name','cover_img','market_id','store_id')->paginate($perPage);
  71. $list = $list->toArray();
  72. $this->data = $list['data'] ?? [];
  73. return $model->makePaginator(
  74. $list['total'] ?? 0,$list['data'] ?? []
  75. );
  76. }
  77. }