InviteController.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace App\Http\Controllers\User;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\CommissionLog;
  5. use Illuminate\Http\Request;
  6. use App\Models\User;
  7. use App\Models\Order;
  8. use App\Models\InviteCode;
  9. use App\Utils\Helper;
  10. class InviteController extends Controller
  11. {
  12. public function save(Request $request)
  13. {
  14. if (InviteCode::where('user_id', $request->user['id'])->where('status', 0)->count() >= config('v2board.invite_gen_limit', 5)) {
  15. abort(500, __('The maximum number of creations has been reached'));
  16. }
  17. $inviteCode = new InviteCode();
  18. $inviteCode->user_id = $request->user['id'];
  19. $inviteCode->code = Helper::randomChar(8);
  20. return response([
  21. 'data' => $inviteCode->save()
  22. ]);
  23. }
  24. public function details(Request $request)
  25. {
  26. $current = $request->input('current') ? $request->input('current') : 1;
  27. $pageSize = $request->input('page_size') >= 10 ? $request->input('page_size') : 10;
  28. $builder = CommissionLog::where('invite_user_id', $request->user['id'])
  29. ->where('get_amount', '>', 0)
  30. ->select([
  31. 'id',
  32. 'trade_no',
  33. 'order_amount',
  34. 'get_amount',
  35. 'created_at'
  36. ])
  37. ->orderBy('created_at', 'DESC');
  38. $total = $builder->count();
  39. $details = $builder->forPage($current, $pageSize)
  40. ->get();
  41. return response([
  42. 'data' => $details,
  43. 'total' => $total
  44. ]);
  45. }
  46. public function fetch(Request $request)
  47. {
  48. $codes = InviteCode::where('user_id', $request->user['id'])
  49. ->where('status', 0)
  50. ->get();
  51. $commission_rate = config('v2board.invite_commission', 10);
  52. $user = User::find($request->user['id']);
  53. if ($user->commission_rate) {
  54. $commission_rate = $user->commission_rate;
  55. }
  56. $stat = [
  57. //已注册用户数
  58. (int)User::where('invite_user_id', $request->user['id'])->count(),
  59. //有效的佣金
  60. (int)Order::where('status', 3)
  61. ->where('commission_status', 2)
  62. ->where('invite_user_id', $request->user['id'])
  63. ->sum('commission_balance'),
  64. //确认中的佣金
  65. (int)Order::where('status', 3)
  66. ->where('commission_status', 0)
  67. ->where('invite_user_id', $request->user['id'])
  68. ->sum('commission_balance'),
  69. //佣金比例
  70. (int)$commission_rate,
  71. //可用佣金
  72. (int)$user->commission_balance
  73. ];
  74. return response([
  75. 'data' => [
  76. 'codes' => $codes,
  77. 'stat' => $stat
  78. ]
  79. ]);
  80. }
  81. }