RegisterController.php 7.1 KB

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