From a2740f4162246cc1034bb488341d98235101be59 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Wed, 29 Nov 2023 22:32:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=BA=E6=9E=84=E5=A2=9E=E5=8A=A0=E6=9C=89?= =?UTF-8?q?=E6=95=88=E6=9C=9F=E4=BB=A5=E5=8F=8A=E7=94=A8=E6=88=B7=E6=95=B0?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../organization/dto/CreateOrganizationDto.java | 14 ++++++++++++++ .../coal/organization/dto/OrganizationDto.java | 13 +++++++++++++ .../organization/dto/UpdateOrganizationDto.java | 13 +++++++++++++ .../organization/entity/OrganizationEntity.java | 16 ++++++++++++++++ .../service/OrganizationService.java | 4 ++++ .../lihongjie/coal/session/SessionService.java | 4 ++++ .../coal/user/repository/UserRepository.java | 4 ++++ .../lihongjie/coal/user/service/UserService.java | 13 +++++++++++++ 8 files changed, 81 insertions(+) diff --git a/src/main/java/cn/lihongjie/coal/organization/dto/CreateOrganizationDto.java b/src/main/java/cn/lihongjie/coal/organization/dto/CreateOrganizationDto.java index eb211aeb..889e2d9c 100644 --- a/src/main/java/cn/lihongjie/coal/organization/dto/CreateOrganizationDto.java +++ b/src/main/java/cn/lihongjie/coal/organization/dto/CreateOrganizationDto.java @@ -4,6 +4,10 @@ import cn.lihongjie.coal.base.dto.CommonDto; import lombok.Data; +import org.hibernate.annotations.Comment; + +import java.time.LocalDateTime; + @Data public class CreateOrganizationDto extends CommonDto { @@ -11,4 +15,14 @@ public class CreateOrganizationDto extends CommonDto { private String orgAdminUserName; private String orgAdminPassword; + + + + @Comment("最大用户数量") + private Integer maxUser; + + + + @Comment("过期时间") + private LocalDateTime expireTime; } diff --git a/src/main/java/cn/lihongjie/coal/organization/dto/OrganizationDto.java b/src/main/java/cn/lihongjie/coal/organization/dto/OrganizationDto.java index 8189564b..9baad05a 100644 --- a/src/main/java/cn/lihongjie/coal/organization/dto/OrganizationDto.java +++ b/src/main/java/cn/lihongjie/coal/organization/dto/OrganizationDto.java @@ -1,10 +1,23 @@ package cn.lihongjie.coal.organization.dto; import cn.lihongjie.coal.base.dto.CommonDto; + import lombok.Data; +import org.hibernate.annotations.Comment; + +import java.time.LocalDateTime; + @Data public class OrganizationDto extends CommonDto { private String parentId; + + @Comment("最大用户数量") + private Integer maxUser; + + + + @Comment("过期时间") + private LocalDateTime expireTime; } diff --git a/src/main/java/cn/lihongjie/coal/organization/dto/UpdateOrganizationDto.java b/src/main/java/cn/lihongjie/coal/organization/dto/UpdateOrganizationDto.java index 53cdb151..9e47c3f4 100644 --- a/src/main/java/cn/lihongjie/coal/organization/dto/UpdateOrganizationDto.java +++ b/src/main/java/cn/lihongjie/coal/organization/dto/UpdateOrganizationDto.java @@ -4,8 +4,21 @@ import cn.lihongjie.coal.base.dto.CommonDto; import lombok.Data; +import org.hibernate.annotations.Comment; + +import java.time.LocalDateTime; + @Data public class UpdateOrganizationDto extends CommonDto { private String parentId; + + + @Comment("最大用户数量") + private Integer maxUser; + + + + @Comment("过期时间") + private LocalDateTime expireTime; } diff --git a/src/main/java/cn/lihongjie/coal/organization/entity/OrganizationEntity.java b/src/main/java/cn/lihongjie/coal/organization/entity/OrganizationEntity.java index 48df8588..95f40d3e 100644 --- a/src/main/java/cn/lihongjie/coal/organization/entity/OrganizationEntity.java +++ b/src/main/java/cn/lihongjie/coal/organization/entity/OrganizationEntity.java @@ -12,6 +12,7 @@ import lombok.Setter; import org.hibernate.annotations.Comment; +import java.time.LocalDateTime; import java.util.List; @Entity @@ -28,4 +29,19 @@ public class OrganizationEntity extends CommonEntity { @JsonBackReference @JoinColumn(name = "parent_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT)) private OrganizationEntity parent; + + + @Comment("最大用户数量") + private Integer maxUser; + + + + @Comment("过期时间") + private LocalDateTime expireTime; + + + + + + } diff --git a/src/main/java/cn/lihongjie/coal/organization/service/OrganizationService.java b/src/main/java/cn/lihongjie/coal/organization/service/OrganizationService.java index 600cb236..06f205c4 100644 --- a/src/main/java/cn/lihongjie/coal/organization/service/OrganizationService.java +++ b/src/main/java/cn/lihongjie/coal/organization/service/OrganizationService.java @@ -26,6 +26,8 @@ import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; + @Service @Slf4j @Transactional @@ -107,6 +109,8 @@ class OrganizationService extends BaseService { UserEntity findByUsername(String username); int countByUsername(String username); + + @Query("select count(u) from UserEntity u where u.organizationId = ?1") + Integer countByOrganizationId(String organizationId); } 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 15ffbd3a..1d820e4a 100644 --- a/src/main/java/cn/lihongjie/coal/user/service/UserService.java +++ b/src/main/java/cn/lihongjie/coal/user/service/UserService.java @@ -8,6 +8,7 @@ import cn.lihongjie.coal.common.Constants; import cn.lihongjie.coal.common.Ctx; import cn.lihongjie.coal.exception.BizException; import cn.lihongjie.coal.organization.entity.OrganizationEntity; +import cn.lihongjie.coal.organization.service.OrganizationService; import cn.lihongjie.coal.permission.dto.PermissionSimpleDto; import cn.lihongjie.coal.permission.entity.PermissionEntity; import cn.lihongjie.coal.permission.mapper.PermissionMapper; @@ -72,8 +73,20 @@ public class UserService extends BaseService { passwordEncoder = new Pbkdf2PasswordEncoder("", 8, 10000, 256); } + @Autowired OrganizationService organizationService; + public UserDto create(CreateUserDto request) { + String organizationId = Ctx.currentUser().getOrganizationId(); + + OrganizationEntity organization = organizationService.get(organizationId); + + if (organization.getMaxUser() != null + && organization.getMaxUser() > 0 + && organization.getMaxUser() <= repository.countByOrganizationId(organizationId)) { + throw new BizException("用户数量已经达到上限 " + organization.getMaxUser() + " 个"); + } + StopWatch stopWatch = new StopWatch(); checkDuplicateUserName(request.getUsername());