diff --git a/src/main/java/cn/lihongjie/coal/loginUser/service/LoginUserService.java b/src/main/java/cn/lihongjie/coal/loginUser/service/LoginUserService.java index 6d7f4577..c1c28b12 100644 --- a/src/main/java/cn/lihongjie/coal/loginUser/service/LoginUserService.java +++ b/src/main/java/cn/lihongjie/coal/loginUser/service/LoginUserService.java @@ -336,6 +336,7 @@ public class LoginUserService extends BaseService()); reloadCache(request.getId()); return getById(entity.getId()); } + private void checkLoop(OrganizationEntity entity) { + + if (entity.getParent() == null) { + return; + } + + Set visited = new HashSet<>(); + + while (entity.getParent() != null) { + if (visited.contains(entity.getId())) { + throw new BizException("机构不能有循环"); + } + visited.add(entity.getId()); + + entity = entity.getParent(); + } + } + public OrganizationDto create(CreateOrganizationDto request) { OrganizationEntity entity = mapper.toEntity(request); @@ -123,6 +144,8 @@ public class OrganizationService extends BaseService()); return getById(entity.getId()); @@ -130,6 +153,16 @@ public class OrganizationService extends BaseService getDefaultPermissionIds(String organizationId) { - List id = em.createQuery( - "select p.id from OrganizationEntity o join o.permissions p where o.id = :id", - String.class) - .setParameter("id", organizationId) - .getResultList(); - return new HashSet<>( - id); + List id = + em.createQuery( + "select p.id from OrganizationEntity o join o.permissions p where o.id = :id", + String.class) + .setParameter("id", organizationId) + .getResultList(); + return new HashSet<>(id); } - public OrganizationTreeDto orgTree() { String s = Ctx.currentOrganizationId(); - return this.mapper.toTreeDto(this.repository.get(s)); - } } diff --git a/src/main/java/cn/lihongjie/coal/session/controller/LoginController.java b/src/main/java/cn/lihongjie/coal/session/controller/LoginController.java index 8ac83128..6b2eac56 100644 --- a/src/main/java/cn/lihongjie/coal/session/controller/LoginController.java +++ b/src/main/java/cn/lihongjie/coal/session/controller/LoginController.java @@ -50,6 +50,12 @@ public class LoginController extends BaseController { } + @PostMapping("/currentUser") + public UserDto currentUser(){ + return userService.getById(Ctx.getUserId()); + } + + @PostMapping("/trustDeviceBind") diff --git a/src/main/java/cn/lihongjie/coal/session/service/SessionService.java b/src/main/java/cn/lihongjie/coal/session/service/SessionService.java index c0c9df0e..0bfd0f04 100644 --- a/src/main/java/cn/lihongjie/coal/session/service/SessionService.java +++ b/src/main/java/cn/lihongjie/coal/session/service/SessionService.java @@ -128,6 +128,7 @@ public class SessionService { String organizationId = userEntity.getOrganizationId(); if (StringUtils.equals(request.getNewOrgId(), organizationId)){ + loginUserService.clearActiveOrg(Ctx.getSessionId(), request); return; } diff --git a/src/main/java/cn/lihongjie/coal/user/dto/UserDto.java b/src/main/java/cn/lihongjie/coal/user/dto/UserDto.java index 44883042..c240c166 100644 --- a/src/main/java/cn/lihongjie/coal/user/dto/UserDto.java +++ b/src/main/java/cn/lihongjie/coal/user/dto/UserDto.java @@ -35,6 +35,8 @@ public class UserDto extends OrgCommonDto { private List roles; private List otherRoles; + private String activeOrganizationId; + @Data diff --git a/src/main/java/cn/lihongjie/coal/user/service/UserService.java b/src/main/java/cn/lihongjie/coal/user/service/UserService.java index 0bd322ad..ab25805a 100644 --- a/src/main/java/cn/lihongjie/coal/user/service/UserService.java +++ b/src/main/java/cn/lihongjie/coal/user/service/UserService.java @@ -244,6 +244,7 @@ public class UserService extends BaseService { UserDto dto = mapper.toDto(user); if (Ctx.isLoggedIn()) { dto.setSessionId(Ctx.getSessionId()); + dto.setActiveOrganizationId(Ctx.activeOrganizationId()); } return dto;