2
0

SignUpController.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\Channel;
  4. use App\Models\Invite;
  5. use App\Models\UserInfo;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Http\Response;
  8. use Illuminate\Support\Facades\DB;
  9. use Illuminate\Support\Facades\Log;
  10. use Illuminate\Support\Str;
  11. class SignUpController extends Controller
  12. {
  13. /**
  14. * Display a listing of the resource.
  15. *
  16. * @return Response
  17. */
  18. public function index()
  19. {
  20. //
  21. }
  22. /**
  23. * Store a newly created resource in storage.
  24. *
  25. * @return Response
  26. */
  27. public function store(Request $request)
  28. {
  29. // 先查询invite核对uuid
  30. if (! Invite::where('id', $request->input('token'))
  31. ->where('email', $request->input('email'))->exists()) {
  32. $this->error('error token', '', 200);
  33. }
  34. if (UserInfo::where('username', $request->input('name'))->exists()) {
  35. $this->error('avoid user name', '', 200);
  36. }
  37. try {
  38. DB::transaction(function () use ($request) {
  39. $user = new UserInfo;
  40. $user->userid = Str::Uuid();
  41. $user->username = $request->input('username');
  42. $user->nickname = $request->input('nickname');
  43. $user->email = $request->input('email');
  44. $user->password = md5($request->input('password'));
  45. $user->role = json_encode(['basic']);
  46. $user->create_time = time() * 1000;
  47. $user->modify_time = time() * 1000;
  48. $user->save();
  49. // 标记invite
  50. Invite::where('id', $request->input('token'))
  51. ->where('email', $request->input('email'))
  52. ->update(['status' => 'sign-up']);
  53. // 建立channel
  54. $channel_draft = new Channel;
  55. $channel_draft->id = app('snowflake')->id();
  56. $channel_draft->name = 'draft';
  57. $channel_draft->owner_uid = $user->userid;
  58. $channel_draft->type = 'translation';
  59. $channel_draft->lang = $request->input('lang');
  60. $channel_draft->status = 5;
  61. $channel_draft->editor_id = $user->id;
  62. $channel_draft->create_time = time() * 1000;
  63. $channel_draft->modify_time = time() * 1000;
  64. $channel_draft->save();
  65. });
  66. } catch (\Exception $e) {
  67. Log::error('user create fail', ['data' => $e]);
  68. return $this->error('user create fail', 500, 500);
  69. }
  70. return $this->ok('ok');
  71. }
  72. /**
  73. * Display the specified resource.
  74. *
  75. * @return Response
  76. */
  77. public function show(Request $request, string $username)
  78. {
  79. //
  80. $email = UserInfo::where('email', $request->input('email'))->exists();
  81. $user = UserInfo::where('username', $username)->exists();
  82. if ($email && $user) {
  83. // send email
  84. return $this->ok('ok');
  85. } else {
  86. return $this->error(['email' => $email, 'username' => $user], [200], 200);
  87. }
  88. }
  89. /**
  90. * Update the specified resource in storage.
  91. *
  92. * @return Response
  93. */
  94. public function update(Request $request, UserInfo $userInfo)
  95. {
  96. //
  97. }
  98. /**
  99. * Remove the specified resource from storage.
  100. *
  101. * @return Response
  102. */
  103. public function destroy(UserInfo $userInfo)
  104. {
  105. //
  106. }
  107. }