From e74226d2d43c71bd06ec95773f7374c43f5dc769 Mon Sep 17 00:00:00 2001 From: huk Date: Sat, 13 Sep 2025 12:37:23 +0800 Subject: [PATCH] =?UTF-8?q?feat(system):=20=E5=A2=9E=E5=8A=A0=E7=A7=9F?= =?UTF-8?q?=E6=88=B7=E5=88=9B=E5=BB=BA=E6=9D=83=E9=99=90=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E7=A7=9F=E6=88=B7=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改代理商租户类型创建权限,允许创建代理商、商户和达人类型 - 在 SysTenant 模型中添加 parentIds 字段,用于存储所有父级 ID - 在 SysTenantPackageServiceImpl 中添加对租户类型筛选的支持- 优化 SysTenantServiceImpl 中的租户创建逻辑,设置正确的 parentIds - 在 SysTenantVo 和 TenantDTO 中添加 parentIds 字段的定义 --- .../java/org/dromara/common/core/enums/TenantType.java | 2 +- .../src/main/java/org/dromara/system/domain/SysTenant.java | 3 +++ .../main/java/org/dromara/system/domain/dto/TenantDTO.java | 5 +++-- .../java/org/dromara/system/domain/vo/SysTenantVo.java | 7 +++---- .../system/service/impl/SysTenantPackageServiceImpl.java | 1 + .../dromara/system/service/impl/SysTenantServiceImpl.java | 7 +++++-- 6 files changed, 16 insertions(+), 9 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/TenantType.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/TenantType.java index 3f4ff5a3d..9ead9dbab 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/TenantType.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/TenantType.java @@ -36,7 +36,7 @@ public enum TenantType { allow = true; } else if (currentTenantType == TenantType.AGENT.type) { // 代理商只能创建商铺或达人 - allow = newTenantType == TenantType.MERCHANT.type || newTenantType == TenantType.REFERENCE.type; + allow = newTenantType == TenantType.AGENT.type || newTenantType == TenantType.MERCHANT.type || newTenantType == TenantType.REFERENCE.type; } return allow; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java index 3cf7b6098..0e679a9df 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java @@ -36,6 +36,9 @@ public class SysTenant extends BaseEntity { @Schema(description = "租户编号") private String tenantId; + @Schema(description = "所有父级id") + private String parentIds; + @Schema(description = "企业名称") private String companyName; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/dto/TenantDTO.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/dto/TenantDTO.java index f6d8088c9..d2f7f95dd 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/dto/TenantDTO.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/dto/TenantDTO.java @@ -11,8 +11,6 @@ import java.time.LocalDateTime; @Data public class TenantDTO { - @Serial - private static final long serialVersionUID = 1L; @Schema(description = "id") @TableId(value = "id") @@ -21,6 +19,9 @@ public class TenantDTO { @Schema(description = "租户编号") private String tenantId; + @Schema(description = "所有父级id") + private String parentIds; + @Schema(description = "企业名称") private String companyName; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java index 6486cf3aa..54805d326 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java @@ -1,10 +1,7 @@ package org.dromara.system.domain.vo; -import java.math.BigDecimal; import java.time.LocalDateTime; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import io.swagger.v3.oas.annotations.media.Schema; @@ -14,7 +11,6 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; -import java.util.List; /** @@ -37,6 +33,9 @@ public class SysTenantVo implements Serializable { @Schema(description = "租户编号") private String tenantId; + @Schema(description = "所有父级id") + private String parentIds; + @Schema(description = "企业名称") private String companyName; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantPackageServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantPackageServiceImpl.java index 7d036b782..e339682cd 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantPackageServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantPackageServiceImpl.java @@ -75,6 +75,7 @@ public class SysTenantPackageServiceImpl implements ISysTenantPackageService { private LambdaQueryWrapper buildQueryWrapper(SysTenantPackageBo bo) { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.like(StringUtils.isNotBlank(bo.getPackageName()), SysTenantPackage::getPackageName, bo.getPackageName()); + lqw.like(bo.getTenantType() != null, SysTenantPackage::getTenantType, bo.getTenantType()); lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysTenantPackage::getStatus, bo.getStatus()); lqw.orderByAsc(SysTenantPackage::getPackageId); return lqw; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java index d1f07a7cb..0c898828e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Assert; +import cn.hutool.core.text.StrBuilder; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; @@ -136,8 +137,8 @@ public class SysTenantServiceImpl implements ISysTenantService { SysTenant tenant = new SysTenant(); String currentTenantId = LoginHelper.getTenantId(); - SysTenantVo sysTenantVo = this.queryByTenantId(currentTenantId); - Assert.isTrue(TenantType.allowCreateByType(sysTenantVo.getType(), bo.getType()), () -> new ServiceException("您无权限创建此类型的租户")); + SysTenantVo currentTenant = this.queryByTenantId(currentTenantId); + Assert.isTrue(TenantType.allowCreateByType(currentTenant.getType(), bo.getType()), () -> new ServiceException("您无权限创建此类型的租户")); // 生成租户ID List tenantIds = baseMapper.selectObjs( @@ -156,6 +157,8 @@ public class SysTenantServiceImpl implements ISysTenantService { } // 设置sys_tenant表字段 tenant.setTenantId(tenantId); + String parentIds = StrUtil.isBlank(currentTenant.getParentIds()) ? String.valueOf(currentTenant.getId()) : StrBuilder.create(currentTenant.getParentIds()).append(",").append(currentTenant.getId()).toString(); + tenant.setParentIds(parentIds); tenant.setCompanyName(StrUtil.isBlank(bo.getCompanyName()) ? tenantName : bo.getCompanyName()); tenant.setLicenseNumber(bo.getLicenseNumber()); tenant.setAddress(bo.getAddress());