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

59 lines
1.9 KiB

5 years ago
  1. <?php
  2. namespace App\Admin\Repositories\v3;
  3. use App\Models\v3\Store 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 OrderReport 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. $this->setSort($model);
  22. $this->setPaginate($model);
  23. /**
  24. * 订单 用户
  25. * 订单总金额 现存用户总数
  26. * 新用户补贴金额 新增用户总数
  27. * 商户首单补贴金额
  28. */
  29. $orderModel = new OrderModel();
  30. $query = $orderModel::join('ims_cjdc_store as store','ims_cjdc_store_account.store_id','store.id')
  31. ->select('store_id','store.market_id','store.name as store_name',DB::raw("count(distinct ims_cjdc_store_account.id) as new_user_total"))
  32. ->whereRaw("note = '新用户下单成功,平台奖励'")
  33. ->groupBy('store_id')
  34. ->orderBy('store.market_id','desc')
  35. ->orderBY('new_user_total','desc')
  36. ->orderBY('store_id','desc');
  37. $model->getQueries()->unique()->each(function ($value) use (&$query) {
  38. if ($value['method'] == 'paginate') {
  39. $value['arguments'][1] = $this->getGridColumns();
  40. } elseif ($value['method'] == 'get') {
  41. $value['arguments'] = [$this->getGridColumns()];
  42. }
  43. $query = call_user_func_array([$query, $value['method']], $value['arguments'] ?? []);
  44. });
  45. $query = $query->toArray();
  46. $query = $model->makePaginator($query['total'],$query['data']);
  47. return $query;
  48. }
  49. }