会话模式配置

yun-zuoyi
汪云昊 5 years ago
parent 6dccdf0a01
commit 5361c81c3d

@ -28,6 +28,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
@ -248,7 +249,9 @@ public class AuthController extends CoreBaseController {
if (AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)) {
SysMenu sysMenu = new SysMenu();
sysMenu.setMenuType(CommonEnumUtil.METHOD_LEVEL.PLUGIN.getValue());
list = sysMenuService.findAllByBean(sysMenu);
list = sysMenuService.findAllByBean(sysMenu).stream()
.filter(menu -> menu.getId() != 100000000L)
.collect(Collectors.toList());
} else {
List<SysMenu> menuList = memTreeService.packTreeSysMenuByUserId(getSessionUser().getUser().getId());
list = memTreeService.packTreeSysMenuByParentIdAndMenuType(menuList, CommonConstWords.SYSTEM_MENU_ROOT_ID, CommonEnumUtil.METHOD_LEVEL.PLUGIN.getValue());

@ -98,6 +98,10 @@ public class WhiteController extends CoreBaseController {
@Autowired
private ILicenseClickService licenseClickService;
@Resource(name= CommonConstWords.IMPP_REDIS_SESSION)
private ImppRedis redisSession;
@GetMapping(value = "/sys-locale-language/list")
@ApiOperation(value = "查询可用语言",notes = "查询可用语言")
public ResultBean listSysLocaleLanguage(){
@ -581,4 +585,20 @@ public class WhiteController extends CoreBaseController {
return ResultBean.fail(e).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode());
}
}
@GetMapping(value = "/forced-offline/{loginName}")
@ApiOperation(value = "强制下线", notes = "强制下线")
public ResultBean forcedOffline(@PathVariable("loginName") String loginName){
try {
SysUser sysUser = userService.getSysUserByLoginName(loginName);
ValidatorBean.checkNotNull(sysUser,"用户不存在,请检查【登录名】");
redisSession.deleteBatchKey(CommonConstWords.SESSION_USER + ":*_" + sysUser.getId());
return ResultBean.success("操作成功");
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ResultBean.fail(e).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode());
}
}
}

@ -54,6 +54,7 @@ public class SysToolTypeController extends CoreBaseController{
// 条件校验
ValidatorBean.beginValid(toolType).notNull("name",toolType.getName());
toolType.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
// 添加初始化
ConvertBean.modelInitialize(toolType, AuthUtil.getSessionUser());

@ -151,6 +151,9 @@ public class SysUserService implements ISysUserService {
if(user == null){
throw new CredentialsException("用户不存在");
}
// 判断会话模式
checkSessionMode(user.getId());
packSessionUser(sessionUser, user, user.getUserType(),loginPlatform, languageCode,deviceId);
packConfigSessionUser(sessionUser, user);
AuthUtil.setSessionUser(sessionUser);
@ -160,6 +163,24 @@ public class SysUserService implements ISysUserService {
return sessionUser;
}
private void checkSessionMode(Long userId){
int sessionMode = RedisCacheTool.getSysConfigIntVal(CommonConstWords.CONFIG_SESSION_MODE,
CommonEnumUtil.SESSION_MODE.OVERWRITE.getValue());
if (sessionMode == CommonEnumUtil.SESSION_MODE.SEIZE.getValue()) {
String redisKey = CommonConstWords.SESSION_USER + ":*_" + userId;
List<Object> ds = redisSession.scan(redisKey);
if (CollectionUtils.isNotEmpty(ds)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.LOGIN_EXCEPTION_LOGGED.getCode())
.setErrorDetail("用户已在其他设备登录,无法同时登录!")
.setErrorSolution("请联系管理员")
.build();
}
}
}
@Override
public BaseToken getToken(String loginName, String password, String languageCode, Integer loginPlatform) {
SysUser user = this.getSysUserByLoginName(loginName);
@ -670,7 +691,7 @@ public class SysUserService implements ISysUserService {
if(configPageSize != null && StringUtils.isNotBlank(configPageSize.getConfigValue())){
sessionUser.setPageDefaultSize(Integer.parseInt(configPageSize.getConfigValue()));
}
}catch (Exception e){
}catch (Exception ignored){
}
if(sessionUser.getPageDefaultSize() == null || sessionUser.getPageDefaultSize() <= 0){
@ -781,7 +802,11 @@ public class SysUserService implements ISysUserService {
});
List<SysRole> roleList = roleService.findByIdList(ids);
roleList.forEach(role -> menuIdList.addAll(role.getMenuIdList()));
roleList.forEach(role -> {
if (role.getMenuIdList() != null) {
menuIdList.addAll(role.getMenuIdList());
}
});
List<SysMenu> menuList = menuService.findByIdList(new ArrayList<>(menuIdList));
if(CollectionUtils.isNotEmpty(menuList)){
for (SysMenu menu : menuList) {

Loading…
Cancel
Save