LoginController.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package com.huimv.admin.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.huimv.admin.entity.SysAccountMultilevel;
  4. import com.huimv.admin.service.ILoginService;
  5. import com.huimv.admin.session.AccessToken;
  6. import com.huimv.common.exception.ExceptionEnum;
  7. import com.huimv.common.exception.MiException;
  8. import com.huimv.common.token.TokenSign;
  9. import com.huimv.common.utils.Result;
  10. import com.huimv.common.utils.ResultCode;
  11. import com.huimv.common.utils.VerifyUtil;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.data.redis.core.RedisTemplate;
  14. import org.springframework.web.bind.annotation.*;
  15. import javax.servlet.http.HttpServletRequest;
  16. import javax.servlet.http.HttpServletResponse;
  17. import java.util.Date;
  18. import java.util.Map;
  19. import java.util.concurrent.TimeUnit;
  20. @RestController
  21. @RequestMapping(value = "/my")
  22. public class LoginController {
  23. @Autowired
  24. ILoginService iLoginService;
  25. @RequestMapping("/logout")
  26. public Result logout(@RequestParam(name = "accountName", required = true) String accountName, @RequestParam(name = "password", required = true) String password) {
  27. return iLoginService.logout();
  28. }
  29. @Autowired
  30. private RedisTemplate<String, String> redisTemplate;
  31. @GetMapping("/send")
  32. public void createImg(HttpServletRequest request, HttpServletResponse response) {
  33. try {
  34. //设置响应类型,告诉浏览器输出的内容为图片
  35. response.setContentType("image/jpeg");
  36. //设置响应头信息,告诉浏览器不要缓存此内容
  37. response.setHeader("Pragma", "No-cache");
  38. response.setHeader("Cache-Control", "no-cache");
  39. response.setDateHeader("Expire", 0);
  40. VerifyUtil randomValidateCode = new VerifyUtil();
  41. //输出验证码图片
  42. String code = randomValidateCode.getRandcode(request, response);
  43. System.out.println(code);
  44. //将生成的随机验证码存放到redis中
  45. String remoteHost = request.getRemoteHost();
  46. redisTemplate.opsForValue().set(remoteHost,code,300, TimeUnit.SECONDS);
  47. } catch (Exception e) {
  48. System.out.println("获取验证码异常:"+e);
  49. throw new MiException(ExceptionEnum.VERIFCATION_FAID);
  50. }
  51. }
  52. //登录-多牧场
  53. @PostMapping(value = "/loginMultilevel")
  54. public Result loginMultilevel(HttpServletRequest req, @RequestBody Map<String, String> map) {
  55. String accountName = map.get("accountName");
  56. String password = map.get("password");
  57. String code = map.get("code");
  58. String remoteHost = req.getRemoteHost();
  59. String redisCode = redisTemplate.opsForValue().get(remoteHost);
  60. if (redisCode == null) {
  61. return new Result(10005,"验证码过期,点击刷新",false);
  62. }
  63. if (!redisCode.equals(code.toUpperCase())) {
  64. return new Result(10006,"验证码错误,登录失败",false);
  65. }
  66. // 未对密码加密
  67. Result result = iLoginService.loginMultilevel(accountName, password);
  68. if(result.getCode() == 10000){
  69. SysAccountMultilevel accountEntity = (SysAccountMultilevel) result.getData();
  70. Integer id = accountEntity.getId();
  71. AccessToken accessToken = new AccessToken();
  72. accessToken.setCreated(new Date());
  73. accessToken.setAccountName(accountName);
  74. accessToken.setCode(result.getCode());
  75. accessToken.setMessage(result.getMessage());
  76. String token = TokenSign.sign(accountName,id,accountEntity.getFarmIds());
  77. accessToken.setToken(token);
  78. accessToken.setId(id);
  79. accessToken.setLoginIp(remoteHost);
  80. accessToken.setType(accountEntity.getType());
  81. return new Result(ResultCode.SUCCESS,accessToken);
  82. }
  83. return result;
  84. }
  85. //测试-token
  86. @PostMapping(value = "/getToken")
  87. public String getToken(HttpServletRequest req) {
  88. String token = TokenSign.sign("superadmin",1,null);
  89. return token;
  90. }
  91. }