UserTokenCache.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package com.kmall.api.cache;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;
  4. import com.kmall.api.entity.TokenEntity;
  5. import com.kmall.api.entity.UserVo;
  6. import com.kmall.common.utils.StringUtils;
  7. import com.kmall.common.utils.redis.JedisUtil;
  8. import org.apache.commons.logging.Log;
  9. import org.apache.commons.logging.LogFactory;
  10. /**
  11. * 会员缓存
  12. *
  13. * @author Scott
  14. */
  15. public class UserTokenCache {
  16. private static Log logger = LogFactory.getLog(UserTokenCache.class);
  17. static SimplePropertyPreFilter filter = new SimplePropertyPreFilter();
  18. /**
  19. * 存放user和token的关联关系
  20. */
  21. public static final String XCX_TOKEN_USER_PREFIXX = "xcx_token_user_";
  22. public static final String XCX_USER_TOKEN_PREFIXX = "xcx_user_token_";
  23. public static final String XCX_USER_INFO_PREFIXX = "xcx_user_info_";
  24. public static int wsTokenExpireTime = 3600 * 24 * 30;
  25. /**
  26. * 根据用户Id
  27. *
  28. * @param userId
  29. * @return
  30. */
  31. public static TokenEntity getUserTokenByUserId(Long userId) {
  32. String temp = JedisUtil.get(toUserTokenKey(userId));
  33. if (!org.springframework.util.StringUtils.isEmpty(temp)) {
  34. TokenEntity d = JSON.parseObject(temp, TokenEntity.class);
  35. return d;
  36. } else {
  37. return null;
  38. }
  39. }
  40. /**
  41. * 根据token
  42. *
  43. * @param token
  44. * @return
  45. */
  46. public static TokenEntity getUserInfoByToken(String token) {
  47. String temp = JedisUtil.get(toTokenUserKey(token));
  48. if (StringUtils.isNullOrEmpty(temp)) {
  49. return null;
  50. }
  51. String userID = toUserTokenKey(Long.valueOf(temp));
  52. String tokenEntityJson = JedisUtil.get(userID);
  53. if (!org.springframework.util.StringUtils.isEmpty(tokenEntityJson)) {
  54. TokenEntity d = JSON.parseObject(tokenEntityJson, TokenEntity.class);
  55. return d;
  56. } else {
  57. return null;
  58. }
  59. }
  60. public static void del(Long userId) {
  61. JedisUtil.del(toUserTokenKey(userId));
  62. }
  63. /**
  64. * 放置用户Id和token关系
  65. *
  66. * @param tokenEntity
  67. */
  68. public static void putUserToken(TokenEntity tokenEntity) {
  69. JedisUtil.set(toUserTokenKey(tokenEntity.getUserId()), fromTokenCacheString(tokenEntity), wsTokenExpireTime);
  70. JedisUtil.set(toTokenUserKey(tokenEntity.getToken()), tokenEntity.getUserId().toString(), wsTokenExpireTime);
  71. }
  72. private static String fromTokenCacheString(TokenEntity d) {
  73. if (d == null)
  74. return null;
  75. return JSON.toJSONString(d, filter);
  76. }
  77. private static String toUserTokenKey(Long userId) {
  78. return XCX_TOKEN_USER_PREFIXX + userId;
  79. }
  80. private static String toTokenUserKey(String token) {
  81. return XCX_USER_TOKEN_PREFIXX + token;
  82. }
  83. private static String toUserInfoKey(Long userId) {
  84. return XCX_USER_INFO_PREFIXX + userId;
  85. }
  86. public static UserVo getUserInfo(Long userId) {
  87. // logger.error("getUserInfo key:" + toUserInfoKey(userId));
  88. String temp = JedisUtil.get(toUserInfoKey(userId));
  89. // logger.error("getUserInfo temp:" + temp);
  90. if (!org.springframework.util.StringUtils.isEmpty(temp)) {
  91. UserVo d = JSON.parseObject(temp, UserVo.class);
  92. return d;
  93. } else {
  94. return null;
  95. }
  96. }
  97. public static void putUserInfo(UserVo userVo) {
  98. JedisUtil.set(toUserInfoKey(userVo.getId()), fromUserCacheString(userVo), wsTokenExpireTime);
  99. }
  100. private static String fromUserCacheString(UserVo d) {
  101. if (d == null)
  102. return null;
  103. return JSON.toJSONString(d, filter);
  104. }
  105. }