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

65 lines
2.5 KiB

  1. <?php
  2. namespace App\Admin\Repositories;
  3. use App\Models\storeUserReport as Model;
  4. use Dcat\Admin\Grid\Model as GridModel;
  5. use Dcat\Admin\Repositories\EloquentRepository;
  6. use App\Models\ImsCjdcOrder as orderModel;
  7. use Illuminate\Support\Facades\DB;
  8. class StoreUserReport extends EloquentRepository
  9. {
  10. /**
  11. * Model.
  12. *
  13. * @var string
  14. */
  15. protected $eloquentClass = Model::class;
  16. /**
  17. * 获取统计列表数据
  18. */
  19. public function get(GridModel $model)
  20. {
  21. $startTime = '2020-06-01';$endTime = '2020-08-01';
  22. $this->setSort($model);
  23. $this->setPaginate($model);
  24. $orderModel = new orderModel();
  25. //根据订单查询
  26. // $query = $orderModel::join('ims_cjdc_store as store','order.store_id','store.id')
  27. // ->join('ims_cjdc_user as user','order.user_id','user.id')
  28. // ->select('store_id','store.market_id','store.name as store_name','mm_user_id',DB::raw("count(distinct order.user_id) as new_user_total"))
  29. // ->whereRaw("UNIX_TIMESTAMP(pay_time) BETWEEN UNIX_TIMESTAMP(?) AND UNIX_TIMESTAMP(?)",[$startTime,$endTime])
  30. // ->whereRaw("join_time BETWEEN UNIX_TIMESTAMP(?) AND UNIX_TIMESTAMP(?)",[$startTime,$endTime])
  31. // ->groupBy('store_id')
  32. // ->orderBy('market_id','desc')
  33. // ->orderBY('new_user_total','desc');
  34. // 根据流水查询
  35. $query = $orderModel::join('ims_cjdc_store as store','order.store_id','store.id')
  36. ->join('ims_cjdc_user as user','order.user_id','user.id')
  37. ->select('store_id','store.market_id','store.name as store_name','mm_user_id',DB::raw("count(distinct order.user_id) as new_user_total"))
  38. ->whereRaw("join_time BETWEEN UNIX_TIMESTAMP(?) AND UNIX_TIMESTAMP(?)",[$startTime,$endTime])
  39. ->groupBy('store_id')
  40. ->orderBy('market_id','desc')
  41. ->orderBY('new_user_total','desc');
  42. $model->getQueries()->unique()->each(function ($value) use (&$query) {
  43. if ($value['method'] == 'paginate') {
  44. $value['arguments'][1] = $this->getGridColumns();
  45. } elseif ($value['method'] == 'get') {
  46. $value['arguments'] = [$this->getGridColumns()];
  47. }
  48. $query = call_user_func_array([$query, $value['method']], $value['arguments'] ?? []);
  49. });
  50. $query = $query->toArray();
  51. $query = $model->makePaginator($query['total'],$query['data']);
  52. return $query;
  53. }
  54. }