package com.ks.daylucky.util;
|
|
import com.ks.daylucky.pojo.DO.UserInfo;
|
import com.ks.daylucky.pojo.DTO.TokenDTO;
|
import com.ks.daylucky.pojo.DTO.TokenParseResultDTO;
|
import com.ks.lucky.pojo.DO.BaseUser;
|
import org.yeshi.utils.StringUtil;
|
import org.yeshi.utils.encrypt.AESUtil;
|
|
import java.util.List;
|
|
public class UserInfoUtil {
|
|
private final static String TOKEN_KEY = "@2020_Ks@8#8";
|
|
|
/**
|
* 获取用户唯一标识
|
*
|
* @param userInfo
|
* @return
|
*/
|
public static String getIdentifyCode(UserInfo userInfo) {
|
if (!StringUtil.isNullOrEmpty(userInfo.getAlipayUid())) {
|
return userInfo.getAlipayUid();
|
} else if (!StringUtil.isNullOrEmpty(userInfo.getWxOpenId())) {
|
return userInfo.getWxOpenId();
|
}
|
return null;
|
}
|
|
public static TokenDTO getToken(Long uid) {
|
//用户ID#到期时间戳
|
//有效期为12小时
|
long expireTime = System.currentTimeMillis() + 1000 * 60 * 60L * 12;
|
String tokenSource = String.format("%s#%s", uid + "", expireTime);
|
return new TokenDTO(AESUtil.encrypt(tokenSource, TOKEN_KEY), expireTime);
|
}
|
|
/**
|
* 获取token的状态
|
*
|
* @param token
|
* @return
|
*/
|
public static TokenParseResultDTO parseToken(String token) {
|
String result = AESUtil.decrypt(token, TOKEN_KEY);
|
if (StringUtil.isNullOrEmpty(result)) {
|
return new TokenParseResultDTO(TokenParseResultDTO.TOKEN_STATE_ERROR, null);
|
}
|
long time = Long.parseLong(result.split("#")[1]);
|
long uid = Long.parseLong(result.split("#")[0]);
|
|
if (time < System.currentTimeMillis()) {
|
return new TokenParseResultDTO(TokenParseResultDTO.TOKEN_STATE_OUT_DATE, null);
|
}
|
|
return new TokenParseResultDTO(TokenParseResultDTO.TOKEN_STATE_VALID, uid);
|
}
|
|
public static BaseUser[] getBaseUserList(List<? extends BaseUser> list) {
|
BaseUser[] users = new BaseUser[list.size()];
|
list.toArray(users);
|
return users;
|
}
|
|
|
}
|