InviteController.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. $uncheck_commission_balance = (int)Order::where('status', 3)
  57. ->where('commission_status', 0)
  58. ->where('invite_user_id', $request->user['id'])
  59. ->sum('commission_balance');
  60. if (config('v2board.commission_distribution_enable', 0)) {
  61. $uncheck_commission_balance = $uncheck_commission_balance * (config('v2board.commission_distribution_l1') / 100);
  62. }
  63. $stat = [
  64. //已注册用户数
  65. (int)User::where('invite_user_id', $request->user['id'])->count(),
  66. //有效的佣金
  67. (int)CommissionLog::where('invite_user_id', $request->user['id'])
  68. ->sum('get_amount'),
  69. //确认中的佣金
  70. $uncheck_commission_balance,
  71. //佣金比例
  72. (int)$commission_rate,
  73. //可用佣金
  74. (int)$user->commission_balance
  75. ];
  76. return response([
  77. 'data' => [
  78. 'codes' => $codes,
  79. 'stat' => $stat
  80. ]
  81. ]);
  82. }
  83. }