ApiService.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package com.roma.romaapi.service;
  2. import com.roma.romaapi.dao.ApiDao;
  3. import com.roma.romaapi.utils.JWTUtil;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.data.redis.core.RedisTemplate;
  6. import com.roma.romaapi.utils.SecurityUtils;
  7. import org.springframework.stereotype.Service;
  8. import java.util.HashMap;
  9. import java.util.Map;
  10. import java.util.Objects;
  11. import java.util.concurrent.TimeUnit;
  12. @Service
  13. public class ApiService {
  14. @Autowired
  15. private RedisTemplate<String, String> redisTemplate;
  16. @Autowired
  17. private ApiDao apiDao;
  18. @Autowired
  19. SecurityUtils securityUtils;
  20. @Autowired
  21. JWTUtil jwtUtil;
  22. // 登录方法
  23. public Map<String, Object> login(Map<String, String[]> maps) {
  24. // 请求参数,获取验证码,验证码token,用户名,密码
  25. String userName = maps.get("api_name")[0]; // 用户名
  26. String password = maps.get("api_password")[0]; // 密码
  27. String captcha = maps.get("api_captcha")[0]; // 用户输入验证码
  28. String captchaToken = maps.get("captchaToken")[0]; // 验证码token,获取验证码的值
  29. String captchaTokenValue = redisTemplate.opsForValue().get(captchaToken); // 缓存中验证码的值
  30. Map<String, Object> loginResult = new HashMap<>();
  31. // String aa = securityUtils.encodePassword(password); // 加密密码
  32. // 判断是否存在此用户,用户密码是否正确
  33. Map<String, Object> UserInfo = apiDao.adminInfoQueryForMap(userName);
  34. if(UserInfo.containsKey("sysErrorCode")) {
  35. loginResult.put("sysErrorCode", "500");
  36. loginResult.put("sysErrorMessage", "账号或密码错误");
  37. return loginResult;
  38. }
  39. Object adminPassword = UserInfo.get("admin_password");
  40. String stringAdminPassword = adminPassword.toString();
  41. // 校验密码是否正确
  42. if(!securityUtils.matchesPassword(password,stringAdminPassword)) {
  43. // 校验密码是否正确 密码不正确,返回错误
  44. loginResult.put("sysErrorCode", "500");
  45. loginResult.put("sysErrorMessage", "账号或密码错误");
  46. return loginResult;
  47. }
  48. // 校验图形验证码
  49. if(!Boolean.TRUE.equals(redisTemplate.hasKey(captchaToken)) || !Objects.equals(captchaTokenValue, captcha)){
  50. loginResult.put("sysErrorCode", "500");
  51. loginResult.put("sysErrorMessage", "验证码错误");
  52. return loginResult;
  53. }
  54. // 通过密码,验证码校验,发放token
  55. Map<String, Object> jwtInfo = new HashMap<>();
  56. Object userId = UserInfo.get("id");
  57. String stringUserId = userId.toString();
  58. jwtInfo.put("id", stringUserId);
  59. jwtInfo.put("loginTime", System.currentTimeMillis()/1000+"");
  60. jwtInfo.put("name", userName);
  61. String jwtToken = jwtUtil.getToken(jwtInfo);
  62. Map<String, Object> map = new HashMap<>();
  63. map.put("loginToken", jwtToken);
  64. return map;
  65. }
  66. }