Operation.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace app\admin\controller;
  3. use app\BaseController;
  4. use Carbon\Carbon;
  5. use Exception;
  6. use app\admin\model\Operation as OperationModel;
  7. use app\admin\model\User;
  8. use app\admin\model\Recharge;
  9. use app\admin\model\Withdraw;
  10. class Operation extends BaseController
  11. {
  12. /**
  13. * 用户报表
  14. */
  15. function exchangeList()
  16. {
  17. try {
  18. $params = $this->request->param();
  19. $page = $params['page'] ?? 1;
  20. $limit = $params['limit'] ?? 15;
  21. $query = new User();
  22. $admin_id = $this->admin_id;
  23. // if ($admin_id != 1 && Config::adminOpenAllData($admin_id) === false) {
  24. // $user_code = $this->user_code;
  25. // $query->where('user_code', $user_code);
  26. // }
  27. if (isset($params['user_id'])) {
  28. $user_id = $params['user_id'];
  29. $query->where(function ($query1) use ($user_id) {
  30. $query1->where('user_id', $user_id)
  31. ->orWhere('realname', 'like', "%{$user_id}%");
  32. });
  33. }
  34. $count = $query->count();
  35. $list = $query->order("last_login_time",'desc')
  36. ->field(['id', 'user_id', 'realname', 'money','remark'])
  37. ->limit($limit)
  38. ->page($page)
  39. ->select();
  40. $start = !empty($params['start_time']) ? "{$params['start_time']} 00:00:00" : null;
  41. $start = $start ? strtotime($start) : null;
  42. $end = !empty($params['end_time']) ? "{$params['end_time']} 23:59:59" : null;
  43. $end = $end ? strtotime($end) : null;
  44. foreach ($list as &$item) {
  45. $item['recharge'] = number_format(Recharge::where('user_id', $item['user_id'])
  46. ->where('status', 1)
  47. ->where(function ($query1) use ($start, $end) {
  48. if ($start && $end) {
  49. $query1->where('create_time', '>=', $start)
  50. ->where('create_time', '<=', $end);
  51. }
  52. })
  53. ->sum('amount'), 2);
  54. $item['withdraw'] = number_format(Withdraw::where('user_id', $item['user_id'])
  55. ->where('status', 1)
  56. ->where(function ($query1) use ($start, $end) {
  57. if ($start && $end) {
  58. $query1->where('create_time', '>=', $start)
  59. ->where('create_time', '<=', $end);
  60. }
  61. })
  62. ->sum('amount'), 2);
  63. $item['price_count'] = '0.00';
  64. $item['order_price'] = '0.00';
  65. }
  66. } catch (Exception $e) {
  67. return $this->error($e->getMessage());
  68. }
  69. return $this->success(['count' => $count, 'list' => $list]);
  70. }
  71. /**
  72. * 运营数据
  73. * @apiParam {String{'day','week','month','all'}} type 类型
  74. * - day 今日
  75. * - week 本周
  76. * - month 本月
  77. * - all 全部
  78. */
  79. function index()
  80. {
  81. try {
  82. $params = $this->request->param();
  83. $data = [
  84. 'recharge' => 0,
  85. 'withdraw' => 0,
  86. 'total_price' => 0,
  87. ];
  88. $page = $params['page'] ?? 1;
  89. $limit = $params['limit'] ?? 15;
  90. $query = new OperationModel;
  91. $query1 = new OperationModel;
  92. if (!empty($params['start_time'])) {
  93. $query = $query->where('date', '>=', $params['start_time'])
  94. ->where('date', '<=', $params['end_time']);
  95. $query1 = $query1->where('date', '>=', $params['start_time'])
  96. ->where('date', '<=', $params['end_time']);
  97. } else if ($params['type'] != 'all') {
  98. switch ($params['type']) {
  99. case 'day':
  100. $date = date('Y-m-d');
  101. break;
  102. case "week":
  103. $date = date('Y-m-d', strtotime('this week'));
  104. break;
  105. case "month":
  106. $date = date('Y-m-d', strtotime('this month'));
  107. break;
  108. }
  109. $query = $query->where('date', '>=', $date);
  110. $query1 = $query1->where('date', '>=', $date);
  111. }
  112. $data['recharge'] = $query1->sum('recharge');
  113. $data['withdraw'] = $query1->sum('withdraw');
  114. $data['total_price'] = $query1->sum('total_price');
  115. $count = $query->count();
  116. $list = $query->limit($limit)
  117. ->page($page)
  118. ->order('date','desc')
  119. ->select();
  120. } catch (Exception $e) {
  121. return $this->error($e->getMessage());
  122. }
  123. return $this->success(['count' => $count, 'list' => $list, 'data' => $data]);
  124. }
  125. }