RegisterController.php 6.9 KB

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