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

96 lines
3.7 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 Illuminate\Support\Facades\DB;
  7. use App\Models\ImsCjdcOrder as orderModel;
  8. use App\Models\ImsCjdcOrderMain as orderMainModel;
  9. use App\Models\v3\Market as MarketModel;
  10. use App\Models\StoreAccount as StoreAccountModel;
  11. use App\Models\v3\Store as StoreModel;
  12. use App\Models\v3\User as UserModel;
  13. class OrderReport extends EloquentRepository
  14. {
  15. /**
  16. * Model.
  17. *
  18. * @var string
  19. */
  20. protected $eloquentClass = Model::class;
  21. /**
  22. * 获取统计列表数据
  23. * 订单 用户
  24. * 订单总金额 现存用户总数
  25. * 新用户补贴金额 新增用户总数
  26. * 商户首单补贴金额
  27. */
  28. public function get(GridModel $model)
  29. {
  30. $this->setSort($model);
  31. $this->setPaginate($model);
  32. $marketId = request()->input('market_id');
  33. $startTime = request()->input('start_time');
  34. $endTime = request()->input('end_time');
  35. $orderMain = orderMainModel::select(DB::raw('COUNT(id) AS total_num, SUM(money) AS total_money'))->whereIn('state',[4,5,10]);
  36. $storeNewUser = StoreAccountModel::select(DB::raw("SUM( CASE WHEN note = '新用户下单成功,平台奖励' THEN 1 ELSE 0 END ) AS new_add_total, SUM( CASE WHEN note = '新用户下单成功,平台奖励' THEN money ELSE 0 END ) AS new_user_total,SUM( CASE WHEN note = '用户下单成功,平台奖励' THEN money ELSE 0 END ) AS store_total"));
  37. $newUser = UserModel::select(DB::raw('count(id) AS total'));
  38. if($marketId){
  39. $orderMain->where('market_id',$marketId);
  40. // 查询这个市场下的店铺id
  41. $storeIds = StoreModel::where('market_id',$marketId)->pluck('id');
  42. $storeNewUser->whereIn('store_id',$storeIds);
  43. }
  44. if($startTime){
  45. $orderMain->where([['created_at','>=',strtotime($startTime)]]);
  46. $storeNewUser->where([['time','>=',$startTime]]);
  47. $newUser->where([['created_at','>=',strtotime($startTime)]]);
  48. }
  49. if($endTime){
  50. $orderMain->where([['created_at','<=',strtotime($endTime)]]);
  51. $storeNewUser->where([['time','<=',$endTime]]);
  52. $newUser->where([['created_at','<=',strtotime($endTime)]]);
  53. }
  54. if(empty($startTime) && empty($endTime)){
  55. $time = date('Y-m-d',time());
  56. $todayStart = $time.'00:00:00';
  57. $todayEnd = $time.'23:59:59';
  58. $orderMain->where([['created_at','>=',strtotime($todayStart)]]);
  59. $storeNewUser->where([['time','>=',$todayStart]]);
  60. $newUser->where([['created_at','>=',strtotime($todayStart)]]);
  61. $orderMain->where([['created_at','<=',strtotime($todayEnd)]]);
  62. $storeNewUser->where([['time','<=',$todayEnd]]);
  63. $newUser->where([['created_at','<=',strtotime($todayEnd)]]);
  64. }
  65. // 订单总额
  66. $orderReport = $orderMain->get()->toArray();//dd($orderReport);
  67. // 总补贴金额
  68. $storeNewUser = $storeNewUser->get();
  69. // 总用户
  70. $userTotal = $newUser->get();
  71. $query = [
  72. 'order_total_num' => $orderReport['total_num'],
  73. 'order_total_money' => $orderReport['total_money'],
  74. 'new_user_total_money' => $storeNewUser['new_user_total'],
  75. 'store_user_total_money' => $storeNewUser['store_total'],
  76. 'new_add_user' => $userTotal['new_add_total'],
  77. 'user_total' => $newUser['total'],
  78. ];
  79. return $query;
  80. }
  81. }