LoginController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace App\Http\Controllers\Api\v1;
  3. use App\Http\Controllers\Api\webApp;
  4. use App\Http\Validator\MemberValidator;
  5. use App\Services\Api\MemberService;
  6. use App\Services\RedisService;
  7. /**
  8. * 授权登录控制器基类
  9. * Class LoginController
  10. * @package App\Http\Controllers
  11. */
  12. class LoginController extends webApp
  13. {
  14. /**
  15. * 账号登录
  16. * @return array
  17. */
  18. public function login(MemberValidator $validator)
  19. {
  20. try {
  21. $params = request()->all();
  22. $code = request()->post('code', '');
  23. $params = $validator->check($params, 'login');
  24. if (!is_array($params)) {
  25. return showJson($params, false);
  26. }
  27. if (!$result = MemberService::make()->login($code, $params)) {
  28. return showJson(MemberService::make()->getError(), false);
  29. }
  30. return showJson(MemberService::make()->getError(), true, $result);
  31. }catch (\Exception $exception) {
  32. $error = ['data' => $exception->getTrace(), 'err' => $exception->getMessage()];
  33. return showJson(1046, false, $error);
  34. }
  35. }
  36. /**
  37. * 小程序授权登录
  38. * @param MemberValidator $validator
  39. * @return array
  40. */
  41. public function mpAuth(MemberValidator $validator)
  42. {
  43. $params = request()->all();
  44. try {
  45. $params = $validator->check($params, 'mp');
  46. if (!is_array($params)) {
  47. return showJson($params, false);
  48. }
  49. $code = isset($params['code']) ? $params['code'] : '';
  50. if ($result = MemberService::make()->mpAuth($code, $params)) {
  51. return showJson(MemberService::make()->getError(), true, $result);
  52. }else{
  53. return showJson(MemberService::make()->getError(), false);
  54. }
  55. } catch (\Exception $exception) {
  56. $error = ['data' => $exception->getTrace(), 'err' => $exception->getMessage()];
  57. RedisService::set("caches:members:loginError", ['params'=>$params, 'error'=>$error], 600);
  58. return showJson(1046, false, $error);
  59. }
  60. }
  61. /**
  62. * 重置密码
  63. * @param MemberValidator $validator
  64. * @return array
  65. */
  66. public function forget(MemberValidator $validator)
  67. {
  68. $params = request()->all();
  69. $params = $validator->check($params, 'reset_password');
  70. if (!is_array($params)) {
  71. return showJson($params, false);
  72. }
  73. if(!MemberService::make()->forget($params)){
  74. $error = MemberService::make()->getError();
  75. return showJson($error,false,'',$error==1040?405:0);
  76. }else{
  77. return showJson(MemberService::make()->getError(),true);
  78. }
  79. }
  80. /**
  81. * 发送短信验证码
  82. * @return array
  83. */
  84. public function smsSend(MemberValidator $validator)
  85. {
  86. $params = request()->all();
  87. $params = $validator->check($params, 'sms');
  88. if (!is_array($params)) {
  89. return showJson($params, false);
  90. }
  91. // 发送验证码处理
  92. $mobile = isset($params['mobile']) ? $params['mobile'] : '';
  93. $scene = isset($params['scene']) ? $params['scene'] : '';
  94. switch ($scene) {
  95. case 'register':
  96. if (MemberService::make()->checkExists('mobile', $mobile)) {
  97. return showJson(1040, false);
  98. }
  99. break;
  100. case 'deposit': // 退保
  101. case 'reset_password': // 忘记密码
  102. case 'login':
  103. if (!MemberService::make()->checkExists('mobile',$mobile)) {
  104. return showJson(2001, false);
  105. }
  106. break;
  107. }
  108. if (!SmsService::make()->send($mobile, $scene)) {
  109. return showJson(SmsService::make()->getError(), false);
  110. }
  111. return showJson(1011, true);
  112. }
  113. /**
  114. * 退出登录
  115. * @return array
  116. */
  117. public function logout()
  118. {
  119. RedisService::clear("auths:info:".$this->userId);
  120. return showJson(1003, true);
  121. }
  122. }