UserController.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <?php
  2. namespace App\Http\Controllers\App;
  3. use App\Filters\OrderFilter;
  4. use App\Filters\UserFilter;
  5. use App\Http\Resources\App\OrderRentResource;
  6. use App\Http\Resources\App\UserResource;
  7. use App\Http\Resources\App\OrderResource;
  8. use App\Models\Order;
  9. use App\Models\OrderRent;
  10. use App\Models\User;
  11. use Carbon\Carbon;
  12. use Illuminate\Http\Request;
  13. use App\Http\Controllers\Controller;
  14. use Illuminate\Support\Facades\Log;
  15. class UserController extends AppBaseController
  16. {
  17. /**
  18. * userList 用户列表
  19. *
  20. * @param UserFilter $filter
  21. * @return \Illuminate\Http\JsonResponse
  22. * @author Fx
  23. *
  24. */
  25. public function userList(UserFilter $filter){
  26. $area_ids = self::$areaIds;
  27. $user = User::query()
  28. ->whereIn('register_area_id',$area_ids)
  29. ->where('is_bind_mobile',User::BIND_MOBILE_OK)
  30. ->filter($filter)
  31. ->orderByDesc('id')
  32. ->paginate();
  33. return $this->ok(UserResource::collection($user));
  34. }
  35. /**
  36. * userDetail 用户详情
  37. *
  38. * @param Request $request
  39. * @return \Illuminate\Http\JsonResponse
  40. * @author Fx
  41. *
  42. */
  43. public function userDetail(Request $request){
  44. $user_id = $request->get('user_id') ?? '';
  45. if(empty($user_id)) return $this->error('参数错误');
  46. $userDetail = User::query()->find($user_id);
  47. if(empty($userDetail)) return $this->error('找不到该用户,参数错误');
  48. $data = [
  49. 'username' => $userDetail->nickname.($userDetail->truename ? '('.$userDetail->truename.')' : ''),
  50. 'mobile' => $userDetail->mobile ?? '',
  51. 'area' => $userDetail->areas->name ?? '',
  52. 'deposit' => $userDetail->deposit_money ?? 0,
  53. 'wallet_money' => $userDetail->wallet_money ?? 0,
  54. ];
  55. return $this->ok($data);
  56. }
  57. /**
  58. * historicalOrder 历史订单
  59. *
  60. * @param Request $request
  61. * @return \Illuminate\Http\JsonResponse
  62. * @author Fx
  63. *
  64. */
  65. public function historicalOrder(Request $request){
  66. $user_id = $request->get('user_id') ?? '';
  67. if(empty($user_id)) return $this->error('参数错误');
  68. $order = Order::query()
  69. ->where('user_id',$user_id)
  70. // ->where('status',Order::STATUS_COMPLETE_ORDER)
  71. ->orderByDesc('id')
  72. ->paginate();
  73. return $this->ok(OrderResource::collection($order));
  74. }
  75. /**
  76. * historicalOrderRent 历史日租订单
  77. *
  78. * @param Request $request
  79. * @return \Illuminate\Http\JsonResponse
  80. * @author Fx
  81. *
  82. */
  83. public function historicalOrderRent(Request $request){
  84. $user_id = $request->get('user_id') ?? '';
  85. if(empty($user_id)) return $this->error('参数错误');
  86. $order = OrderRent::query()
  87. ->where('user_id',$user_id)
  88. // ->where('status',Order::STATUS_COMPLETE_ORDER)
  89. ->orderByDesc('id')
  90. ->paginate();
  91. return $this->ok(OrderRentResource::collection($order));
  92. }
  93. /**
  94. * userStatistics 用户统计
  95. *
  96. * @param UserFilter $filter
  97. * @param OrderFilter $orderFilter
  98. * @return \Illuminate\Http\JsonResponse
  99. * @author Fx
  100. *
  101. */
  102. public function userStatistics(UserFilter $filter,OrderFilter $orderFilter){
  103. $area_ids = self::$areaIds;
  104. // 总用户
  105. $totalUser = User::query()
  106. ->whereIn('register_area_id',$area_ids)
  107. ->filter($filter)
  108. ->count('id');
  109. // 押金用户
  110. $depositUser = User::query()
  111. ->whereIn('register_area_id',$area_ids)
  112. ->where('is_deposit',User::DEPOSIT_OK)
  113. ->filter($filter)
  114. ->count('id');
  115. //有效用户
  116. $cardUser = User::query()
  117. ->whereIn('register_area_id',$area_ids)
  118. ->where('is_card_certified',User::CARD_OK)
  119. ->filter($filter)
  120. ->count('id');
  121. //今日新增
  122. $todayAddUser = User::query()
  123. ->whereIn('register_area_id',$area_ids)
  124. ->where('is_card_certified',User::CARD_OK)
  125. ->where('created_at','>',Carbon::today())
  126. ->filter($filter)
  127. ->count('id');
  128. // 今日活跃
  129. $todayActiveOrder = Order::query()
  130. ->whereIn('area_id',$area_ids)
  131. ->where('created_at','>',Carbon::today())
  132. ->filter($orderFilter)
  133. ->get(['user_id'])
  134. ->toArray();
  135. $todayActiveUserArr = [];
  136. foreach ($todayActiveOrder as $v){
  137. $todayActiveUserArr[] = $v['user_id'];
  138. }
  139. $todayActiveUser = count(array_unique($todayActiveUserArr)); //去重复后计算总数
  140. $data = [
  141. 'totalUser' => $totalUser ?? 0,
  142. 'depositUser' => $depositUser ?? 0,
  143. 'cardUser' => $cardUser ?? 0,
  144. 'todayAddUser' => $todayAddUser ?? 0,
  145. 'todayActiveUser' => $todayActiveUser ?? 0
  146. ];
  147. return $this->ok($data);
  148. }
  149. }