全局登录态处理

This commit is contained in:
zhangchenbiao
2023-06-14 15:49:52 +08:00
parent 601f28b31e
commit 40c99a8337
9 changed files with 77 additions and 47 deletions

View File

@@ -1,30 +0,0 @@
package com.cool.store.context;
import com.alibaba.fastjson.JSON;
import org.apache.commons.lang3.StringUtils;
/**
*
*/
public class CurrentUserContext {
private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
public static CurrentUser getUser() {
String userStr = contextHolder.get();
if (StringUtils.isNotBlank(userStr)) {
return JSON.parseObject(userStr, CurrentUser.class);
}
return new CurrentUser();
}
public static void setUser(String user) {
contextHolder.set(user);
}
public static void removeUser(){
contextHolder.remove();
}
}

View File

@@ -0,0 +1,54 @@
package com.cool.store.context;
import com.alibaba.fastjson.JSON;
import com.cool.store.entity.SysRoleDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException;
import org.apache.commons.lang3.SerializationException;
import org.apache.commons.lang3.StringUtils;
import java.util.Optional;
/**
* 当前登录用户信息
*/
public class CurrentUserHolder {
private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
public static LoginUserInfo getUser() {
String userStr = contextHolder.get();
if (StringUtils.isNotBlank(userStr)) {
return JSON.parseObject(userStr, LoginUserInfo.class);
}
return new LoginUserInfo();
}
public static void setUser(String user) {
contextHolder.set(user);
}
public static void removeUser(){
contextHolder.remove();
}
/**
* 仅登录态可获取
* @return
*/
public static String getUserId(){
LoginUserInfo user = getUser();
return Optional.ofNullable(user).map(o->o.getUserId()).orElseThrow(()->new ServiceException(ErrorCodeEnum.ACCESS_TOKEN_INVALID));
}
/**
* 仅登录态可获取
* @return
*/
public static String getRoleId(){
LoginUserInfo user = getUser();
return Optional.ofNullable(user).map(LoginUserInfo::getSysRole).map(SysRoleDO::getRoleId).orElse(null);
}
}

View File

@@ -4,7 +4,7 @@ import com.cool.store.entity.SysRoleDO;
import lombok.Data;
@Data
public class CurrentUser {
public class LoginUserInfo {
private String userId;
@@ -29,5 +29,5 @@ public class CurrentUser {
*/
private String avatar;
private SysRoleDO sysRoleDO;
private SysRoleDO sysRole;
}

View File

@@ -12,5 +12,11 @@ import java.util.List;
*/
public interface MenuService {
List<MenuTreeVO> getUserMenus(String userId);
/**
* 获取用户某个角色的菜单
* @param userId
* @param roleId
* @return
*/
List<MenuTreeVO> getUserMenus(String userId, String roleId);
}

View File

@@ -1,9 +1,8 @@
package com.cool.store.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.constants.CommonConstants;
import com.cool.store.context.CurrentUser;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.context.DataSourceContext;
import com.cool.store.dao.*;
import com.cool.store.dto.login.RefreshUser;
@@ -51,7 +50,7 @@ public class LoginServiceImpl implements LoginService {
if (StringUtils.isEmpty(userId)) {
throw new ServiceException(ErrorCodeEnum.USER_NOT_EXIST);
}
CurrentUser currentUser = new CurrentUser();
LoginUserInfo currentUser = new LoginUserInfo();
RefreshUser refreshUser = new RefreshUser();
// 查企业用户
EnterpriseUserDO enterpriseUser = enterpriseUserDAO.getUserInfoById(userId);
@@ -76,7 +75,7 @@ public class LoginServiceImpl implements LoginService {
enterpriseUser.setFaceUrl(finalAvatar);
currentUser.setUserId(enterpriseUser.getUserId());
currentUser.setIsAdmin(enterpriseUser.getIsAdmin());
currentUser.setSysRoleDO(sysRole);
currentUser.setSysRole(sysRole);
currentUser.setCorpId(corpId);
currentUser.setAvatar(enterpriseUser.getAvatar());
//生成令牌

View File

@@ -24,7 +24,7 @@ public class MenuServiceImpl implements MenuService {
private SysMenuDAO sysMenuDAO;
@Override
public List<MenuTreeVO> getUserMenus(String userId) {
public List<MenuTreeVO> getUserMenus(String userId, String roleId) {
List<SysMenuDO> menuList= sysMenuDAO.selectMenuAll(null, PlatFormTypeEnum.PC.getCode());
return MenuTreeVO.dealMenuTree(CommonConstants.ZERO_LONG, menuList);
}