RechargeOrderController.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Filters\RechargeOrderFilter;
  4. use App\Http\Resources\RechargeOrderResource;
  5. use App\Models\AdminMerchant;
  6. use App\Models\AdminUser;
  7. use App\Models\RechargeOrder;
  8. use App\Utils\Admin;
  9. use Carbon\Carbon;
  10. use Illuminate\Http\Request;
  11. use App\Http\Controllers\Controller;
  12. class RechargeOrderController extends Controller
  13. {
  14. /**
  15. * index
  16. *
  17. * @param Request $request
  18. * @param RechargeOrderFilter $rechargeOrderFilter
  19. * @return \Illuminate\Http\JsonResponse
  20. * @author Fx
  21. *
  22. */
  23. public function index(Request $request, RechargeOrderFilter $rechargeOrderFilter)
  24. {
  25. //
  26. $rechargeOrder = RechargeOrder::query()->filter($rechargeOrderFilter)
  27. ->where(AdminMerchant::getMerchantWhere())->with(['areas', 'users'])->orderByDesc('id');
  28. $admin_id = Admin::user()->id;
  29. $area_ids = AdminUser::getAreaIdsByAdminId($admin_id);
  30. $rechargeOrder = $rechargeOrder->where(function ($q) use ($area_ids) {
  31. $q->whereIn('area_id', $area_ids)->orWhere('area_id', 0);
  32. });
  33. $rechargeOrder = $request->get('all') ? $rechargeOrder->get() : $rechargeOrder->paginate();
  34. return $this->ok(RechargeOrderResource::collection($rechargeOrder));
  35. }
  36. /**
  37. * Show the form for creating a new resource.
  38. *
  39. * @return \Illuminate\Http\Response
  40. */
  41. public function create()
  42. {
  43. //
  44. }
  45. /**
  46. * Store a newly created resource in storage.
  47. *
  48. * @param \Illuminate\Http\Request $request
  49. * @return \Illuminate\Http\Response
  50. */
  51. public function store(Request $request)
  52. {
  53. //
  54. }
  55. /**
  56. * Display the specified resource.
  57. *
  58. * @param int $id
  59. * @return \Illuminate\Http\Response
  60. */
  61. public function show($id)
  62. {
  63. //
  64. }
  65. /**
  66. * Show the form for editing the specified resource.
  67. *
  68. * @param int $id
  69. * @return \Illuminate\Http\Response
  70. */
  71. public function edit($id)
  72. {
  73. //
  74. }
  75. /**
  76. * Update the specified resource in storage.
  77. *
  78. * @param \Illuminate\Http\Request $request
  79. * @param int $id
  80. * @return \Illuminate\Http\Response
  81. */
  82. public function update(Request $request, $id)
  83. {
  84. //
  85. }
  86. /**
  87. * Remove the specified resource from storage.
  88. *
  89. * @param int $id
  90. * @return \Illuminate\Http\Response
  91. */
  92. public function destroy($id)
  93. {
  94. //
  95. }
  96. /**
  97. * 统计充值 当日 当月 statisticsRecharge
  98. *
  99. * @param RechargeOrderFilter $rechargeOrderFilter
  100. * @return \Illuminate\Http\JsonResponse
  101. * @author Fx
  102. *
  103. */
  104. public function statisticsRecharge(Request $request, RechargeOrderFilter $rechargeOrderFilter)
  105. {
  106. $merchant_id = $request->get('merchant_id') ?? '';
  107. $area_id = $request->get('area_id') ?? '';
  108. // 本日充值
  109. $todayRechargeModel = RechargeOrder::query()->filter($rechargeOrderFilter)
  110. ->where('status', RechargeOrder::PAY_STATUS_OK)
  111. ->where(AdminMerchant::getMerchantWhere())
  112. ->where('created_at', '>', Carbon::today());
  113. if ($merchant_id) $todayRechargeModel->where('merchant_id', $merchant_id);
  114. if ($area_id) $todayRechargeModel->where('area_id', $area_id);
  115. $todayRecharge = $todayRechargeModel->sum('pay_money');
  116. // 本月充值
  117. $first_day = date('Y-m-01', strtotime(Carbon::today())); //每月一号
  118. $thisMonthRechargeModel = RechargeOrder::query()->filter($rechargeOrderFilter)
  119. ->where('status', RechargeOrder::PAY_STATUS_OK)
  120. ->where(AdminMerchant::getMerchantWhere())
  121. ->where('created_at', '>', $first_day);
  122. if ($merchant_id) $thisMonthRechargeModel->where('merchant_id', $merchant_id);
  123. if ($area_id) $thisMonthRechargeModel->where('area_id', $area_id);
  124. $thisMonthRecharge = $thisMonthRechargeModel->sum('pay_money');
  125. return $this->ok([
  126. 'todayRecharge' => $todayRecharge,
  127. 'thisMonthRecharge' => $thisMonthRecharge
  128. ]);
  129. }
  130. /**
  131. * 总充值 totalRecharge
  132. *
  133. * @param RechargeOrderFilter $rechargeOrderFilter
  134. * @return \Illuminate\Http\JsonResponse
  135. * @author Fx
  136. *
  137. */
  138. public function totalRecharge(RechargeOrderFilter $rechargeOrderFilter)
  139. {
  140. $totalRecharge = RechargeOrder::query()->where(AdminMerchant::getMerchantWhere())->filter($rechargeOrderFilter)
  141. ->where('status', RechargeOrder::PAY_STATUS_OK)
  142. ->sum('pay_money');
  143. return $this->ok($totalRecharge);
  144. }
  145. public function rechargeChart(Request $request, RechargeOrderFilter $rechargeOrderFilter)
  146. {
  147. $dateBetween = $request->get('dateBetween') ?? '';
  148. $merchant_id = $request->get('merchant_id') ?? '';
  149. $area_id = $request->get('area_id') ?? '';
  150. if (!empty($dateBetween)) {
  151. $deposit_statistic_date_start = Carbon::parse($dateBetween[0])->subDay()->format('Y-m-d');
  152. $deposit_statistic_date_end = Carbon::parse($dateBetween[1])->format('Y-m-d');
  153. } else {
  154. $deposit_statistic_date_start = date('Y-m-d', strtotime("-8 day"));
  155. $deposit_statistic_date_end = Carbon::today();
  156. }
  157. $chartsModel = RechargeOrder::query()->filter($rechargeOrderFilter)
  158. ->where(AdminMerchant::getMerchantWhere())
  159. ->where('created_at', '>', $deposit_statistic_date_start)
  160. ->where('created_at', '<', $deposit_statistic_date_end);
  161. if ($merchant_id) $chartsModel->where('merchant_id', $area_id);
  162. if ($area_id) $chartsModel->where('area_id', $area_id);
  163. $charts = $chartsModel->selectRaw('DATE_FORMAT(created_at,"%Y/%m/%d") as date,sum(pay_money) as value')
  164. ->groupBy('date')->get();
  165. return $this->ok($charts);
  166. }
  167. }