UserServiceA.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package cn.flea.chexnetmaster.service.impl;
  2. import cn.flea.chexnetmaster.mapper.UserMapper;
  3. import cn.flea.chexnetmaster.pojo.Result;
  4. import cn.flea.chexnetmaster.pojo.User;
  5. import cn.flea.chexnetmaster.service.UserService;
  6. import cn.flea.chexnetmaster.util.JwtUtil;
  7. import cn.flea.chexnetmaster.util.WeiXinUtil;
  8. import com.fasterxml.jackson.databind.JsonNode;
  9. import com.fasterxml.jackson.databind.ObjectMapper;
  10. import lombok.extern.slf4j.Slf4j;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import java.util.HashMap;
  14. @Slf4j
  15. @Service
  16. public class UserServiceA implements UserService {
  17. @Autowired
  18. WeiXinUtil weiXinUtil;
  19. @Autowired
  20. UserMapper userMapper;
  21. @Override
  22. public Result login(String code) {
  23. String res = weiXinUtil.getOpenid(code);
  24. log.info(res);
  25. try {
  26. ObjectMapper objectMapper = new ObjectMapper();
  27. // 将String解析为JsonNode
  28. JsonNode jsonNode = objectMapper.readTree(res);
  29. String openid = jsonNode.get("openid").asText();
  30. String sessionKey = jsonNode.get("session_key").asText();
  31. String unionid = jsonNode.get("unionid").asText();
  32. User user = userMapper.getUserByOpenid(openid);
  33. if (user == null) {
  34. log.info("用户不存在,创建新用户");
  35. user = new User();
  36. user.setName("微信用户");
  37. user.setSessionKey(sessionKey);
  38. user.setWechatOpenid(openid);
  39. user.setWechatUnionid(unionid);
  40. Integer id = addUser(user);
  41. HashMap<String, Object> map = new HashMap<String, Object>();
  42. map.put("id", id);
  43. map.put("openid", openid);
  44. HashMap<String, String> info = new HashMap<String, String>();
  45. info.put("name", user.getName());
  46. info.put("token",JwtUtil.getJwt(map));
  47. return Result.success("new", info);
  48. } else {
  49. log.info("用户已存在,更新用户session_key");
  50. user.setSessionKey(sessionKey);
  51. Integer id = updateUserByOpenid(user);
  52. HashMap<String, Object> map = new HashMap<String, Object>();
  53. map.put("id", id);
  54. map.put("openid", openid);
  55. HashMap<String, String> info = new HashMap<String, String>();
  56. info.put("name", user.getName());
  57. info.put("token",JwtUtil.getJwt(map));
  58. return Result.success("old", info);
  59. }
  60. } catch (Exception e) {
  61. e.printStackTrace();
  62. }
  63. return Result.error("登录失败");
  64. }
  65. public int addUser(User user) {
  66. userMapper.addUser(user);
  67. int id = user.getId();
  68. log.info("用户添加成功:" + id);
  69. return id;
  70. }
  71. @Override
  72. public int deleteUser(String wechatOpenid) {
  73. return userMapper.deleteUserByOpenid(wechatOpenid);
  74. }
  75. @Override
  76. public int updateUserByOpenid(User user) {
  77. userMapper.updateUserByOpenid(user);
  78. int id = user.getId();
  79. log.info("用户更新成功:" + id);
  80. return id;
  81. }
  82. @Override
  83. public int updateUserById(User user) {
  84. return userMapper.updateUserById(user);
  85. }
  86. @Override
  87. public User getUserByOpenid(String wechatOpenid) {
  88. return userMapper.getUserByOpenid(wechatOpenid);
  89. }
  90. @Override
  91. public String checkToken(HashMap<String, Object> map, Integer exp) {
  92. if (exp < 24 * 60 * 60 * 1000) return JwtUtil.getJwt(map);
  93. return null;
  94. }
  95. @Override
  96. public User getUserById(Integer id) {
  97. return userMapper.getUserById(id);
  98. }
  99. }