mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-08 12:57:13 +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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -4,19 +4,20 @@
|
||||
-- comment 初始化租户插件数据表
|
||||
-- 初始化表结构
|
||||
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 '绑定域名',
|
||||
`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 '租户管理员',
|
||||
`package_id` bigint(20) NOT NULL COMMENT '套餐ID',
|
||||
`create_user` bigint(20) NOT NULL COMMENT '创建人',
|
||||
`create_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`update_user` bigint(20) DEFAULT NULL COMMENT '修改人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
`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 '域名',
|
||||
`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_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 '创建时间',
|
||||
`update_user` bigint(20) DEFAULT NULL COMMENT '修改人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE INDEX `uk_code`(`code`),
|
||||
INDEX `idx_admin_user`(`admin_user`),
|
||||
|
@@ -4,19 +4,20 @@
|
||||
-- comment 初始化租户插件数据表
|
||||
-- 初始化表结构
|
||||
CREATE TABLE IF NOT EXISTS "tenant" (
|
||||
"id" int8 NOT NULL,
|
||||
"name" varchar(30) NOT NULL,
|
||||
"code" varchar(30) NOT NULL,
|
||||
"domain" varchar(255) DEFAULT NULL,
|
||||
"expire_time" timestamp DEFAULT NULL,
|
||||
"description" varchar(200) DEFAULT NULL,
|
||||
"status" int2 NOT NULL DEFAULT 1,
|
||||
"admin_user" int8 DEFAULT NULL,
|
||||
"package_id" int8 NOT NULL,
|
||||
"create_user" int8 NOT NULL,
|
||||
"create_time" timestamp NOT NULL,
|
||||
"update_user" int8 DEFAULT NULL,
|
||||
"update_time" timestamp DEFAULT NULL,
|
||||
"id" int8 NOT NULL,
|
||||
"name" varchar(30) NOT NULL,
|
||||
"code" varchar(30) NOT NULL,
|
||||
"domain" varchar(255) DEFAULT NULL,
|
||||
"expire_time" timestamp DEFAULT NULL,
|
||||
"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,
|
||||
"update_user" int8 DEFAULT NULL,
|
||||
"update_time" timestamp DEFAULT NULL,
|
||||
PRIMARY KEY ("id")
|
||||
);
|
||||
CREATE UNIQUE INDEX "uk_tenant_code" ON "tenant" ("code");
|
||||
@@ -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