first commit
This commit is contained in:
@ -22,6 +22,10 @@
|
||||
<groupId>com.qiaoba</groupId>
|
||||
<artifactId>qiaoba-auth</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.qiaoba</groupId>
|
||||
<artifactId>qiaoba-api-tenant</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
@ -6,9 +6,9 @@ import com.qiaoba.common.base.validate.AddGroup;
|
||||
import com.qiaoba.common.base.validate.EditGroup;
|
||||
import com.qiaoba.common.database.entity.PageQuery;
|
||||
import com.qiaoba.common.database.entity.TableDataInfo;
|
||||
import com.qiaoba.module.tenant.entity.SysTenant;
|
||||
import com.qiaoba.api.tenant.entity.SysTenant;
|
||||
import com.qiaoba.module.tenant.entity.dto.TenantSettingDto;
|
||||
import com.qiaoba.module.tenant.entity.param.SysTenantParam;
|
||||
import com.qiaoba.api.tenant.entity.param.SysTenantParam;
|
||||
import com.qiaoba.module.tenant.service.SysTenantService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
|
@ -3,7 +3,7 @@ package com.qiaoba.module.tenant.controller;
|
||||
import com.qiaoba.common.base.result.AjaxResult;
|
||||
import com.qiaoba.common.base.validate.AddGroup;
|
||||
import com.qiaoba.common.base.validate.EditGroup;
|
||||
import com.qiaoba.module.tenant.entity.SysTenantDatasource;
|
||||
import com.qiaoba.api.tenant.entity.SysTenantDatasource;
|
||||
import com.qiaoba.module.tenant.service.SysTenantDatasourceService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
|
@ -1,81 +0,0 @@
|
||||
package com.qiaoba.module.tenant.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.qiaoba.common.base.entity.BaseEntity;
|
||||
import com.qiaoba.common.base.validate.AddGroup;
|
||||
import com.qiaoba.common.base.validate.EditGroup;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 租户 sys_tenant
|
||||
*
|
||||
* @author ailanyin
|
||||
* @version 1.0
|
||||
* @since 2023/5/30 10:20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("sys_tenant")
|
||||
@NoArgsConstructor
|
||||
public class SysTenant extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId
|
||||
@NotNull(message = "id不能为空", groups = {EditGroup.class})
|
||||
private String tenantId;
|
||||
|
||||
@NotBlank(message = "企业名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Schema(description = "企业名称")
|
||||
private String companyName;
|
||||
|
||||
@Schema(description = "联系人")
|
||||
private String contactName;
|
||||
|
||||
@Schema(description = "联系电话")
|
||||
private String contactPhone;
|
||||
|
||||
@Schema(description = "地址")
|
||||
private String address;
|
||||
|
||||
@Schema(description = "企业简介")
|
||||
private String profile;
|
||||
|
||||
@Schema(description = "统一社会信用代码")
|
||||
private String licenseNumber;
|
||||
|
||||
@Schema(description = "域名")
|
||||
private String domain;
|
||||
|
||||
@Schema(description = "备注")
|
||||
private String remark;
|
||||
|
||||
@NotNull(message = "过期时间不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Schema(description = "过期时间")
|
||||
private Date expireTime;
|
||||
|
||||
@NotNull(message = "用户数量不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Schema(description = "用户数量")
|
||||
private Long accountCount;
|
||||
|
||||
@NotNull(message = "状态不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Schema(description = "状态")
|
||||
private String status;
|
||||
|
||||
private String mode;
|
||||
|
||||
private String initialized;
|
||||
|
||||
public SysTenant(String tenantId, String status) {
|
||||
this.tenantId = tenantId;
|
||||
this.status = status;
|
||||
}
|
||||
}
|
@ -1,73 +0,0 @@
|
||||
package com.qiaoba.module.tenant.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.qiaoba.common.base.entity.BaseEntity;
|
||||
import com.qiaoba.common.base.validate.AddGroup;
|
||||
import com.qiaoba.common.base.validate.EditGroup;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 租户数据源
|
||||
*
|
||||
* @author ailanyin
|
||||
* @version 1.0
|
||||
* @since 2023/6/7 14:38
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("sys_tenant_datasource")
|
||||
public class SysTenantDatasource extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId
|
||||
@NotNull(message = "id不能为空", groups = {EditGroup.class})
|
||||
private String datasourceId;
|
||||
|
||||
@NotBlank(message = "数据源类型不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Schema(description = "数据源类型")
|
||||
private String type;
|
||||
|
||||
@NotBlank(message = "数据库IP不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Schema(description = "数据库IP")
|
||||
private String ip;
|
||||
|
||||
@NotBlank(message = "数据库端口不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Schema(description = "数据库端口")
|
||||
private String port;
|
||||
|
||||
@NotBlank(message = "数据库名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Schema(description = "数据库名称")
|
||||
private String dbName;
|
||||
|
||||
@Schema(description = "模式名称")
|
||||
private String schemaName;
|
||||
|
||||
@NotBlank(message = "数据库账号不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Schema(description = "数据库账号")
|
||||
private String username;
|
||||
|
||||
@NotBlank(message = "数据库密码不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Schema(description = "数据库密码")
|
||||
private String password;
|
||||
|
||||
@Schema(description = "连接池-初始化大小-默认: 5")
|
||||
private Integer initCount;
|
||||
|
||||
@Schema(description = "连接池-最小空闲线程数-默认: 10")
|
||||
private Integer minCount;
|
||||
|
||||
@Schema(description = "连接池-最大连接池数量-默认: 20")
|
||||
private Integer maxCount;
|
||||
|
||||
private String isPrimary;
|
||||
|
||||
@NotBlank(message = "租户ID", groups = {AddGroup.class, EditGroup.class})
|
||||
@Schema(description = "租户ID")
|
||||
private String tenantId;
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
package com.qiaoba.module.tenant.entity.param;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 租户数据源查询参数
|
||||
*
|
||||
* @author ailanyin
|
||||
* @version 1.0
|
||||
* @since 2023/6/9 13:18
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SysTenantDatasourceParam implements Serializable {
|
||||
|
||||
private String tenantId;
|
||||
|
||||
private String isPrimary;
|
||||
|
||||
private String ip;
|
||||
|
||||
public SysTenantDatasourceParam(String tenantId) {
|
||||
this.tenantId = tenantId;
|
||||
}
|
||||
|
||||
public SysTenantDatasourceParam(String tenantId, String isPrimary) {
|
||||
this.tenantId = tenantId;
|
||||
this.isPrimary = isPrimary;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,57 +0,0 @@
|
||||
package com.qiaoba.module.tenant.entity.param;
|
||||
|
||||
import com.qiaoba.common.base.enums.BaseEnum;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 租户查询条件
|
||||
*
|
||||
* @author ailanyin
|
||||
* @version 1.0
|
||||
* @since 2023/5/30 11:02
|
||||
*/
|
||||
@Data
|
||||
public class SysTenantParam implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 未过期
|
||||
*/
|
||||
public static final String TYPE_NOT_EXPIRED = "1";
|
||||
|
||||
/**
|
||||
* 已过期
|
||||
*/
|
||||
public static final String TYPE_EXPIRED = "2";
|
||||
|
||||
private String companyName;
|
||||
|
||||
private String contactName;
|
||||
|
||||
@Schema(description = "帐号状态(1正常 0停用)")
|
||||
private String status;
|
||||
|
||||
private Date time;
|
||||
|
||||
@Schema(description = "类型(1正常 2过期)")
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 是否是登陆接口
|
||||
*/
|
||||
private Boolean isLogin = false;
|
||||
|
||||
public static SysTenantParam buildNormalSelectParam() {
|
||||
SysTenantParam param = new SysTenantParam();
|
||||
param.setTime(new Date());
|
||||
param.setStatus(BaseEnum.NORMAL.getCode());
|
||||
param.setType(SysTenantParam.TYPE_NOT_EXPIRED);
|
||||
param.setIsLogin(true);
|
||||
return param;
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
package com.qiaoba.module.tenant.entity.vo;
|
||||
|
||||
import com.qiaoba.module.tenant.entity.SysTenantDatasource;
|
||||
import com.qiaoba.api.tenant.entity.SysTenantDatasource;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.qiaoba.module.tenant.entity.vo;
|
||||
|
||||
import com.qiaoba.module.tenant.entity.SysTenantDatasource;
|
||||
import com.qiaoba.api.tenant.entity.SysTenantDatasource;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
@ -1,37 +0,0 @@
|
||||
package com.qiaoba.module.tenant.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 租户类型
|
||||
*
|
||||
* @author ailanyin
|
||||
* @version 1.0
|
||||
* @since 2023/6/5 16:33
|
||||
*/
|
||||
@Getter
|
||||
public enum TenantModeEnum {
|
||||
|
||||
/**
|
||||
* 字段模式-隔离级别最小
|
||||
*/
|
||||
COLUMN("1", "字段模式"),
|
||||
|
||||
/**
|
||||
* SCHEMA模式-隔离级别中等
|
||||
*/
|
||||
SCHEMA("2", "SCHEMA模式"),
|
||||
|
||||
/**
|
||||
* 数据源模式-隔离级别最大
|
||||
*/
|
||||
DATASOURCE("3", "数据源模式");
|
||||
|
||||
private final String mode;
|
||||
private final String info;
|
||||
|
||||
TenantModeEnum(String code, String info) {
|
||||
this.mode = code;
|
||||
this.info = info;
|
||||
}
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
package com.qiaoba.module.tenant.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 租户状态
|
||||
*
|
||||
* @author ailanyin
|
||||
* @version 1.0
|
||||
* @since 2023/6/5 16:33
|
||||
*/
|
||||
@Getter
|
||||
public enum TenantStatusEnum {
|
||||
|
||||
/**
|
||||
* 禁用
|
||||
*/
|
||||
DISABLE("0", "禁用"),
|
||||
|
||||
/**
|
||||
* 过期
|
||||
*/
|
||||
EXPIRE("2", "过期");
|
||||
|
||||
|
||||
private final String status;
|
||||
private final String info;
|
||||
|
||||
TenantStatusEnum(String code, String info) {
|
||||
this.status = code;
|
||||
this.info = info;
|
||||
}
|
||||
}
|
@ -2,6 +2,7 @@ package com.qiaoba.module.tenant.filters;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.qiaoba.api.tenant.utils.TenantUtil;
|
||||
import com.qiaoba.common.base.code.TenantErrorCode;
|
||||
import com.qiaoba.common.base.constants.BaseConstant;
|
||||
import com.qiaoba.common.base.constants.TenantConstant;
|
||||
@ -10,9 +11,9 @@ import com.qiaoba.common.database.config.DynamicDataSourceConfig;
|
||||
import com.qiaoba.common.database.context.TenantDbTypeContext;
|
||||
import com.qiaoba.common.web.utils.ResponseUtil;
|
||||
import com.qiaoba.common.web.utils.UriUtil;
|
||||
import com.qiaoba.module.tenant.entity.SysTenant;
|
||||
import com.qiaoba.module.tenant.enums.TenantModeEnum;
|
||||
import com.qiaoba.module.tenant.enums.TenantStatusEnum;
|
||||
import com.qiaoba.api.tenant.entity.SysTenant;
|
||||
import com.qiaoba.api.tenant.enums.TenantModeEnum;
|
||||
import com.qiaoba.api.tenant.enums.TenantStatusEnum;
|
||||
import com.qiaoba.module.tenant.service.SysTenantService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.core.annotation.Order;
|
||||
@ -91,21 +92,7 @@ public class DynamicDataSourceFilter extends OncePerRequestFilter {
|
||||
|
||||
private void before(SysTenant sysTenant) {
|
||||
log.debug("设置租户信息, 租户ID: {},租户模式: {}", sysTenant.getTenantId(), sysTenant.getMode());
|
||||
BaseContext.setTenantId(sysTenant.getTenantId());
|
||||
BaseContext.setSchema(sysTenant.getMode().equals(TenantModeEnum.SCHEMA.getMode()));
|
||||
// 数据源模式-设置第三方数据源
|
||||
if (sysTenant.getMode().equals(TenantModeEnum.DATASOURCE.getMode())) {
|
||||
//设置当前租户对应的数据源
|
||||
BaseContext.setDataSource(sysTenant.getTenantId());
|
||||
BaseContext.setDatabaseType(TenantDbTypeContext.get(sysTenant.getTenantId()));
|
||||
}
|
||||
// 字段模式 or Schema模式-数据源选择默认数据源
|
||||
else {
|
||||
BaseContext.setDataSource(TenantConstant.DEFAULT_TENANT_ID);
|
||||
BaseContext.setDatabaseType(TenantDbTypeContext.getDefault());
|
||||
}
|
||||
|
||||
|
||||
TenantUtil.setContext(sysTenant);
|
||||
}
|
||||
|
||||
private void after() {
|
||||
@ -127,19 +114,20 @@ public class DynamicDataSourceFilter extends OncePerRequestFilter {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (TenantStatusEnum.DISABLE.getStatus().equals(sysTenant.getStatus())) {
|
||||
if (TenantStatusEnum.isDisable(sysTenant.getStatus())) {
|
||||
// 封禁状态
|
||||
log.debug("租户已封禁, 租户ID: {}", sysTenant.getTenantId());
|
||||
ResponseUtil.errorAuth(response, TenantErrorCode.DISABLE.getCode(), TenantErrorCode.DISABLE.getMsg());
|
||||
return true;
|
||||
}
|
||||
|
||||
if (TenantStatusEnum.EXPIRE.getStatus().equals(sysTenant.getStatus())) {
|
||||
if (TenantStatusEnum.isExpire(sysTenant.getStatus())) {
|
||||
// 已过期
|
||||
log.debug("租户已过期, 租户ID: {}", sysTenant.getTenantId());
|
||||
ResponseUtil.errorAuth(response, TenantErrorCode.EXPIRE.getCode(), TenantErrorCode.EXPIRE.getMsg());
|
||||
return true;
|
||||
}
|
||||
// 检查是否过期
|
||||
if (DateUtil.compare(sysTenant.getExpireTime(), new Date()) < 0) {
|
||||
// 已过期
|
||||
log.debug("租户已过期, 租户ID: {}", sysTenant.getTenantId());
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.qiaoba.module.tenant.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.qiaoba.module.tenant.entity.SysTenantDatasource;
|
||||
import com.qiaoba.api.tenant.entity.SysTenantDatasource;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.qiaoba.module.tenant.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.qiaoba.module.tenant.entity.SysTenant;
|
||||
import com.qiaoba.api.tenant.entity.SysTenant;
|
||||
|
||||
/**
|
||||
* 租户管理 数据层
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.qiaoba.module.tenant.service;
|
||||
|
||||
import com.qiaoba.module.tenant.entity.SysTenantDatasource;
|
||||
import com.qiaoba.module.tenant.entity.param.SysTenantDatasourceParam;
|
||||
import com.qiaoba.api.tenant.entity.SysTenantDatasource;
|
||||
import com.qiaoba.api.tenant.entity.param.SysTenantDatasourceParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -1,9 +1,10 @@
|
||||
package com.qiaoba.module.tenant.service;
|
||||
|
||||
import com.qiaoba.api.tenant.entity.SysTenant;
|
||||
import com.qiaoba.common.database.entity.PageQuery;
|
||||
import com.qiaoba.common.database.entity.TableDataInfo;
|
||||
import com.qiaoba.module.tenant.entity.SysTenant;
|
||||
import com.qiaoba.module.tenant.entity.param.SysTenantParam;
|
||||
|
||||
import com.qiaoba.api.tenant.entity.param.SysTenantParam;
|
||||
|
||||
/**
|
||||
* 租户管理 服务层
|
||||
|
@ -7,8 +7,8 @@ import com.qiaoba.common.base.enums.DataBaseEnum;
|
||||
import com.qiaoba.common.base.exceptions.ServiceException;
|
||||
import com.qiaoba.common.database.entity.DynamicDataSource;
|
||||
import com.qiaoba.common.database.service.DynamicDatasourceService;
|
||||
import com.qiaoba.module.tenant.entity.SysTenantDatasource;
|
||||
import com.qiaoba.module.tenant.entity.param.SysTenantDatasourceParam;
|
||||
import com.qiaoba.api.tenant.entity.SysTenantDatasource;
|
||||
import com.qiaoba.api.tenant.entity.param.SysTenantDatasourceParam;
|
||||
import com.qiaoba.module.tenant.service.SysTenantDatasourceService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -6,8 +6,8 @@ import com.qiaoba.common.base.code.DatasourceErrorCode;
|
||||
import com.qiaoba.common.base.constants.BaseConstant;
|
||||
import com.qiaoba.common.base.enums.BaseEnum;
|
||||
import com.qiaoba.common.base.exceptions.ServiceException;
|
||||
import com.qiaoba.module.tenant.entity.SysTenantDatasource;
|
||||
import com.qiaoba.module.tenant.entity.param.SysTenantDatasourceParam;
|
||||
import com.qiaoba.api.tenant.entity.SysTenantDatasource;
|
||||
import com.qiaoba.api.tenant.entity.param.SysTenantDatasourceParam;
|
||||
import com.qiaoba.module.tenant.mapper.SysTenantDatasourceMapper;
|
||||
import com.qiaoba.module.tenant.service.SysTenantDatasourceService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
@ -12,11 +12,11 @@ import com.qiaoba.common.database.context.TenantDbTypeContext;
|
||||
import com.qiaoba.common.database.properties.TenantSchema;
|
||||
import com.qiaoba.common.database.utils.DbUtil;
|
||||
import com.qiaoba.common.database.utils.JdbcUtil;
|
||||
import com.qiaoba.module.tenant.entity.SysTenant;
|
||||
import com.qiaoba.module.tenant.entity.SysTenantDatasource;
|
||||
import com.qiaoba.api.tenant.entity.SysTenant;
|
||||
import com.qiaoba.api.tenant.entity.SysTenantDatasource;
|
||||
import com.qiaoba.module.tenant.entity.vo.TenantInitCheckVo;
|
||||
import com.qiaoba.module.tenant.entity.vo.TenantInitVo;
|
||||
import com.qiaoba.module.tenant.enums.TenantModeEnum;
|
||||
import com.qiaoba.api.tenant.enums.TenantModeEnum;
|
||||
import com.qiaoba.module.tenant.init.InitTablesStrategyFactory;
|
||||
import com.qiaoba.module.tenant.service.SysTenantDatasourceService;
|
||||
import com.qiaoba.module.tenant.service.SysTenantInitService;
|
||||
@ -50,7 +50,7 @@ public class SysTenantInitServiceImpl implements SysTenantInitService {
|
||||
// 1. 查询租户信息, 获取租户名称|租户模式
|
||||
SysTenant sysTenant = sysTenantService.selectById(tenantId, false);
|
||||
// 2. 租户模式 = 3 数据源模式
|
||||
if (TenantModeEnum.DATASOURCE.getMode().equals(sysTenant.getMode())) {
|
||||
if (TenantModeEnum.isDatasource(sysTenant.getMode())) {
|
||||
// 3. 根据租户ID查询主要数据源(1条)
|
||||
SysTenantDatasource datasource = sysTenantDatasourceService.selectPrimary(tenantId);
|
||||
// 4. 若没有主要数据源, 返回 未找到数据源信息
|
||||
@ -92,11 +92,11 @@ public class SysTenantInitServiceImpl implements SysTenantInitService {
|
||||
public TenantInitVo createTables(String tenantId) {
|
||||
SysTenant sysTenant = sysTenantService.selectById(tenantId, false);
|
||||
// 字段模式
|
||||
if (TenantModeEnum.COLUMN.getMode().equals(sysTenant.getMode())) {
|
||||
if (TenantModeEnum.isColumn(sysTenant.getMode())) {
|
||||
return new TenantInitVo(HttpStatus.HTTP_OK, "字段模式, 无需新建表");
|
||||
}
|
||||
// Schema模式
|
||||
if (TenantModeEnum.SCHEMA.getMode().equals(sysTenant.getMode())) {
|
||||
if (TenantModeEnum.isSchema(sysTenant.getMode())) {
|
||||
Connection connection = null;
|
||||
try {
|
||||
// 获取主库Connection 和 Schema
|
||||
@ -111,7 +111,7 @@ public class SysTenantInitServiceImpl implements SysTenantInitService {
|
||||
}
|
||||
}
|
||||
// 数据源模式
|
||||
if (TenantModeEnum.DATASOURCE.getMode().equals(sysTenant.getMode())) {
|
||||
if (TenantModeEnum.isDatasource(sysTenant.getMode())) {
|
||||
SysTenantDatasource primary = sysTenantDatasourceService.selectPrimary(tenantId, false);
|
||||
Connection connection = JdbcUtil.getConnection(DataBaseEnum.getDriver(primary.getType()),
|
||||
DataBaseEnum.getUrl(primary.getType(), primary.getIp(), primary.getPort(), primary.getDbName(), primary.getSchemaName()),
|
||||
@ -125,14 +125,14 @@ public class SysTenantInitServiceImpl implements SysTenantInitService {
|
||||
public TenantInitVo initData(String tenantId) throws SQLException {
|
||||
SysTenant sysTenant = sysTenantService.selectById(tenantId, false);
|
||||
// 字段模式
|
||||
if (TenantModeEnum.COLUMN.getMode().equals(sysTenant.getMode())) {
|
||||
if (TenantModeEnum.isColumn(sysTenant.getMode())) {
|
||||
// 获取默认租户的主数据源
|
||||
DataSource dataSource = (DataSource) PrimaryDatasourceContext.getDefault();
|
||||
// 初始化
|
||||
return init(dataSource.getConnection(), tenantId);
|
||||
}
|
||||
// SCHEMA
|
||||
else if (TenantModeEnum.SCHEMA.getMode().equals(sysTenant.getMode())) {
|
||||
else if (TenantModeEnum.isSchema(sysTenant.getMode())) {
|
||||
// 获取主库Connection 和 Schema
|
||||
DruidDataSource dataSource = (DruidDataSource) PrimaryDatasourceContext.getDefault();
|
||||
// 创建新的连接
|
||||
@ -143,7 +143,7 @@ public class SysTenantInitServiceImpl implements SysTenantInitService {
|
||||
return init(connection, tenantId);
|
||||
}
|
||||
// Datasource
|
||||
else if (TenantModeEnum.DATASOURCE.getMode().equals(sysTenant.getMode())) {
|
||||
else if (TenantModeEnum.isDatasource(sysTenant.getMode())) {
|
||||
SysTenantDatasource primary = sysTenantDatasourceService.selectPrimary(tenantId, false);
|
||||
Connection connection = JdbcUtil.getConnection(DataBaseEnum.getDriver(primary.getType()),
|
||||
DataBaseEnum.getUrl(primary.getType(), primary.getIp(), primary.getPort(), primary.getDbName(), primary.getSchemaName()),
|
||||
|
@ -2,6 +2,9 @@ package com.qiaoba.module.tenant.service.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.qiaoba.api.tenant.entity.SysTenant;
|
||||
import com.qiaoba.api.tenant.entity.param.SysTenantParam;
|
||||
import com.qiaoba.api.tenant.service.SysTenantApiService;
|
||||
import com.qiaoba.auth.utils.SecurityUtil;
|
||||
import com.qiaoba.common.base.code.TenantErrorCode;
|
||||
import com.qiaoba.common.base.constants.BaseConstant;
|
||||
@ -12,8 +15,6 @@ import com.qiaoba.common.base.exceptions.ServiceException;
|
||||
import com.qiaoba.common.database.entity.PageQuery;
|
||||
import com.qiaoba.common.database.entity.TableDataInfo;
|
||||
import com.qiaoba.common.redis.service.RedisService;
|
||||
import com.qiaoba.module.tenant.entity.SysTenant;
|
||||
import com.qiaoba.module.tenant.entity.param.SysTenantParam;
|
||||
import com.qiaoba.module.tenant.mapper.SysTenantMapper;
|
||||
import com.qiaoba.module.tenant.service.SysTenantDatasourceService;
|
||||
import com.qiaoba.module.tenant.service.SysTenantService;
|
||||
@ -35,7 +36,7 @@ import java.util.Objects;
|
||||
@Configuration
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class SysTenantServiceImpl implements SysTenantService {
|
||||
public class SysTenantServiceImpl implements SysTenantService, SysTenantApiService {
|
||||
|
||||
|
||||
private final SysTenantMapper sysTenantMapper;
|
||||
@ -125,10 +126,10 @@ public class SysTenantServiceImpl implements SysTenantService {
|
||||
wrapper.lambda().lt(Objects.nonNull(param.getTime()), SysTenant::getExpireTime, param.getTime());
|
||||
}
|
||||
|
||||
// 登录接口, 只返回ID和名字两个字段
|
||||
// 登录接口, 只返回 ID/Name/Mode
|
||||
if (param.getIsLogin()) {
|
||||
wrapper.lambda()
|
||||
.select(SysTenant::getCompanyName, SysTenant::getTenantId);
|
||||
.select(SysTenant::getCompanyName, SysTenant::getTenantId, SysTenant::getMode);
|
||||
}
|
||||
return wrapper;
|
||||
}
|
||||
@ -137,4 +138,9 @@ public class SysTenantServiceImpl implements SysTenantService {
|
||||
log.debug("加载租户信息进缓存, 租户ID: {}", sysTenant.getTenantId());
|
||||
redisService.set(TenantConstant.TENANT_INFO_KEY_PREFIX + sysTenant.getTenantId(), sysTenant);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysTenant> selectList(SysTenantParam param) {
|
||||
return sysTenantMapper.selectList(param2Wrapper(param));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user