mitao
2024-09-07 2862c3e4da3adbb4bea43151514f0c43b86476d6
xinquan-common/xinquan-common-security/src/main/java/com/xinquan/common/security/service/TokenService.java
@@ -9,8 +9,8 @@
import com.xinquan.common.core.utils.uuid.IdUtils;
import com.xinquan.common.redis.service.RedisService;
import com.xinquan.common.security.utils.SecurityUtils;
import com.xinquan.system.api.model.AppLoginUser;
import com.xinquan.system.api.model.LoginUser;
import com.xinquan.system.api.model.WXLoginUser;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@@ -36,6 +36,7 @@
    private final static long expireTime = CacheConstants.EXPIRATION;
    private final static String ACCESS_TOKEN = CacheConstants.LOGIN_TOKEN_KEY;
    private final static String APP_USER_ACCESS_TOKEN = CacheConstants.APP_USER_LOGIN_TOKEN_KEY;
    private final static Long MILLIS_MINUTE_TEN = CacheConstants.REFRESH_TIME * MILLIS_MINUTE;
@@ -163,40 +164,55 @@
        redisService.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
    }
    private void refreshToken4AppLoginUser(AppLoginUser appLoginUser) {
        appLoginUser.setLoginTime(System.currentTimeMillis());
        appLoginUser.setExpireTime(appLoginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
        // 根据uuid将loginUser缓存
        String userKey = getTokenKeyByAppLoginUser(appLoginUser.getToken());
        redisService.setCacheObject(userKey, appLoginUser, expireTime, TimeUnit.MINUTES);
    }
    private String getTokenKeyByAppLoginUser(String token) {
        return APP_USER_ACCESS_TOKEN + token;
    }
    private String getTokenKey(String token)
    {
        return ACCESS_TOKEN + token;
    }
    public Map<String, Object> createToken4WXLoginUser(WXLoginUser wxLoginUser) {
        LoginUser loginUser = new LoginUser();
    /**
     * app用户创建token
     *
     * @param appLoginUser
     * @return
     */
    public AppLoginUser createToken4AppLoginUser(AppLoginUser appLoginUser) {
        // Jwt存储信息
        Map<String, Object> claimsMap = new HashMap<String, Object>();
        // 接口返回信息
        Map<String, Object> rspMap = new HashMap<String, Object>();
        // 用户为空只返回openid
        rspMap.put("cellPhone", "");
        rspMap.put("access_token", "");
        if (wxLoginUser.getSysUser() != null) {
            loginUser.setSysUser(wxLoginUser.getSysUser());
            String token = IdUtils.fastUUID();
            Long userId = loginUser.getSysUser().getUserId();
            String userName = loginUser.getSysUser().getUserName();
            loginUser.setToken(token);
            loginUser.setUserid(userId);
            loginUser.setIpaddr(IpUtils.getIpAddr());
            refreshToken(loginUser);
            claimsMap.put(SecurityConstants.USER_KEY, token);
            claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId);
            claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
            if (StringUtils.isNotBlank(wxLoginUser.getCellPhone())) {
                rspMap.put("cellPhone", wxLoginUser.getCellPhone());
            } else {
                rspMap.put("cellPhone", "");
            }
            rspMap.put("access_token", JwtUtils.createToken(claimsMap));
            rspMap.put("expires_in", expireTime);
        }
        return rspMap;
        String token = IdUtils.fastUUID();
        Long userId = appLoginUser.getAppUserId();
        String userName = appLoginUser.getSysUser().getNickName();
        appLoginUser.setToken(token);
        appLoginUser.setUserid(userId);
        appLoginUser.setIpaddr(IpUtils.getIpAddr());
        LoginUser loginUser = new LoginUser();
        loginUser.setSysUser(appLoginUser.getSysUser());
        loginUser.setToken(token);
        loginUser.setUserid(userId);
        loginUser.setUsername(userName);
        loginUser.setIpaddr(IpUtils.getIpAddr());
        refreshToken(loginUser);
        // refreshToken4AppLoginUser(appLoginUser);
        claimsMap.put(SecurityConstants.USER_KEY, token);
        claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId);
        claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
        appLoginUser.setAccessToken(JwtUtils.createToken(claimsMap));
        appLoginUser.setExpireIn(expireTime);
        return appLoginUser;
    }
}