Home.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <?php
  2. namespace App\Http\Controllers\admin;
  3. use App\Constants\HttpStatus;
  4. use App\Http\Controllers\Controller;
  5. use App\Models\PaymentOrder;
  6. use App\Models\Recharge;
  7. use App\Models\User;
  8. use App\Models\BalanceLog;
  9. use Illuminate\Validation\ValidationException;
  10. use Exception;
  11. use Carbon\Carbon;
  12. use App\Models\Withdraw;
  13. class Home extends Controller
  14. {
  15. public function index()
  16. {
  17. try {
  18. request()->validate([
  19. 'start_date' => ['nullable', 'date_format:Y-m-d'],
  20. 'end_date' => ['nullable', 'date_format:Y-m-d', 'after_or_equal:start_date'],
  21. ]);
  22. $start = request()->input('start_date');
  23. $end = request()->input('end_date');
  24. if (empty($end)) $end = date('Y-m-d');
  25. if (empty($start)) $start = date('Y-m-d');
  26. $end = Carbon::createFromFormat('Y-m-d', $end)->addDay()->format('Y-m-d');
  27. $today = date('Y-m-d');
  28. //投注统计
  29. $query = BalanceLog::query();
  30. $query->where('type', 1)->where('change_type', 'like', '%投注');
  31. $query1 = clone $query;
  32. $bet['amount'] = (float)$query1->whereBetween('created_at', [$start, $end])->sum('amount');//投注金额
  33. $query1 = clone $query;
  34. $bet['today_amount'] = (float)$query1->whereBetween('created_at', [$today, $end])->sum('amount');//今日投注金额
  35. //投注退款统计
  36. $query = BalanceLog::query();
  37. $query->where('type', 1)->where('change_type', 'like', '%退款');
  38. $query1 = clone $query;
  39. $bet['refund_amount'] = (float)$query1->whereBetween('created_at', [$start, $end])->sum('amount');//投注退款金额
  40. $query1 = clone $query;
  41. $bet['today_refund_amount'] = (float)$query1->whereBetween('created_at', [$today, $end])->sum('amount');//今日投注退款金额
  42. //投注中奖统计
  43. $query = BalanceLog::query();
  44. $query->where('type', 1)->where('change_type', 'like', '%中奖');
  45. $query1 = clone $query;
  46. $bet['win_amount'] = (float)$query1->whereBetween('created_at', [$start, $end])->sum('amount');//投注中奖金额
  47. $query1 = clone $query;
  48. $bet['today_win_amount'] = (float)$query1->whereBetween('created_at', [$today, $end])->sum('amount');//今日投注中奖金额
  49. //余额宝统计
  50. $query = BalanceLog::query();
  51. $yuebao['in_amount'] = (float)$query->where('change_type', '余额宝转入')->whereBetween('created_at', [$start, $end])->sum('amount');//余额宝转入金额
  52. $yuebao['today_in_amount'] = (float)$query->where('change_type', '余额宝转入')->whereBetween('created_at', [$today, $end])->sum('amount');//今日余额宝转入金额
  53. $yuebao['out_amount'] = (float)$query->where('change_type', '余额宝转出')->whereBetween('created_at', [$start, $end])->sum('amount');//余额宝转出金额
  54. $yuebao['today_out_amount'] = (float)$query->where('change_type', '余额宝转出')->whereBetween('created_at', [$today, $end])->sum('amount');//今日余额宝转出金额
  55. $yuebao['interest_amount'] = (float)$query->where('change_type', '余额宝利息')->whereBetween('created_at', [$start, $end])->sum('amount');//余额宝利息
  56. $yuebao['today_interest_amount'] = (float)$query->where('change_type', '余额宝利息')->whereBetween('created_at', [$today, $end])->sum('amount');//今日余额宝利息
  57. //老用户回归返彩金额
  58. $activity['user_return'] = (float)$query->where('change_type', '老用户回归')->whereBetween('created_at', [$start, $end])->sum('amount');//老用户回归返彩金额
  59. $activity['today_user_return'] = (float)$query->where('change_type', '老用户回归')->whereBetween('created_at', [$today, $end])->sum('amount');//今日老用户回归返彩金额
  60. //即充即送返彩金额
  61. $activity['recharge_frozen'] = (float)$query->where('change_type', '即充即送')->whereBetween('created_at', [$start, $end])->sum('amount');//即充即送返彩金额
  62. $activity['today_recharge_frozen'] = (float)$query->where('change_type', '即充即送')->whereBetween('created_at', [$today, $end])->sum('amount');//今日即充即送返彩金额
  63. //充值返现金额
  64. $activity['recharge_amount'] = (float)$query->where('change_type', '充值返现')->whereBetween('created_at', [$start, $end])->sum('amount');//充值返现金额
  65. $activity['today_recharge_amount'] = (float)$query->where('change_type', '充值返现')->whereBetween('created_at', [$today, $end])->sum('amount');//今日充值返现金额
  66. //流水解冻金额
  67. $activity['unfreeze_amount'] = (float)$query->where('change_type', '流水解冻')->whereBetween('created_at', [$start, $end])->sum('amount');//流水解冻金额
  68. $activity['today_unfreeze_amount'] = (float)$query->where('change_type', '流水解冻')->whereBetween('created_at', [$today, $end])->sum('amount');//今日流水解冻金额
  69. //新增会员统计
  70. $query = User::where('from','<>',2);
  71. $totalUser = (float)$query->whereBetween('created_at', [$start, $end])->count('id');
  72. $todayUser = (float)$query->whereBetween('created_at', [$today, $end])->count('id');//今日新增会员
  73. //第三方提现统计(RMB)
  74. $query = PaymentOrder::query();
  75. $query->whereBetween('created_at', [$start, $end]);
  76. $query1 = clone $query;
  77. $totalAmount = (float)$query1->where('type', 2)->sum('amount');
  78. $query1 = clone $query;
  79. $totalPending = (float)$query1->where('type', 2)->where('status', 0)->sum('amount');//待处理
  80. $query1 = clone $query;
  81. $totalProcessing = (float)$query1->where('type', 2)->where('status', 1)->sum('amount');//处理中
  82. $query1 = clone $query;
  83. $totalSuccess = (float)$query1->where('type', 2)->where('status', 2)->sum('amount');//成功
  84. $query1 = clone $query;
  85. $totalFail = (float)$query1->where('type', 2)->where('status', 3)->sum('amount'); // 失败
  86. //第三方提现统计(RMB)今日
  87. $query = PaymentOrder::query();
  88. $query->whereBetween('created_at', [$today, $end]);
  89. $query1 = clone $query;
  90. $todayAmount = (float)$query1->where('type', 2)->sum('amount');
  91. $query1 = clone $query;
  92. $todayPending = (float)$query1->where('type', 2)->where('status', 0)->sum('amount');//待处理
  93. $query1 = clone $query;
  94. $todayProcessing = (float)$query1->where('type', 2)->where('status', 1)->sum('amount');//处理中
  95. $query1 = clone $query;
  96. $todaySuccess = (float)$query1->where('type', 2)->where('status', 2)->sum('amount');//成功
  97. $query1 = clone $query;
  98. $todayFail = (float)$query1->where('type', 2)->where('status', 3)->sum('amount'); // 失败
  99. //第三方充值统计(RMB)
  100. $query1 = clone $query;
  101. $rechargeRmbTotalAmount = (float)$query1->where('type', 1)->sum('amount');//总金额
  102. $query1 = clone $query;
  103. $rechargeRmbTotalPending = (float)$query1->where('type', 1)->where('status', 0)->sum('amount');//待处理
  104. $query1 = clone $query;
  105. $rechargeRmbTotalProcessing = (float)$query1->where('type', 1)->where('status', 1)->sum('amount');//处理中
  106. $query1 = clone $query;
  107. $rechargeRmbTotalSuccess = (float)$query1->where('type', 1)->where('status', 2)->sum('amount');//成功
  108. $query1 = clone $query;
  109. $rechargeRmbTotalFail = (float)$query1->where('type', 1)->where('status', 3)->sum('amount');//失败
  110. //第三方充值统计(RMB)今日
  111. $query1 = clone $query;
  112. $rechargeRmbTodayAmount = (float)$query1->where('type', 1)->sum('amount');//总金额
  113. $query1 = clone $query;
  114. $rechargeRmbTodayPending = (float)$query1->where('type', 1)->where('status', 0)->sum('amount');//待处理
  115. $query1 = clone $query;
  116. $rechargeRmbTodayProcessing = (float)$query1->where('type', 1)->where('status', 1)->sum('amount');//处理中
  117. $query1 = clone $query;
  118. $rechargeRmbTodaySuccess = (float)$query1->where('type', 1)->where('status', 2)->sum('amount');//成功
  119. $query1 = clone $query;
  120. $rechargeRmbTodayFail = (float)$query1->where('type', 1)->where('status', 3)->sum('amount');//失败
  121. //USDT提现统计
  122. $query = Withdraw::query();
  123. $query->whereBetween('created_at', [$start, $end]);
  124. $query1 = clone $query;
  125. $usdTotalAmount = (float)$query1->sum('amount');//总金额
  126. $query1 = clone $query;
  127. $usdTotalSuccess = (float)$query1->where('status', 1)->sum('amount');//成功
  128. $query1 = clone $query;
  129. $usdTotalFail = (float)$query1->where('status', 2)->sum('amount');//失败
  130. //USDT提现统计(今日)
  131. $query = Withdraw::query();
  132. $query->whereBetween('created_at', [$today, $end]);
  133. $query1 = clone $query;
  134. $usdTodayAmount = (float)$query1->sum('amount');//总金额
  135. $query1 = clone $query;
  136. $usdTodaySuccess = (float)$query1->where('status', 1)->sum('amount');//成功
  137. $query1 = clone $query;
  138. $usdTodayFail = (float)$query1->where('status', 2)->sum('amount');//失败
  139. //USDT提现统计(今日)
  140. $query = Withdraw::query();
  141. $query->whereBetween('created_at', [$today, $end]);
  142. $query1 = clone $query;
  143. $usdTodayAmount = (float)$query1->sum('amount');//总金额
  144. $query1 = clone $query;
  145. $usdTodaySuccess = (float)$query1->where('status', 1)->sum('amount');//成功
  146. $query1 = clone $query;
  147. $usdTodayFail = (float)$query1->where('status', 2)->sum('amount');//失败
  148. //USDT充值统计
  149. $query = Recharge::query();
  150. $query->whereBetween('created_at', [$start, $end]);
  151. $query1 = clone $query;
  152. $rechargeTotalAmount = (float)$query1->sum('amount');//总充值
  153. $query1 = clone $query;
  154. $rechargeTotalSuccess = (float)$query1->where('status', 1)->sum('amount');//成功
  155. $query1 = clone $query;
  156. $rechargeTotalFail = (float)$query1->where('status', 2)->sum('amount');//失败
  157. //USDT充值(今日)
  158. $query = Recharge::query();
  159. $query->whereBetween('created_at', [$today, $end]);
  160. $query1 = clone $query;
  161. $rechargeTodayAmount = (float)$query1->sum('amount');//总充值
  162. $query1 = clone $query;
  163. $rechargeTodaySuccess = (float)$query1->where('status', 1)->sum('amount');//成功
  164. $query1 = clone $query;
  165. $rechargeTodayFail = (float)$query1->where('status', 2)->sum('amount');//失败
  166. $result = [
  167. 'start' => $start,
  168. 'end' => $end,
  169. 'bet' => $bet,//投注相关的
  170. 'activity' => $activity,//活动相关的
  171. 'yuebao' => $yuebao,//余额宝相关的
  172. 'recharge_usd' => [
  173. 'total_amount' => $rechargeTotalAmount,
  174. 'total_success' => $rechargeTotalSuccess,
  175. 'total_fail' => $rechargeTotalFail,
  176. 'today_amount' => $rechargeTodayAmount,
  177. 'today_success' => $rechargeTodaySuccess,
  178. 'today_fail' => $rechargeTodayFail,
  179. ],
  180. 'recharge_rmb' => [
  181. 'total_amount' => $rechargeRmbTotalAmount,
  182. 'total_success' => $rechargeRmbTotalSuccess,
  183. 'total_fail' => $rechargeRmbTotalFail,
  184. 'total_processing' => $rechargeRmbTotalProcessing,
  185. 'total_pending' => $rechargeRmbTotalPending,
  186. 'today_amount' => $rechargeRmbTodayAmount,
  187. 'today_success' => $rechargeRmbTodaySuccess,
  188. 'today_fail' => $rechargeRmbTodayFail,
  189. 'today_processing' => $rechargeRmbTodayProcessing,
  190. 'today_pending' => $rechargeRmbTodayPending,
  191. ],
  192. 'withdraw_usdt' => [
  193. 'total_fail' => $usdTotalFail,
  194. 'total_success' => $usdTotalSuccess,
  195. 'total_amount' => $usdTotalAmount,
  196. 'today_amount' => $usdTodayAmount,
  197. 'today_success' => $usdTodaySuccess,
  198. 'today_fail' => $usdTodayFail,
  199. ],
  200. 'withdraw_rmb' => [
  201. 'total_fail' => $totalFail,
  202. 'total_success' => $totalSuccess,
  203. 'total_amount' => $totalAmount,
  204. 'total_processing' => $totalProcessing,
  205. 'total_pending' => $totalPending,
  206. 'today_amount' => $todayAmount,
  207. 'today_success' => $todaySuccess,
  208. 'today_fail' => $todayFail,
  209. 'today_processing' => $todayProcessing,
  210. 'today_pending' => $todayPending,
  211. ],
  212. 'total_user' => $totalUser,
  213. 'today_user' => $todayUser,
  214. ];
  215. } catch (ValidationException $e) {
  216. return $this->error(HttpStatus::CUSTOM_ERROR, $e->validator->errors()->first());
  217. } catch (Exception $e) {
  218. return $this->error($e->getCode(), $e->getmessage());
  219. }
  220. return $this->success($result);
  221. }
  222. }