AuthController.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package com.qxgmat.controller.api;
  2. import com.nuliji.tools.Response;
  3. import com.nuliji.tools.ResponseHelp;
  4. import com.nuliji.tools.Transform;
  5. import com.nuliji.tools.exception.ParameterException;
  6. import com.nuliji.tools.exception.SystemException;
  7. import com.qxgmat.data.dao.entity.User;
  8. import com.qxgmat.dto.request.*;
  9. import com.qxgmat.dto.response.MyDto;
  10. import com.qxgmat.help.CaptchaHelp;
  11. import com.qxgmat.help.ShiroHelp;
  12. import com.qxgmat.help.SmsHelp;
  13. import com.qxgmat.service.UsersService;
  14. import io.swagger.annotations.Api;
  15. import io.swagger.annotations.ApiOperation;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.http.MediaType;
  18. import org.springframework.validation.annotation.Validated;
  19. import org.springframework.web.bind.annotation.*;
  20. import javax.servlet.http.HttpServletRequest;
  21. import javax.servlet.http.HttpSession;
  22. import javax.validation.Validator;
  23. /**
  24. * Created by GaoJie on 2017/10/31.
  25. */
  26. @RestController
  27. @RequestMapping("/api/auth")
  28. @Api(tags = "用户验证", description = "登录注册找回密码", produces = MediaType.APPLICATION_JSON_VALUE)
  29. public class AuthController {
  30. @Autowired
  31. private Validator validator;
  32. @Autowired
  33. private CaptchaHelp captchaHelp;
  34. @Autowired
  35. private SmsHelp smsHelp;
  36. @Autowired
  37. private ShiroHelp shiroHelp;
  38. @Autowired
  39. private UsersService usersService;
  40. @RequestMapping(value = "/login", method = RequestMethod.POST)
  41. @ApiOperation(value = "登录/注册", httpMethod = "POST")
  42. public Response<MyDto> login(@RequestBody @Validated UserLoginDto userLoginDto, HttpSession session, HttpServletRequest request) {
  43. if (!smsHelp.verifyCode(userLoginDto.getMobile(), userLoginDto.getMobileVerifyCode(), session)) {
  44. throw new ParameterException("手机验证码错误!");
  45. }
  46. try {
  47. User user = usersService.register(userLoginDto.getMobile(), userLoginDto.getInviteCode(), null);
  48. }catch (ParameterException e){
  49. // 忽略已注册信息
  50. }
  51. shiroHelp.getSession().login(shiroHelp.user(userLoginDto.getMobile(), ""));
  52. return ResponseHelp.success(Transform.convert(shiroHelp.getLoginUser(), MyDto.class));
  53. }
  54. @RequestMapping(value = "/logout", method = RequestMethod.POST)
  55. @ApiOperation(value = "登出", httpMethod = "POST")
  56. public Response<Boolean> logout(HttpSession session, HttpServletRequest request) {
  57. shiroHelp.logout();
  58. return ResponseHelp.success(true);
  59. }
  60. @RequestMapping(value = "/bind", method = RequestMethod.POST)
  61. @ApiOperation(value = "绑定手机号", notes="第三方登录后可执行", httpMethod = "POST")
  62. public Response<Boolean> bind(@RequestBody @Validated UserValidMobileDto userValidMobileDto, HttpSession session) {
  63. if (!smsHelp.verifyCode(userValidMobileDto.getMobile(), userValidMobileDto.getMobileVerifyCode(), session)) {
  64. throw new ParameterException("手机验证码错误!");
  65. }
  66. User openUser = (User) shiroHelp.getLoginUser();
  67. if(openUser == null)
  68. throw new SystemException("第三方登录错误");
  69. if(openUser.getMobile().length() > 0)
  70. throw new SystemException("手机号已绑定");
  71. try{
  72. // 创建新的账号,设定手机号,绑定第三方登录
  73. User user = usersService.register(userValidMobileDto.getMobile(), userValidMobileDto.getInviteCode(), openUser);
  74. }catch (ParameterException e){
  75. throw new ParameterException("该手机号已注册,请通过手机号进行登录!");
  76. }
  77. return ResponseHelp.success(true);
  78. }
  79. @RequestMapping(value = "/valid/invite_code", method = RequestMethod.GET)
  80. @ApiOperation(value = "验证邀请码", notes="查询邀请码对应账号", httpMethod = "GET")
  81. public Response<String> validInviteCode(
  82. @RequestParam(required = true) String inviteCode
  83. ){
  84. User user = usersService.getByInviteCode(inviteCode);
  85. if(user == null){
  86. return ResponseHelp.success(null);
  87. }else{
  88. return ResponseHelp.success(user.getNickname());
  89. }
  90. }
  91. @RequestMapping(value = "/valid/mobile", method = RequestMethod.GET)
  92. @ApiOperation(value = "验证手机号", notes="查询手机对应账号", httpMethod = "GET")
  93. public Response<Boolean> validMobile(
  94. @RequestParam(required = true) String mobile
  95. ){
  96. User user = usersService.getByMobile(mobile);
  97. if(user == null){
  98. return ResponseHelp.success(false);
  99. }else{
  100. return ResponseHelp.success(true);
  101. }
  102. }
  103. }