add
This commit is contained in:
@ -56,4 +56,8 @@ public class TenantDbTypeContext {
|
|||||||
public static void set(String dbType) {
|
public static void set(String dbType) {
|
||||||
set(TenantConstant.DEFAULT_TENANT_ID, dbType);
|
set(TenantConstant.DEFAULT_TENANT_ID, dbType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void remove(String tenantId) {
|
||||||
|
TENANT_DATASOURCE_TYPE_MAP.remove(tenantId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -51,6 +51,18 @@ public class DatasourceUtil {
|
|||||||
dynamicDataSourceContext.freshDataSource(PrimaryDatasourceContext.getAll());
|
dynamicDataSourceContext.freshDataSource(PrimaryDatasourceContext.getAll());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void removePrimaryDatasource(String tenantId) {
|
||||||
|
// 删除数据源类型
|
||||||
|
TenantDbTypeContext.remove(tenantId);
|
||||||
|
// 关闭数据源
|
||||||
|
((DruidDataSource)PrimaryDatasourceContext.get(tenantId)).close();
|
||||||
|
// 删除数据源
|
||||||
|
PrimaryDatasourceContext.remove(tenantId);
|
||||||
|
// 刷新数据源
|
||||||
|
dynamicDataSourceContext.freshDataSource(PrimaryDatasourceContext.getAll());
|
||||||
|
log.info("移除租户[{}]主数据源成功",tenantId);
|
||||||
|
}
|
||||||
|
|
||||||
public static Object buildDataSource(String tenantId, DynamicDataSource dynamicDataSource) {
|
public static Object buildDataSource(String tenantId, DynamicDataSource dynamicDataSource) {
|
||||||
log.debug("正在创建数据源DataSource, 租户: {}", tenantId);
|
log.debug("正在创建数据源DataSource, 租户: {}", tenantId);
|
||||||
boolean connect = JdbcUtil.checkConnect(dynamicDataSource.getDriver(), dynamicDataSource.getUrl(), dynamicDataSource.getUsername(), dynamicDataSource.getPassword());
|
boolean connect = JdbcUtil.checkConnect(dynamicDataSource.getDriver(), dynamicDataSource.getUrl(), dynamicDataSource.getUsername(), dynamicDataSource.getPassword());
|
||||||
|
@ -21,7 +21,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class FileServiceImpl implements FileService {
|
public class FileServiceImpl implements FileService {
|
||||||
|
|
||||||
private FileConfig fileConfig;
|
private final FileConfig fileConfig;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String upload(MultipartFile file) {
|
public String upload(MultipartFile file) {
|
||||||
|
@ -4,11 +4,12 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.qiaoba.api.auth.utils.SecurityUtil;
|
||||||
import com.qiaoba.api.tenant.entity.SysTenant;
|
import com.qiaoba.api.tenant.entity.SysTenant;
|
||||||
|
import com.qiaoba.api.tenant.entity.SysTenantDatasource;
|
||||||
import com.qiaoba.api.tenant.entity.dto.SysTenantDto;
|
import com.qiaoba.api.tenant.entity.dto.SysTenantDto;
|
||||||
import com.qiaoba.api.tenant.entity.param.SysTenantParam;
|
import com.qiaoba.api.tenant.entity.param.SysTenantParam;
|
||||||
import com.qiaoba.api.tenant.service.SysTenantApiService;
|
import com.qiaoba.api.tenant.enums.TenantModeEnum;
|
||||||
import com.qiaoba.api.auth.utils.SecurityUtil;
|
|
||||||
import com.qiaoba.common.base.code.TenantErrorCode;
|
import com.qiaoba.common.base.code.TenantErrorCode;
|
||||||
import com.qiaoba.common.base.constant.BaseConstant;
|
import com.qiaoba.common.base.constant.BaseConstant;
|
||||||
import com.qiaoba.common.base.constant.TenantConstant;
|
import com.qiaoba.common.base.constant.TenantConstant;
|
||||||
@ -17,9 +18,11 @@ import com.qiaoba.common.base.enums.BaseEnum;
|
|||||||
import com.qiaoba.common.base.exception.ServiceException;
|
import com.qiaoba.common.base.exception.ServiceException;
|
||||||
import com.qiaoba.common.database.entity.PageQuery;
|
import com.qiaoba.common.database.entity.PageQuery;
|
||||||
import com.qiaoba.common.database.entity.TableDataInfo;
|
import com.qiaoba.common.database.entity.TableDataInfo;
|
||||||
|
import com.qiaoba.common.database.util.DatasourceUtil;
|
||||||
import com.qiaoba.common.redis.service.RedisService;
|
import com.qiaoba.common.redis.service.RedisService;
|
||||||
import com.qiaoba.module.tenant.entity.dto.TenantSettingDto;
|
import com.qiaoba.module.tenant.entity.dto.TenantSettingDto;
|
||||||
import com.qiaoba.module.tenant.mapper.SysTenantMapper;
|
import com.qiaoba.module.tenant.mapper.SysTenantMapper;
|
||||||
|
import com.qiaoba.module.tenant.service.SysTenantDatasourceService;
|
||||||
import com.qiaoba.module.tenant.service.SysTenantService;
|
import com.qiaoba.module.tenant.service.SysTenantService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -44,6 +47,7 @@ public class SysTenantServiceImpl implements SysTenantService {
|
|||||||
|
|
||||||
private final SysTenantMapper sysTenantMapper;
|
private final SysTenantMapper sysTenantMapper;
|
||||||
private final RedisService redisService;
|
private final RedisService redisService;
|
||||||
|
private final SysTenantDatasourceService sysTenantDatasourceService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int insert(SysTenantDto dto) {
|
public int insert(SysTenantDto dto) {
|
||||||
@ -141,9 +145,20 @@ public class SysTenantServiceImpl implements SysTenantService {
|
|||||||
sysTenant.setStatus(dto.getStatus());
|
sysTenant.setStatus(dto.getStatus());
|
||||||
int result = sysTenantMapper.updateById(sysTenant);
|
int result = sysTenantMapper.updateById(sysTenant);
|
||||||
if (result > BaseConstant.HANDLE_ERROR) {
|
if (result > BaseConstant.HANDLE_ERROR) {
|
||||||
SysTenant tenant = selectById(sysTenant.getTenantId());
|
SysTenant tenant = selectById(dto.getTenantId());
|
||||||
toCache(tenant);
|
toCache(tenant);
|
||||||
// 处理数据源 todo
|
// 处理数据源
|
||||||
|
if (TenantModeEnum.isDatasource(tenant.getMode())) {
|
||||||
|
if (BaseEnum.NORMAL.getCode().equals(dto.getStatus())) {
|
||||||
|
// 加入数据源
|
||||||
|
SysTenantDatasource primaryDatasource = sysTenantDatasourceService.selectPrimary(dto.getTenantId(), false);
|
||||||
|
Object dataSource = DatasourceUtil.buildDataSource(dto.getTenantId(), sysTenantDatasourceService.transform(primaryDatasource));
|
||||||
|
DatasourceUtil.changePrimaryDatasource(dto.getTenantId(), dataSource);
|
||||||
|
} else {
|
||||||
|
// 移除数据源
|
||||||
|
DatasourceUtil.removePrimaryDatasource(dto.getTenantId());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user