MrShi
7 天以前 e685b58fd40cf28a20844643d70cc5f5b46ca037
server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
@@ -18,10 +18,7 @@
import javax.annotation.Resource;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.concurrent.TimeUnit;
@Component
@@ -40,6 +37,8 @@
    @Resource
    private JwtProperties jwtProperties;
    //redis过期时间
    private static final Integer redisExpire = 365;
    /**
     * 生成token令牌
     *
@@ -67,6 +66,31 @@
    }
    /**
     * 生成token信息(同一用户仅保留一个有效token)
     * @param userId
     * @param userType 用户类型 0=会员;1=司机;2=店铺
     * @param userInfo
     * @param redisTemplate
     * @return
     */
    public static String generateTokenForRedis(Integer userId, Integer userType, String userInfo, RedisTemplate<String,Object> redisTemplate) {
        // 删除该用户之前登录的token
        String userTokenMappingKey = Constants.REDIS_TOKEN_KEY + "user_" + userType + "_" + userId;
        String oldToken = (String) redisTemplate.opsForValue().get(userTokenMappingKey);
        if (StringUtils.isNotBlank(oldToken)) {
            redisTemplate.delete(Constants.REDIS_TOKEN_KEY + oldToken);
        }
        // 生成新token
        String tokenKey = userType +""+ UUID.randomUUID() + "_" + userId;
        redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY + tokenKey, userInfo, redisExpire, TimeUnit.DAYS);
        // 记录用户与token的映射关系
        redisTemplate.opsForValue().set(userTokenMappingKey, tokenKey, redisExpire, TimeUnit.DAYS);
        return tokenKey;
    }
    /**
     * 刷新令牌
     *