From 8a6f2c5bcfee77cf799d6b1f756d481dec866063 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Mon, 17 Mar 2025 22:51:23 +0800 Subject: [PATCH] =?UTF-8?q?feat(user):=20=E6=B7=BB=E5=8A=A0=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=BD=93=E5=89=8D=E7=99=BB=E5=BD=95=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E5=88=87=E6=8D=A2=E9=80=BB=E8=BE=91-=20?= =?UTF-8?q?=E5=9C=A8=20LoginController=20=E4=B8=AD=E6=B7=BB=E5=8A=A0=20cur?= =?UTF-8?q?rentUser=20=E6=96=B9=E6=B3=95=EF=BC=8C=E7=94=A8=E4=BA=8E?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=BD=93=E5=89=8D=E7=99=BB=E5=BD=95=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=BF=A1=E6=81=AF-=20=E5=9C=A8=20LoginUserService=20?= =?UTF-8?q?=E4=B8=AD=E5=AE=9E=E7=8E=B0=E6=B8=85=E9=99=A4=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E7=9A=84=E5=8A=9F=E8=83=BD=20-=20=E5=9C=A8?= =?UTF-8?q?=20OrganizationService=20=E4=B8=AD=E5=A2=9E=E5=8A=A0=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E7=BB=84=E7=BB=87=E5=BE=AA=E7=8E=AF=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E9=80=BB=E8=BE=91-=20=E4=BC=98=E5=8C=96=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=9C=8D=E5=8A=A1=EF=BC=8C=E4=B8=BA=20UserDto=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B4=BB=E5=8A=A8=E7=BB=84=E7=BB=87=20ID=20?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../loginUser/service/LoginUserService.java | 20 +++++++ .../service/OrganizationService.java | 54 ++++++++++++++----- .../session/controller/LoginController.java | 6 +++ .../coal/session/service/SessionService.java | 1 + .../cn/lihongjie/coal/user/dto/UserDto.java | 2 + .../coal/user/service/UserService.java | 1 + 6 files changed, 72 insertions(+), 12 deletions(-) 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;