RegisterController.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <?php
  2. namespace App\Http\Controllers\Mobile\Auth;
  3. use Aix\Sms\Contracts\Smser;
  4. use App\Http\Controllers\Mobile\MobileBaseController;
  5. use App\Http\Controllers\Web\WebBaseController;
  6. use App\Services\Auth\AuthService;
  7. use App\Services\Auth\RegisterService;
  8. use App\Services\Common\EmailService;
  9. use App\Services\Common\GeetestService;
  10. use App\Services\Common\MembersSetmealService;
  11. use App\Services\Common\SmsService;
  12. use App\Services\Common\TaskService;
  13. use App\Validators\AuthValidatorRequest;
  14. use App\Validators\RegisterValidatorRequest;
  15. use Closure;
  16. use Illuminate\Support\Facades\Auth;
  17. class RegisterController extends MobileBaseController
  18. {
  19. /**
  20. * @var RegisterService
  21. */
  22. private $registerService;
  23. /**
  24. * @var GeetestService
  25. */
  26. private $geetestService;
  27. /**
  28. * @var SmsService
  29. */
  30. private $smsService;
  31. private $taskService;
  32. private $membersSetmealService;
  33. /**
  34. * @var EmailService
  35. */
  36. private $emailService;
  37. /**
  38. * @var AuthService
  39. */
  40. private $authService;
  41. /**
  42. * RegisterController constructor.
  43. * @param AuthService $authService
  44. * @param EmailService $emailService
  45. * @param RegisterService $registerService
  46. * @param MembersSetmealService $membersSetmealService
  47. * @param TaskService $taskService
  48. * @param GeetestService $geetestService
  49. * @param SmsService $smsService
  50. */
  51. public function __construct(AuthService $authService, EmailService $emailService, RegisterService $registerService, MembersSetmealService $membersSetmealService, TaskService $taskService, GeetestService $geetestService, SmsService $smsService)
  52. {
  53. $this->registerService = $registerService;
  54. $this->geetestService = $geetestService;
  55. $this->smsService = $smsService;
  56. $this->taskService = $taskService;
  57. $this->membersSetmealService = $membersSetmealService;
  58. $this->middleware(function ($request, Closure $next) {
  59. if (Auth::guard('web-member')->check() || Auth::guard('web-company')->check()) {
  60. if ($request->route()->getName() != 'mobile.register.send_email') {
  61. if (get_subsite_id() > 0) {
  62. return redirect(route('jkq.mobile.home'));
  63. } else {
  64. return redirect(route('mobile.home'));
  65. }
  66. }
  67. }
  68. return $next($request);
  69. });
  70. $this->emailService = $emailService;
  71. $this->authService = $authService;
  72. }
  73. public function registerIndex()
  74. {
  75. return view('mobile.app.auth.register', ['wap_title' => '会员注册']);
  76. }
  77. public function registerCompany()
  78. {
  79. return view('mobile.app.auth.register_company', ['wap_title' => '企业会员注册']);
  80. }
  81. public function registerPerson()
  82. {
  83. return view('mobile.app.auth.register_person', ['wap_title' => '个人会员注册']);
  84. }
  85. public function registerPersonEmail()
  86. {
  87. return view('mobile.app.auth.register_person_email', ['wap_title' => '个人会员注册']);
  88. }
  89. public function showSendEmail($type)
  90. {
  91. $user = $type == 1 ? auth('web-company')->user() : auth('web-member')->user();
  92. return view('mobile.app.auth.register_send_email', ['wap_title' => '邮箱激活', 'type' => $type, 'user' => $user]);
  93. }
  94. public function checkUnique($utype)
  95. {
  96. if ($this->registerService->checkUnique($utype, request()->type, request()->param)) {
  97. return $this->sendSuccessResponse();
  98. }
  99. return $this->sendErrorResponse("error");
  100. }
  101. public function registerCompanyPost(RegisterValidatorRequest $registerValidatorRequest)
  102. {
  103. // if (!$this->geetestService->checkGeetest()) {
  104. // return $this->sendErrorResponse("极验不通过,请重新验证");
  105. // }
  106. $company = $this->registerService->registerCompany($registerValidatorRequest->all());
  107. $this->authService->login($company);
  108. $this->membersSetmealService->addMemberSetmeal($company, 1);
  109. $this->taskService->doTask(17);
  110. $this->emailService->setAuthTag('company')->setCheckRoute('mobile.email.check')
  111. ->setCallback('App\Services\Company\CompanyService', 'sendAuthEmailHook', [$registerValidatorRequest->email, $company])
  112. ->sendAuthMail($registerValidatorRequest->email, EmailService::TEMPLATE_VALIDATION);
  113. return $this->sendSuccessResponse(['url' => route('mobile.register.send_email', ['type' => 1])]);
  114. }
  115. public function registerPersonPost(RegisterValidatorRequest $registerValidatorRequest, AuthValidatorRequest $request)
  116. {
  117. // if (!$this->geetestService->checkGeetest()) {
  118. // return $this->sendErrorResponse("验证码不通过,请重新验证");
  119. // }
  120. if ($registerValidatorRequest->reg_type == 1) {
  121. if (!$this->smsService->checkAuthSms($registerValidatorRequest->mobile, Smser::TEMPLATE_AUTH_REGISTER, $registerValidatorRequest->mobile_vcode)) {
  122. return $this->sendErrorResponse("短信验证码不通过,请重新输入");
  123. }
  124. }
  125. $member = $this->registerService->registerPerson($registerValidatorRequest->all());
  126. $this->authService->login($member);
  127. if ($registerValidatorRequest->reg_type == 1) {
  128. $this->taskService->doTask(7);
  129. if ($registerValidatorRequest->member_status == 3) {
  130. return $this->sendSuccessResponse(['url' => route('mobile.home')]);
  131. }
  132. return $this->sendSuccessResponse([
  133. 'url' => url($request->session()
  134. ->pull('url.intended', route('mobile.person.index')))]);
  135. }
  136. $this->emailService->setAuthTag('personal')->setCheckRoute('mobile.email.check')
  137. ->setCallback('App\Services\Person\MemberInfoService', 'sendAuthEmailHook', [$registerValidatorRequest->email, $member])
  138. ->sendAuthMail($registerValidatorRequest->email, EmailService::TEMPLATE_VALIDATION);
  139. return $this->sendSuccessResponse(['url' => route('mobile.register.send_email', ['type' => 2])]);
  140. }
  141. }