package com.thhy.general.utils;
|
|
import com.thhy.general.common.BasicStatus;
|
import com.thhy.general.config.BasicContext;
|
import com.thhy.general.config.SysUserInfo;
|
import com.thhy.general.exception.BasicException;
|
import com.thhy.general.config.GlobalConfig;
|
import org.redisson.api.RBucket;
|
import org.redisson.api.RedissonClient;
|
import org.springframework.web.context.request.RequestContextHolder;
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
/**
|
* @Author: zhang_xiao_bo
|
* @Date: 2022/3/24 10:53
|
* @description: 用户信息相关
|
*/
|
public class UserInfoUtils {
|
|
private UserInfoUtils(){
|
|
}
|
|
private static volatile UserInfoUtils instance = null;
|
|
private static RedissonClient redissonClient = null;
|
|
private static GlobalConfig globalConfig = null;
|
|
public static UserInfoUtils getInstance(){
|
if(instance == null){
|
synchronized (UserInfoUtils.class){
|
if(instance == null){
|
redissonClient = SpringContextUtils.getBean(RedissonClient.class);
|
globalConfig = SpringContextUtils.getBean(GlobalConfig.class);
|
instance = new UserInfoUtils();
|
return instance;
|
}
|
}
|
}
|
return instance;
|
}
|
|
public SysUserInfo getUserInfo(){
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
String userToken = request.getHeader("usertoken");
|
RBucket<SysUserInfo> rBucket = redissonClient.getBucket(globalConfig.getKeyPrefix()+":usertoken:"+ userToken);
|
SysUserInfo sysUserInfo = rBucket.get();
|
if(sysUserInfo==null){
|
throw new BasicException(BasicStatus.TOKEN_IS_NULL);
|
}
|
if(sysUserInfo.getUserId()==null){
|
throw new BasicException(BasicStatus.LOGIN_INFO_IS_ERROR);
|
}
|
return sysUserInfo;
|
}
|
|
/**
|
* 这个参数只是为了区别上个方法
|
* 佛系调用,有无皆可
|
* @param flag
|
* @return
|
*/
|
public SysUserInfo getUserInfo(boolean flag){
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
String userToken = request.getHeader("usertoken");
|
RBucket<SysUserInfo> rBucket = redissonClient.getBucket(globalConfig.getKeyPrefix()+":usertoken:"+ userToken);
|
SysUserInfo sysUserInfo = rBucket.get();
|
if(sysUserInfo==null){
|
return null;
|
}
|
if(sysUserInfo.getUserId()==null){
|
return null;
|
}
|
return sysUserInfo;
|
}
|
|
public SysUserInfo getUserInfo(String token){
|
RBucket<SysUserInfo> rBucket = redissonClient.getBucket(globalConfig.getKeyPrefix()+":usertoken:"+ token);
|
SysUserInfo sysUserInfo = rBucket.get();
|
if(sysUserInfo==null){
|
throw new BasicException(BasicStatus.TOKEN_IS_NULL);
|
}
|
if(sysUserInfo.getUserId()==null){
|
throw new BasicException(BasicStatus.LOGIN_INFO_IS_ERROR);
|
}
|
return sysUserInfo;
|
}
|
|
public Map<String,Object> currentPath(){
|
if(RequestContextHolder.getRequestAttributes()==null){
|
Map<String,Object> map = new HashMap<>();
|
map.put("ip","");
|
map.put("path","");
|
return map;
|
}
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
String path = request.getRequestURI().toString();
|
String ip = request.getRemoteAddr();
|
Map<String,Object> map = new HashMap<>();
|
map.put("ip",ip);
|
map.put("path",path);
|
return map;
|
}
|
}
|