add
This commit is contained in:
@ -56,4 +56,8 @@ public class TenantDbTypeContext {
|
||||
public static void set(String 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());
|
||||
}
|
||||
|
||||
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) {
|
||||
log.debug("正在创建数据源DataSource, 租户: {}", tenantId);
|
||||
boolean connect = JdbcUtil.checkConnect(dynamicDataSource.getDriver(), dynamicDataSource.getUrl(), dynamicDataSource.getUsername(), dynamicDataSource.getPassword());
|
||||
|
@ -21,7 +21,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
@RequiredArgsConstructor
|
||||
public class FileServiceImpl implements FileService {
|
||||
|
||||
private FileConfig fileConfig;
|
||||
private final FileConfig fileConfig;
|
||||
|
||||
@Override
|
||||
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.util.StrUtil;
|
||||
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.SysTenantDatasource;
|
||||
import com.qiaoba.api.tenant.entity.dto.SysTenantDto;
|
||||
import com.qiaoba.api.tenant.entity.param.SysTenantParam;
|
||||
import com.qiaoba.api.tenant.service.SysTenantApiService;
|
||||
import com.qiaoba.api.auth.utils.SecurityUtil;
|
||||
import com.qiaoba.api.tenant.enums.TenantModeEnum;
|
||||
import com.qiaoba.common.base.code.TenantErrorCode;
|
||||
import com.qiaoba.common.base.constant.BaseConstant;
|
||||
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.database.entity.PageQuery;
|
||||
import com.qiaoba.common.database.entity.TableDataInfo;
|
||||
import com.qiaoba.common.database.util.DatasourceUtil;
|
||||
import com.qiaoba.common.redis.service.RedisService;
|
||||
import com.qiaoba.module.tenant.entity.dto.TenantSettingDto;
|
||||
import com.qiaoba.module.tenant.mapper.SysTenantMapper;
|
||||
import com.qiaoba.module.tenant.service.SysTenantDatasourceService;
|
||||
import com.qiaoba.module.tenant.service.SysTenantService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -44,6 +47,7 @@ public class SysTenantServiceImpl implements SysTenantService {
|
||||
|
||||
private final SysTenantMapper sysTenantMapper;
|
||||
private final RedisService redisService;
|
||||
private final SysTenantDatasourceService sysTenantDatasourceService;
|
||||
|
||||
@Override
|
||||
public int insert(SysTenantDto dto) {
|
||||
@ -141,9 +145,20 @@ public class SysTenantServiceImpl implements SysTenantService {
|
||||
sysTenant.setStatus(dto.getStatus());
|
||||
int result = sysTenantMapper.updateById(sysTenant);
|
||||
if (result > BaseConstant.HANDLE_ERROR) {
|
||||
SysTenant tenant = selectById(sysTenant.getTenantId());
|
||||
SysTenant tenant = selectById(dto.getTenantId());
|
||||
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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user