|
@ -28,12 +28,17 @@ import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.lang.Dict;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
|
import cn.stylefeng.guns.core.consts.CommonConstant;
|
|
|
import cn.stylefeng.guns.core.context.constant.ConstantContextHolder;
|
|
|
import cn.stylefeng.guns.core.exception.ServiceException;
|
|
|
import cn.stylefeng.guns.core.exception.enums.ServerExceptionEnum;
|
|
|
import cn.stylefeng.guns.core.pojo.login.LoginEmpInfo;
|
|
|
import cn.stylefeng.guns.core.pojo.login.SysLoginUser;
|
|
|
import cn.stylefeng.guns.core.tenant.consts.TenantConstants;
|
|
|
import cn.stylefeng.guns.core.tenant.context.TenantCodeHolder;
|
|
|
import cn.stylefeng.guns.core.tenant.context.TenantDbNameHolder;
|
|
|
import cn.stylefeng.guns.core.util.HttpServletUtil;
|
|
|
import cn.stylefeng.guns.core.util.IpAddressUtil;
|
|
|
import cn.stylefeng.guns.core.util.UaUtil;
|
|
@ -80,27 +85,27 @@ public class LoginUserFactory {
|
|
|
sysLoginUser.setLastLoginOs(UaUtil.getOs(request));
|
|
|
Long userId = sysLoginUser.getId();
|
|
|
|
|
|
//员工信息
|
|
|
// 员工信息
|
|
|
LoginEmpInfo loginEmpInfo = sysEmpService.getLoginEmpInfo(userId);
|
|
|
sysLoginUser.setLoginEmpInfo(loginEmpInfo);
|
|
|
|
|
|
//角色信息
|
|
|
// 角色信息
|
|
|
List<Dict> roles = sysRoleService.getLoginRoles(userId);
|
|
|
sysLoginUser.setRoles(roles);
|
|
|
|
|
|
//权限信息
|
|
|
// 权限信息
|
|
|
List<String> permissions = sysMenuService.getLoginPermissions(userId);
|
|
|
sysLoginUser.setPermissions(permissions);
|
|
|
|
|
|
//数据范围信息
|
|
|
// 数据范围信息
|
|
|
List<Long> dataScopes = sysUserService.getUserDataScopeIdList(userId, loginEmpInfo.getOrgId());
|
|
|
sysLoginUser.setDataScopes(dataScopes);
|
|
|
|
|
|
//具备应用信息(多系统,默认激活一个,可根据系统切换菜单),返回的结果中第一个为激活的系统
|
|
|
// 具备应用信息(多系统,默认激活一个,可根据系统切换菜单),返回的结果中第一个为激活的系统
|
|
|
List<Dict> apps = sysAppService.getLoginApps(userId);
|
|
|
sysLoginUser.setApps(apps);
|
|
|
|
|
|
//如果根本没有应用信息,则没有菜单信息
|
|
|
// 如果根本没有应用信息,则没有菜单信息
|
|
|
if (ObjectUtil.isEmpty(apps)) {
|
|
|
sysLoginUser.setMenus(CollectionUtil.newArrayList());
|
|
|
} else {
|
|
@ -108,6 +113,21 @@ public class LoginUserFactory {
|
|
|
String defaultActiveAppCode = apps.get(0).getStr(CommonConstant.CODE);
|
|
|
sysLoginUser.setMenus(sysMenuService.getLoginMenusAntDesign(userId, defaultActiveAppCode));
|
|
|
}
|
|
|
|
|
|
//如果开启了多租户功能,则设置当前登录用户的租户标识
|
|
|
if (ConstantContextHolder.getTenantOpenFlag()) {
|
|
|
String tenantCode = TenantCodeHolder.get();
|
|
|
String dataBaseName = TenantDbNameHolder.get();
|
|
|
if (StrUtil.isNotBlank(tenantCode) && StrUtil.isNotBlank(dataBaseName)) {
|
|
|
Dict tenantInfo = Dict.create();
|
|
|
tenantInfo.set(TenantConstants.TENANT_CODE, tenantCode);
|
|
|
tenantInfo.set(TenantConstants.TENANT_DB_NAME, dataBaseName);
|
|
|
}
|
|
|
//注意,这里remove不代表所有情况,在aop remove
|
|
|
TenantCodeHolder.remove();
|
|
|
TenantDbNameHolder.remove();
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
throw new ServiceException(ServerExceptionEnum.REQUEST_EMPTY);
|
|
|
}
|