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 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 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 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 currentPath(){ if(RequestContextHolder.getRequestAttributes()==null){ Map 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 map = new HashMap<>(); map.put("ip",ip); map.put("path",path); return map; } }