mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 22:57:17 +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 | ||||
|   | ||||
| @@ -49,7 +49,7 @@ public class TenantDO extends BaseDO { | ||||
|     private String code; | ||||
|  | ||||
|     /** | ||||
|      * 绑定域名 | ||||
|      * 域名 | ||||
|      */ | ||||
|     private String domain; | ||||
|  | ||||
| @@ -69,10 +69,15 @@ public class TenantDO extends BaseDO { | ||||
|     private DisEnableStatusEnum status; | ||||
|  | ||||
|     /** | ||||
|      * 租户管理员 | ||||
|      * 管理员用户 | ||||
|      */ | ||||
|     private Long adminUser; | ||||
|  | ||||
|     /** | ||||
|      * 管理员用户名 | ||||
|      */ | ||||
|     private String adminUsername; | ||||
|  | ||||
|     /** | ||||
|      * 套餐 ID | ||||
|      */ | ||||
|   | ||||
| @@ -54,11 +54,11 @@ public class TenantReq implements Serializable { | ||||
|     private String name; | ||||
|  | ||||
|     /** | ||||
|      * 绑定域名 | ||||
|      * 域名 | ||||
|      */ | ||||
|     @Schema(description = "绑定域名", example = "https://T0sL6RWv0vFh.continew.top/") | ||||
|     @Length(max = 255, message = "绑定域名长度不能超过 {max} 个字符") | ||||
|     @Pattern(regexp = RegexConstants.HTTP_HOST, message = "绑定域名格式不正确") | ||||
|     @Schema(description = "域名", example = "https://T0sL6RWv0vFh.continew.top/") | ||||
|     @Length(max = 255, message = "域名长度不能超过 {max} 个字符") | ||||
|     @Pattern(regexp = RegexConstants.HTTP_HOST, message = "域名格式不正确") | ||||
|     private String domain; | ||||
|  | ||||
|     /** | ||||
| @@ -89,19 +89,19 @@ public class TenantReq implements Serializable { | ||||
|     private Long packageId; | ||||
|  | ||||
|     /** | ||||
|      * 用户名 | ||||
|      * 管理员用户名 | ||||
|      */ | ||||
|     @Schema(description = "用户名", example = "zhangsan") | ||||
|     @NotBlank(message = "用户名不能为空", groups = CrudValidationGroup.Create.class) | ||||
|     @Pattern(regexp = RegexConstants.USERNAME, message = "用户名长度为 4-64 个字符,支持大小写字母、数字、下划线,以字母开头") | ||||
|     private String username; | ||||
|     @Schema(description = "管理员用户名", example = "zhangsan") | ||||
|     @NotBlank(message = "管理员用户名不能为空", groups = CrudValidationGroup.Create.class) | ||||
|     @Pattern(regexp = RegexConstants.USERNAME, message = "管理员用户名长度为 4-64 个字符,支持大小写字母、数字、下划线,以字母开头") | ||||
|     private String adminUsername; | ||||
|  | ||||
|     /** | ||||
|      * 密码(加密) | ||||
|      * 管理员密码(加密) | ||||
|      */ | ||||
|     @Schema(description = "密码(加密)", example = "E7c72TH+LDxKTwavjM99W1MdI9Lljh79aPKiv3XB9MXcplhm7qJ1BJCj28yaflbdVbfc366klMtjLIWQGqb0qw==") | ||||
|     @NotBlank(message = "密码不能为空", groups = CrudValidationGroup.Create.class) | ||||
|     private String password; | ||||
|     @Schema(description = "管理员密码(加密)", example = "E7c72TH+LDxKTwavjM99W1MdI9Lljh79aPKiv3XB9MXcplhm7qJ1BJCj28yaflbdVbfc366klMtjLIWQGqb0qw==") | ||||
|     @NotBlank(message = "管理员密码不能为空", groups = CrudValidationGroup.Create.class) | ||||
|     private String adminPassword; | ||||
|  | ||||
|     /** | ||||
|      * 编码 | ||||
|   | ||||
| @@ -61,10 +61,10 @@ public class TenantResp extends BaseDetailResp { | ||||
|     private String code; | ||||
|  | ||||
|     /** | ||||
|      * 绑定域名 | ||||
|      * 域名 | ||||
|      */ | ||||
|     @Schema(description = "绑定域名", example = "https://T0sL6RWv0vFh.continew.top/") | ||||
|     @ExcelProperty(value = "绑定域名", order = 4) | ||||
|     @Schema(description = "域名", example = "T0sL6RWv0vFh.continew.top") | ||||
|     @ExcelProperty(value = "域名", order = 4) | ||||
|     private String domain; | ||||
|  | ||||
|     /** | ||||
| @@ -88,11 +88,23 @@ public class TenantResp extends BaseDetailResp { | ||||
|     @ExcelProperty(value = "状态", converter = ExcelBaseEnumConverter.class, order = 8) | ||||
|     private DisEnableStatusEnum status; | ||||
|  | ||||
|     /** | ||||
|      * 管理员用户 | ||||
|      */ | ||||
|     @Schema(description = "管理员用户", example = "2") | ||||
|     private Long adminUser; | ||||
|  | ||||
|     /** | ||||
|      * 管理员用户名 | ||||
|      */ | ||||
|     @Schema(description = "管理员用户名", example = "admin") | ||||
|     @ExcelProperty(value = "管理员用户名", order = 9) | ||||
|     private String adminUsername; | ||||
|  | ||||
|     /** | ||||
|      * 套餐 ID | ||||
|      */ | ||||
|     @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)) | ||||
|     private Long packageId; | ||||
|  | ||||
|   | ||||
| @@ -36,9 +36,9 @@ import java.util.List; | ||||
| public interface TenantService extends BaseService<TenantResp, TenantDetailResp, TenantQuery, TenantReq>, IService<TenantDO> { | ||||
|  | ||||
|     /** | ||||
|      * 根据绑定域名查询 | ||||
|      * 根据域名查询 | ||||
|      * | ||||
|      * @param domain 绑定域名 | ||||
|      * @param domain 域名 | ||||
|      * @return ID | ||||
|      */ | ||||
|     Long getIdByDomain(String domain); | ||||
|   | ||||
| @@ -197,16 +197,16 @@ public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, TenantDO, T | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 检查绑定域名是否重复 | ||||
|      * 检查域名是否重复 | ||||
|      * | ||||
|      * @param domain 绑定域名 | ||||
|      * @param domain 域名 | ||||
|      * @param id     ID | ||||
|      */ | ||||
|     private void checkDomainRepeat(String domain, Long id) { | ||||
|         CheckUtils.throwIf(baseMapper.lambdaQuery() | ||||
|             .eq(TenantDO::getDomain, domain) | ||||
|             .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', | ||||
|     `name`           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 '过期时间', | ||||
|     `description`    varchar(200) DEFAULT NULL                COMMENT '描述', | ||||
|     `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', | ||||
|     `create_user`    bigint(20)   NOT NULL                    COMMENT '创建人', | ||||
|     `create_time`    datetime     NOT NULL                    COMMENT '创建时间', | ||||
|   | ||||
| @@ -12,6 +12,7 @@ CREATE TABLE IF NOT EXISTS "tenant" ( | ||||
|     "description"    varchar(200) DEFAULT NULL, | ||||
|     "status"         int2         NOT NULL DEFAULT 1, | ||||
|     "admin_user"     int8         DEFAULT NULL, | ||||
|     "admin_username" varchar(64)  DEFAULT NULL, | ||||
|     "package_id"     int8         NOT NULL, | ||||
|     "create_user"    int8         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"."name" 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"."description" IS '描述'; | ||||
| COMMENT ON COLUMN "tenant"."status" IS '状态(1:启用;2:禁用)'; | ||||
| 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_time" IS '创建时间'; | ||||
| COMMENT ON COLUMN "tenant"."update_user" IS '修改人'; | ||||
|   | ||||
| @@ -183,10 +183,10 @@ public class TenantDataApiForSystemImpl implements TenantDataApi { | ||||
|      */ | ||||
|     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(); | ||||
|         user.setUsername(tenant.getUsername()); | ||||
|         user.setUsername(tenant.getAdminUsername()); | ||||
|         user.setNickname(RoleCodeEnum.TENANT_ADMIN.getDescription()); | ||||
|         user.setPassword(password); | ||||
|         user.setGender(GenderEnum.UNKNOWN); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user