AppLoginController.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. package com.ruoyi.app.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.ruoyi.app.annotation.AuthToken;
  6. import com.ruoyi.app.annotation.PassToken;
  7. import com.ruoyi.app.base.AppLoginUser;
  8. import com.ruoyi.app.base.AppTokenService;
  9. import com.ruoyi.app.domain.TbAppUser;
  10. import com.ruoyi.app.service.ITbAppUserService;
  11. import com.ruoyi.app.util.AliSMSUtil;
  12. import com.ruoyi.common.constant.Constants;
  13. import com.ruoyi.common.core.domain.AjaxResult;
  14. import com.ruoyi.common.core.redis.RedisCache;
  15. import com.ruoyi.common.utils.DateUtils;
  16. import com.ruoyi.common.utils.StringUtils;
  17. import io.swagger.annotations.Api;
  18. import io.swagger.annotations.ApiOperation;
  19. import lombok.RequiredArgsConstructor;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.web.bind.annotation.*;
  22. import javax.servlet.http.HttpServletRequest;
  23. import java.util.Date;
  24. import java.util.Map;
  25. /**
  26. * 会员登录
  27. *
  28. * @author Alex
  29. * @date 2020-09-24
  30. */
  31. @Api(value = "APP登录",tags = "APP登录")
  32. @RequiredArgsConstructor(onConstructor_ = @Autowired)
  33. @RestController
  34. @RequestMapping("/app" )
  35. public class AppLoginController {
  36. @Autowired
  37. AppTokenService appTokenService;
  38. @Autowired
  39. private ITbAppUserService userService;
  40. /**
  41. * 登录
  42. */
  43. @PassToken
  44. @ApiOperation(value = "APP登录", notes = "APP登录")
  45. @PostMapping("/login")
  46. public AjaxResult login(String mobile, String captcha){
  47. if (StringUtils.isBlank(mobile)) {
  48. return AjaxResult.error("手机号不能为空");
  49. }
  50. if (StringUtils.isBlank(captcha)){
  51. return AjaxResult.error("验证码不能为空");
  52. }
  53. TbAppUser appUser = userService.getOne(new QueryWrapper<TbAppUser>()
  54. .eq("mobile",mobile)
  55. );
  56. // 为空则新增
  57. if (appUser == null) {
  58. appUser = new TbAppUser();
  59. Date date = new Date();
  60. appUser.setMobile(mobile);
  61. appUser.setNickName(mobile);
  62. appUser.setRole("USER");
  63. appUser.setQrcode(DateUtils.getCurrentTimeRandom());
  64. appUser.setCreateTime(date);
  65. appUser.setUpdateTime(date);
  66. boolean ck = userService.save(appUser);
  67. if (!ck){
  68. return AjaxResult.error("未知异常,登录失败");
  69. }
  70. appUser.setCreateBy(appUser.getId());
  71. appUser.setUpdateBy(appUser.getId());
  72. ck = userService.updateById(appUser);
  73. if (!ck){
  74. return AjaxResult.error("未知异常,登录失败");
  75. }
  76. }
  77. //手机短信验证 // TODO 调试通过,以后测试在放开注释
  78. // boolean ckCaptcha = AliSMSUtil.getInstance().validateSmsCode(mobile, captcha);
  79. // if (!ckCaptcha) {
  80. // return AjaxResult.error("验证码错误");
  81. // }
  82. //每次登录前,先删除缓存,保证登录唯一性
  83. appTokenService.delLoginUser(mobile);
  84. JSONObject jsonObject = new JSONObject();
  85. AppLoginUser loginUser = new AppLoginUser();
  86. loginUser.setUser(appUser);
  87. String token = appTokenService.createToken(loginUser);
  88. jsonObject.put("token", token);
  89. jsonObject.put("user", appUser);
  90. return AjaxResult.success(jsonObject);
  91. }
  92. /**
  93. * 发送短信验证码
  94. * @param type 1、用户注册;2、登录确认;3、身份验证;4、登录异常;5、修改密码;6、信息变更;
  95. * @param mobile 手机号码
  96. * @return
  97. */
  98. @PassToken
  99. @ApiOperation(value = "发送短信验证码", notes = "发送短信验证码")
  100. @GetMapping("/captchaSend")
  101. public AjaxResult sendCaptcha(Integer type, String mobile){
  102. if(StringUtils.isBlank(mobile)){
  103. return AjaxResult.error("请输入手机号");
  104. }
  105. Map<String,String> map = AliSMSUtil.getInstance().sendSmsCode(type, mobile);
  106. if(map.get("code").equals("200")) {
  107. return AjaxResult.success("发送成功");
  108. }
  109. return AjaxResult.error(map.get("msg"));
  110. }
  111. /**
  112. * 校验验证码
  113. * @param mobile
  114. * @param captcha
  115. * @return
  116. */
  117. @PassToken
  118. @ApiOperation(value = "校验短信验证码", notes = "校验短信验证码")
  119. @GetMapping("/captchaValidate")
  120. public AjaxResult validateCaptcha(String mobile, String captcha){
  121. if (StringUtils.isBlank(mobile)) {
  122. return AjaxResult.error("手机号不能为空");
  123. }
  124. if (StringUtils.isBlank(captcha)){
  125. return AjaxResult.error("验证码不能为空");
  126. }
  127. //手机短信验证
  128. boolean ckCaptcha = AliSMSUtil.getInstance().validateSmsCode(mobile, captcha);
  129. if (!ckCaptcha) {
  130. return AjaxResult.error("验证码错误");
  131. }
  132. return AjaxResult.success("验证成功");
  133. }
  134. @ApiOperation(value = "getUser", notes = "getUser")
  135. // @AuthToken
  136. @GetMapping("/getLoginUser")
  137. public AjaxResult getLoginUser(HttpServletRequest request){
  138. AppLoginUser user = appTokenService.getLoginUser(request);
  139. return AjaxResult.success(user);
  140. }
  141. public static void main(String[] args) {
  142. // System.out.println(DateUtils.getCurrentTimeRandom());
  143. String code = "1111111";
  144. String params = "{\"code1\":\""+code+"\"}";
  145. JSONObject jsonObject = JSON.parseObject(params);
  146. jsonObject.getString("code");
  147. System.out.println(jsonObject.getString("code"));
  148. }
  149. }