1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package com.caimei.annotation;
- import com.caimei.components.RedisService;
- import com.caimei.mapper.cmMapper.SystemMapper;
- import com.caimei.model.po.SysUser;
- import com.caimei.model.po.UserPo;
- import com.caimei.utils.JwtUtil;
- import org.apache.commons.lang.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.core.MethodParameter;
- import org.springframework.stereotype.Component;
- import org.springframework.web.bind.support.WebDataBinderFactory;
- import org.springframework.web.context.request.NativeWebRequest;
- import org.springframework.web.method.support.HandlerMethodArgumentResolver;
- import org.springframework.web.method.support.ModelAndViewContainer;
- import javax.annotation.Resource;
- /**
- * @author Aslee
- * @date 2022/7/22
- * 统一处理供应商和供应商子用户登陆后,authUserId不明确的问题
- */
- @Component
- public class CurrentUserResolver implements HandlerMethodArgumentResolver {
- private RedisService redisService;
- @Autowired
- public void setRedisService(RedisService redisService) {
- this.redisService = redisService;
- }
- @Resource
- private SystemMapper systemMapper;
- @Override
- public boolean supportsParameter(MethodParameter parameter) {
- return parameter.hasParameterAnnotation(CurrentUser.class) &&
- parameter.getParameterType().isAssignableFrom(SysUser.class);
- }
- @Override
- public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer container,
- NativeWebRequest request, WebDataBinderFactory factory) {
- // header中获取用户token
- String token = request.getHeader("X-Token");
- String cacheToken = null!=token ? String.valueOf(redisService.get(token)) : null;
- // Redis过期后会得到"null"值,所以需判断字符串"null"
- if (cacheToken != null && cacheToken.length() != 0 && !"null".equals(cacheToken)) {
- if (!cacheToken.contains(",")) {
- // 后台管理员/供应商/供应商子用户登录
- Integer authUserId = JwtUtil.parseTokenUid(cacheToken);
- return systemMapper.getUser(authUserId);
- } else {
- // 前端机构用户登录
- /*String[] tokenArr = cacheToken.split(",");
- Integer authUserId = Integer.parseInt(tokenArr[1]);
- return systemMapper.getUser(authUserId);*/
- return null;
- }
- }
- // return systemMapper.getUser(17);
- return null;
- }
- }
|