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

139 lines
6.4 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. <?php
  2. namespace App\Admin\Repositories\v3;
  3. use App\Admin\Controllers\v3\OrderReportController;
  4. use App\Models\v3\Store as Model;
  5. use Dcat\Admin\Grid\Model as GridModel;
  6. use Dcat\Admin\Repositories\EloquentRepository;
  7. use Illuminate\Support\Facades\DB;
  8. use App\Models\ImsCjdcOrderMain as orderMainModel;
  9. use App\Models\v3\FinancialRecord as FinancialRecordModel;
  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. $marketId = request()->input('market_id');
  31. $startTime = request()->input('start_time');
  32. $endTime = request()->input('end_time');
  33. $orderMain = orderMainModel::select(DB::raw('COUNT(id) AS total_num, SUM(money) AS total_money'))->whereIn('state',[4,5,10]);
  34. // 旧商户流水
  35. $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_money,SUM( CASE WHEN note = '用户下单成功,平台奖励' THEN money ELSE 0 END ) AS store_total_money"));
  36. // 新商户流水
  37. $storeNewUserNew = FinancialRecordModel::select(DB::raw('SUM( CASE WHEN money_type = 4 THEN 1 ELSE 0 END ) AS new_add_total, SUM( CASE WHEN money_type = 4 THEN money ELSE 0 END ) AS new_user_total_money, SUM( CASE WHEN money_type = 5 THEN money ELSE 0 END ) as store_total_money '))->where([['created_at','>',strtotime('2020-09-19 00:00:00')]]);
  38. $newUser = UserModel::select(DB::raw('count(id) AS total'));
  39. if($marketId){
  40. $orderMain->where('market_id',$marketId);
  41. // 查询这个市场下的店铺id
  42. $storeIds = StoreModel::where('market_id',$marketId)->pluck('user_id','id')->toArray();
  43. $storeIdsArr = array_keys($storeIds);
  44. $userIdsArr = array_values($storeIds);
  45. $storeNewUser->whereIn('store_id',$storeIdsArr);
  46. $storeNewUserNew->whereIn('user_id',$userIdsArr)->where('user_type',5);
  47. }
  48. if($startTime){
  49. $startTime = $startTime.' 00:00:00';
  50. $orderMain->where([['created_at','>=',strtotime($startTime)]]);
  51. $storeNewUser->where([['time','>=',$startTime]]);
  52. $storeNewUserNew->where([['created_at','>=',strtotime($startTime)]]);
  53. $newUser->where([['created_at','>=',strtotime($startTime)]]);
  54. }
  55. if($endTime){
  56. $endTime = $endTime.' 23:59:59';
  57. $orderMain->where([['created_at','<=',strtotime($endTime)]]);
  58. $storeNewUser->where([['time','<=',$endTime]]);
  59. $storeNewUserNew->where([['created_at','<=',strtotime($endTime)]]);
  60. $newUser->where([['created_at','<=',strtotime($endTime)]]);
  61. }
  62. if(empty($startTime) && empty($endTime)){
  63. $time = date('Y-m-d',time());
  64. $todayStart = $time.' 00:00:00';
  65. $todayEnd = $time.' 23:59:59';
  66. $orderMain->where([['created_at','>=',strtotime($todayStart)]]);
  67. $storeNewUser->where([['time','>=',$todayStart]]);
  68. $storeNewUserNew->where([['created_at','>=',strtotime($todayStart)]]);
  69. $orderMain->where([['created_at','<=',strtotime($todayEnd)]]);
  70. $storeNewUser->where([['time','<=',$todayEnd]]);
  71. $storeNewUserNew->where([['created_at','<=',strtotime($todayEnd)]]);
  72. }
  73. // 订单总额
  74. $orderReport = $orderMain->get()->toArray();
  75. // 补贴金额
  76. $storeNewUsers = $storeNewUser->get()->toArray();
  77. $storeNewUserNews = $storeNewUserNew->get()->toArray();
  78. // 总用户
  79. $userTotal = $newUser->get()->toArray();
  80. $query = [
  81. 'order_total_num' => !empty($orderReport[0]['total_num'])?$orderReport[0]['total_num']:0,
  82. 'order_total_money' => !empty($orderReport[0]['total_money'])?$orderReport[0]['total_money']:0,
  83. 'new_user_total_money' => !empty($storeNewUsers[0]['new_user_total_money'])?$storeNewUsers[0]['new_user_total_money']:0,
  84. 'new_user_total_new_money' => !empty($storeNewUserNews[0]['new_user_total_money'])?$storeNewUserNews[0]['new_user_total_money']:0,
  85. 'store_user_total_money' => !empty($storeNewUsers[0]['store_total_money'])?$storeNewUsers[0]['store_total_money']:0,
  86. 'store_user_total_new_money' => !empty($storeNewUserNews[0]['store_total_money'])?$storeNewUserNews[0]['store_total_money']:0,
  87. 'new_add_user' => !empty($storeNewUsers[0]['new_add_total'])?$storeNewUsers[0]['new_add_total']:0,
  88. 'new_add_user_new' => !empty($storeNewUserNews[0]['new_add_total'])?$storeNewUserNews[0]['new_add_total']:0,
  89. 'user_total' => !empty($userTotal[0]['total'])?$userTotal[0]['total']:0,
  90. ];
  91. $list = [
  92. [
  93. 'key' => 'user_total',
  94. 'name' => '现存用户总数(人)',
  95. 'value' => $query['user_total']
  96. ],
  97. [
  98. 'key' => 'new_add_user',
  99. 'name' => '新增用户数(人)',
  100. 'value' => $query['new_add_user'] + $query['new_add_user_new']
  101. ],
  102. [
  103. 'key' => 'order_total_num',
  104. 'name' => '订单总额(元)',
  105. 'value' => $query['order_total_num']
  106. ],
  107. [
  108. 'key' => 'new_user_total_money',
  109. 'name' => '平台新用户补贴总额(元)',
  110. 'value' => $query['new_user_total_money'] + $query['new_user_total_new_money']
  111. ],
  112. [
  113. 'key' => 'store_user_total_money',
  114. 'name' => '店铺用户每日首单补贴(元)',
  115. 'value' => $query['store_user_total_money'] + $query['store_user_total_new_money']
  116. ]
  117. ];
  118. return $model->makePaginator(
  119. count($list),$list
  120. );
  121. }
  122. }