InviteController.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. namespace App\Http\Controllers\User;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Invite;
  5. use App\Models\Order;
  6. use Illuminate\Contracts\View\View;
  7. use Illuminate\Http\JsonResponse;
  8. use Str;
  9. class InviteController extends Controller
  10. {
  11. public function index(): View
  12. { // 邀请页面
  13. if (Order::uid()->active()->where('origin_amount', '>', 0)->doesntExist()) {
  14. return view('auth.error', ['message' => trans('user.purchase.required').' <a class="btn btn-sm btn-danger" href="/">'.trans('common.back').'</a>'], 402);
  15. }
  16. return view('user.invite', [
  17. 'num' => auth()->user()->invite_num, // 还可以生成的邀请码数量
  18. 'inviteList' => Invite::uid()->with('invitee')->paginate(10), // 邀请码列表
  19. 'referral_traffic' => formatBytes(sysConfig('referral_traffic'), 'MiB'),
  20. 'referral_percent' => sysConfig('referral_percent'),
  21. ]);
  22. }
  23. public function store(): JsonResponse
  24. { // 生成邀请码
  25. $user = auth()->user();
  26. if ($user->invite_num <= 0) {
  27. return response()->json(['status' => 'fail', 'message' => trans('user.invite.generate_failed')]);
  28. }
  29. $invite = $user->invites()->create([
  30. 'code' => strtoupper(mb_substr(md5(microtime().Str::random()), 8, 12)),
  31. 'dateline' => date('Y-m-d H:i:s', strtotime(sysConfig('user_invite_days').' days')),
  32. ]);
  33. if ($invite) {
  34. $user->decrement('invite_num');
  35. return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.generate')])]);
  36. }
  37. return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.generate')])]);
  38. }
  39. }