mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-11-04 10:57:10 +08:00 
			
		
		
		
	refactor(tenant): 优化租户管理表字段设计
This commit is contained in:
		@@ -46,12 +46,12 @@ public class TenantDTO implements Serializable {
 | 
				
			|||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 管理员用户名
 | 
					     * 管理员用户名
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private String username;
 | 
					    private String adminUsername;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 管理员密码
 | 
					     * 管理员密码
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private String password;
 | 
					    private String adminPassword;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 套餐 ID
 | 
					     * 套餐 ID
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,7 +49,7 @@ public class TenantDO extends BaseDO {
 | 
				
			|||||||
    private String code;
 | 
					    private String code;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 绑定域名
 | 
					     * 域名
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private String domain;
 | 
					    private String domain;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -69,10 +69,15 @@ public class TenantDO extends BaseDO {
 | 
				
			|||||||
    private DisEnableStatusEnum status;
 | 
					    private DisEnableStatusEnum status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 租户管理员
 | 
					     * 管理员用户
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private Long adminUser;
 | 
					    private Long adminUser;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 管理员用户名
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String adminUsername;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 套餐 ID
 | 
					     * 套餐 ID
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,11 +54,11 @@ public class TenantReq implements Serializable {
 | 
				
			|||||||
    private String name;
 | 
					    private String name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 绑定域名
 | 
					     * 域名
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "绑定域名", example = "https://T0sL6RWv0vFh.continew.top/")
 | 
					    @Schema(description = "域名", example = "https://T0sL6RWv0vFh.continew.top/")
 | 
				
			||||||
    @Length(max = 255, message = "绑定域名长度不能超过 {max} 个字符")
 | 
					    @Length(max = 255, message = "域名长度不能超过 {max} 个字符")
 | 
				
			||||||
    @Pattern(regexp = RegexConstants.HTTP_HOST, message = "绑定域名格式不正确")
 | 
					    @Pattern(regexp = RegexConstants.HTTP_HOST, message = "域名格式不正确")
 | 
				
			||||||
    private String domain;
 | 
					    private String domain;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -89,19 +89,19 @@ public class TenantReq implements Serializable {
 | 
				
			|||||||
    private Long packageId;
 | 
					    private Long packageId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 用户名
 | 
					     * 管理员用户名
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "用户名", example = "zhangsan")
 | 
					    @Schema(description = "管理员用户名", example = "zhangsan")
 | 
				
			||||||
    @NotBlank(message = "用户名不能为空", groups = CrudValidationGroup.Create.class)
 | 
					    @NotBlank(message = "管理员用户名不能为空", groups = CrudValidationGroup.Create.class)
 | 
				
			||||||
    @Pattern(regexp = RegexConstants.USERNAME, message = "用户名长度为 4-64 个字符,支持大小写字母、数字、下划线,以字母开头")
 | 
					    @Pattern(regexp = RegexConstants.USERNAME, message = "管理员用户名长度为 4-64 个字符,支持大小写字母、数字、下划线,以字母开头")
 | 
				
			||||||
    private String username;
 | 
					    private String adminUsername;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 密码(加密)
 | 
					     * 管理员密码(加密)
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "密码(加密)", example = "E7c72TH+LDxKTwavjM99W1MdI9Lljh79aPKiv3XB9MXcplhm7qJ1BJCj28yaflbdVbfc366klMtjLIWQGqb0qw==")
 | 
					    @Schema(description = "管理员密码(加密)", example = "E7c72TH+LDxKTwavjM99W1MdI9Lljh79aPKiv3XB9MXcplhm7qJ1BJCj28yaflbdVbfc366klMtjLIWQGqb0qw==")
 | 
				
			||||||
    @NotBlank(message = "密码不能为空", groups = CrudValidationGroup.Create.class)
 | 
					    @NotBlank(message = "管理员密码不能为空", groups = CrudValidationGroup.Create.class)
 | 
				
			||||||
    private String password;
 | 
					    private String adminPassword;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 编码
 | 
					     * 编码
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,10 +61,10 @@ public class TenantResp extends BaseDetailResp {
 | 
				
			|||||||
    private String code;
 | 
					    private String code;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 绑定域名
 | 
					     * 域名
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "绑定域名", example = "https://T0sL6RWv0vFh.continew.top/")
 | 
					    @Schema(description = "域名", example = "T0sL6RWv0vFh.continew.top")
 | 
				
			||||||
    @ExcelProperty(value = "绑定域名", order = 4)
 | 
					    @ExcelProperty(value = "域名", order = 4)
 | 
				
			||||||
    private String domain;
 | 
					    private String domain;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -88,11 +88,23 @@ public class TenantResp extends BaseDetailResp {
 | 
				
			|||||||
    @ExcelProperty(value = "状态", converter = ExcelBaseEnumConverter.class, order = 8)
 | 
					    @ExcelProperty(value = "状态", converter = ExcelBaseEnumConverter.class, order = 8)
 | 
				
			||||||
    private DisEnableStatusEnum status;
 | 
					    private DisEnableStatusEnum status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 管理员用户
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Schema(description = "管理员用户", example = "2")
 | 
				
			||||||
 | 
					    private Long adminUser;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 管理员用户名
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Schema(description = "管理员用户名", example = "admin")
 | 
				
			||||||
 | 
					    @ExcelProperty(value = "管理员用户名", order = 9)
 | 
				
			||||||
 | 
					    private String adminUsername;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 套餐 ID
 | 
					     * 套餐 ID
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Schema(description = "套餐 ID", example = "1")
 | 
					    @Schema(description = "套餐 ID", example = "1")
 | 
				
			||||||
    @ExcelProperty(value = "套餐 ID", order = 9)
 | 
					 | 
				
			||||||
    @AssembleMethod(props = @Mapping(src = "name", ref = "packageName"), targetType = PackageService.class, method = @ContainerMethod(bindMethod = "get", resultType = PackageResp.class))
 | 
					    @AssembleMethod(props = @Mapping(src = "name", ref = "packageName"), targetType = PackageService.class, method = @ContainerMethod(bindMethod = "get", resultType = PackageResp.class))
 | 
				
			||||||
    private Long packageId;
 | 
					    private Long packageId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,9 +36,9 @@ import java.util.List;
 | 
				
			|||||||
public interface TenantService extends BaseService<TenantResp, TenantDetailResp, TenantQuery, TenantReq>, IService<TenantDO> {
 | 
					public interface TenantService extends BaseService<TenantResp, TenantDetailResp, TenantQuery, TenantReq>, IService<TenantDO> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 根据绑定域名查询
 | 
					     * 根据域名查询
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param domain 绑定域名
 | 
					     * @param domain 域名
 | 
				
			||||||
     * @return ID
 | 
					     * @return ID
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    Long getIdByDomain(String domain);
 | 
					    Long getIdByDomain(String domain);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -197,16 +197,16 @@ public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, TenantDO, T
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 检查绑定域名是否重复
 | 
					     * 检查域名是否重复
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param domain 绑定域名
 | 
					     * @param domain 域名
 | 
				
			||||||
     * @param id     ID
 | 
					     * @param id     ID
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private void checkDomainRepeat(String domain, Long id) {
 | 
					    private void checkDomainRepeat(String domain, Long id) {
 | 
				
			||||||
        CheckUtils.throwIf(baseMapper.lambdaQuery()
 | 
					        CheckUtils.throwIf(baseMapper.lambdaQuery()
 | 
				
			||||||
            .eq(TenantDO::getDomain, domain)
 | 
					            .eq(TenantDO::getDomain, domain)
 | 
				
			||||||
            .ne(id != null, TenantDO::getId, id)
 | 
					            .ne(id != null, TenantDO::getId, id)
 | 
				
			||||||
            .exists(), "绑定域名为 [{}] 的租户已存在", domain);
 | 
					            .exists(), "域名为 [{}] 的租户已存在", domain);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,11 +7,12 @@ CREATE TABLE IF NOT EXISTS `tenant` (
 | 
				
			|||||||
    `id`             bigint(20)   NOT NULL AUTO_INCREMENT     COMMENT 'ID',
 | 
					    `id`             bigint(20)   NOT NULL AUTO_INCREMENT     COMMENT 'ID',
 | 
				
			||||||
    `name`           varchar(30)  NOT NULL                    COMMENT '名称',
 | 
					    `name`           varchar(30)  NOT NULL                    COMMENT '名称',
 | 
				
			||||||
    `code`           varchar(30)  NOT NULL                    COMMENT '编码',
 | 
					    `code`           varchar(30)  NOT NULL                    COMMENT '编码',
 | 
				
			||||||
    `domain`      varchar(255) DEFAULT NULL                COMMENT '绑定域名',
 | 
					    `domain`         varchar(255) DEFAULT NULL                COMMENT '域名',
 | 
				
			||||||
    `expire_time`    datetime     DEFAULT NULL                COMMENT '过期时间',
 | 
					    `expire_time`    datetime     DEFAULT NULL                COMMENT '过期时间',
 | 
				
			||||||
    `description`    varchar(200) DEFAULT NULL                COMMENT '描述',
 | 
					    `description`    varchar(200) DEFAULT NULL                COMMENT '描述',
 | 
				
			||||||
    `status`         tinyint(1)   UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(1:启用;2:禁用)',
 | 
					    `status`         tinyint(1)   UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(1:启用;2:禁用)',
 | 
				
			||||||
    `admin_user`  bigint(20)   DEFAULT NULL                COMMENT '租户管理员',
 | 
					    `admin_user`     bigint(20)   DEFAULT NULL                COMMENT '管理员用户',
 | 
				
			||||||
 | 
					    `admin_username` varchar(64)  DEFAULT NULL                COMMENT '管理员用户名',
 | 
				
			||||||
    `package_id`     bigint(20)   NOT NULL                    COMMENT '套餐ID',
 | 
					    `package_id`     bigint(20)   NOT NULL                    COMMENT '套餐ID',
 | 
				
			||||||
    `create_user`    bigint(20)   NOT NULL                    COMMENT '创建人',
 | 
					    `create_user`    bigint(20)   NOT NULL                    COMMENT '创建人',
 | 
				
			||||||
    `create_time`    datetime     NOT NULL                    COMMENT '创建时间',
 | 
					    `create_time`    datetime     NOT NULL                    COMMENT '创建时间',
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,7 @@ CREATE TABLE IF NOT EXISTS "tenant" (
 | 
				
			|||||||
    "description"    varchar(200) DEFAULT NULL,
 | 
					    "description"    varchar(200) DEFAULT NULL,
 | 
				
			||||||
    "status"         int2         NOT NULL DEFAULT 1,
 | 
					    "status"         int2         NOT NULL DEFAULT 1,
 | 
				
			||||||
    "admin_user"     int8         DEFAULT NULL,
 | 
					    "admin_user"     int8         DEFAULT NULL,
 | 
				
			||||||
 | 
					    "admin_username" varchar(64)  DEFAULT NULL,
 | 
				
			||||||
    "package_id"     int8         NOT NULL,
 | 
					    "package_id"     int8         NOT NULL,
 | 
				
			||||||
    "create_user"    int8         NOT NULL,
 | 
					    "create_user"    int8         NOT NULL,
 | 
				
			||||||
    "create_time"    timestamp    NOT NULL,
 | 
					    "create_time"    timestamp    NOT NULL,
 | 
				
			||||||
@@ -27,12 +28,13 @@ CREATE INDEX "idx_tenant_update_user" ON "tenant" ("update_user");
 | 
				
			|||||||
COMMENT ON COLUMN "tenant"."id" IS 'ID';
 | 
					COMMENT ON COLUMN "tenant"."id" IS 'ID';
 | 
				
			||||||
COMMENT ON COLUMN "tenant"."name" IS '名称';
 | 
					COMMENT ON COLUMN "tenant"."name" IS '名称';
 | 
				
			||||||
COMMENT ON COLUMN "tenant"."code" IS '编码';
 | 
					COMMENT ON COLUMN "tenant"."code" IS '编码';
 | 
				
			||||||
COMMENT ON COLUMN "tenant"."domain" IS '绑定域名';
 | 
					COMMENT ON COLUMN "tenant"."domain" IS '域名';
 | 
				
			||||||
COMMENT ON COLUMN "tenant"."expire_time" IS '过期时间';
 | 
					COMMENT ON COLUMN "tenant"."expire_time" IS '过期时间';
 | 
				
			||||||
COMMENT ON COLUMN "tenant"."description" IS '描述';
 | 
					COMMENT ON COLUMN "tenant"."description" IS '描述';
 | 
				
			||||||
COMMENT ON COLUMN "tenant"."status" IS '状态(1:启用;2:禁用)';
 | 
					COMMENT ON COLUMN "tenant"."status" IS '状态(1:启用;2:禁用)';
 | 
				
			||||||
COMMENT ON COLUMN "tenant"."package_id" IS '套餐ID';
 | 
					COMMENT ON COLUMN "tenant"."package_id" IS '套餐ID';
 | 
				
			||||||
COMMENT ON COLUMN "tenant"."admin_user" IS '租户管理员';
 | 
					COMMENT ON COLUMN "tenant"."admin_user" IS '管理员用户';
 | 
				
			||||||
 | 
					COMMENT ON COLUMN "tenant"."admin_username" IS '管理员用户名';
 | 
				
			||||||
COMMENT ON COLUMN "tenant"."create_user" IS '创建人';
 | 
					COMMENT ON COLUMN "tenant"."create_user" IS '创建人';
 | 
				
			||||||
COMMENT ON COLUMN "tenant"."create_time" IS '创建时间';
 | 
					COMMENT ON COLUMN "tenant"."create_time" IS '创建时间';
 | 
				
			||||||
COMMENT ON COLUMN "tenant"."update_user" IS '修改人';
 | 
					COMMENT ON COLUMN "tenant"."update_user" IS '修改人';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -183,10 +183,10 @@ public class TenantDataApiForSystemImpl implements TenantDataApi {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    private Long initUserData(TenantDTO tenant, Long deptId) {
 | 
					    private Long initUserData(TenantDTO tenant, Long deptId) {
 | 
				
			||||||
        // 解密密码
 | 
					        // 解密密码
 | 
				
			||||||
        String password = SecureUtils.decryptPasswordByRsaPrivateKey(tenant.getPassword(), "密码解密失败", true);
 | 
					        String password = SecureUtils.decryptPasswordByRsaPrivateKey(tenant.getAdminPassword(), "密码解密失败", true);
 | 
				
			||||||
        // 初始化用户
 | 
					        // 初始化用户
 | 
				
			||||||
        UserDO user = new UserDO();
 | 
					        UserDO user = new UserDO();
 | 
				
			||||||
        user.setUsername(tenant.getUsername());
 | 
					        user.setUsername(tenant.getAdminUsername());
 | 
				
			||||||
        user.setNickname(RoleCodeEnum.TENANT_ADMIN.getDescription());
 | 
					        user.setNickname(RoleCodeEnum.TENANT_ADMIN.getDescription());
 | 
				
			||||||
        user.setPassword(password);
 | 
					        user.setPassword(password);
 | 
				
			||||||
        user.setGender(GenderEnum.UNKNOWN);
 | 
					        user.setGender(GenderEnum.UNKNOWN);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user