add
This commit is contained in:
@ -24,8 +24,16 @@ public class SysTenantDatasourceParam implements Serializable {
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -22,6 +22,15 @@ public interface SysTenantDatasourceService {
|
||||
*/
|
||||
SysTenantDatasource selectPrimary(String tenantId);
|
||||
|
||||
/**
|
||||
* 通过IP查询
|
||||
*
|
||||
* @param tenantId tenantId
|
||||
* @param ip ip
|
||||
* @return obj
|
||||
*/
|
||||
SysTenantDatasource selectByIp(String tenantId, String ip);
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*
|
||||
|
@ -1,8 +1,10 @@
|
||||
package com.qiaoba.module.tenant.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.qiaoba.common.base.enums.BaseEnum;
|
||||
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;
|
||||
@ -11,10 +13,7 @@ import com.qiaoba.module.tenant.service.SysTenantDatasourceService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 动态数据源接口
|
||||
@ -35,7 +34,7 @@ public class DynamicDatasourceServiceImpl implements DynamicDatasourceService {
|
||||
List<String> tenantIds = sysTenantDatasourceService.selectTenantIds();
|
||||
for (String tenantId : tenantIds) {
|
||||
List<SysTenantDatasource> datasourceList = sysTenantDatasourceService.selectList(new SysTenantDatasourceParam(tenantId));
|
||||
datasourceMap.put(tenantId, transform(datasourceList));
|
||||
datasourceMap.put(tenantId, transformList(datasourceList));
|
||||
}
|
||||
return datasourceMap;
|
||||
}
|
||||
@ -51,17 +50,30 @@ public class DynamicDatasourceServiceImpl implements DynamicDatasourceService {
|
||||
sysTenantDatasourceService.setBackupDatasourceExcludeId(tenantId, datasourceId);
|
||||
}
|
||||
|
||||
private List<DynamicDataSource> transform(List<SysTenantDatasource> datasourceList) {
|
||||
@Override
|
||||
public DynamicDataSource selectByIp(String tenantId, String ip) {
|
||||
SysTenantDatasource sysTenantDatasource = sysTenantDatasourceService.selectByIp(tenantId, ip);
|
||||
if (Objects.isNull(sysTenantDatasource)) {
|
||||
throw new ServiceException(StrUtil.format("未找到数据源,查询方式: {}", ip));
|
||||
}
|
||||
return transform(sysTenantDatasource);
|
||||
}
|
||||
|
||||
private List<DynamicDataSource> transformList(List<SysTenantDatasource> datasourceList) {
|
||||
List<DynamicDataSource> dynamicDataSourceList = new ArrayList<>();
|
||||
for (SysTenantDatasource datasource : datasourceList) {
|
||||
DynamicDataSource dynamicDataSource = BeanUtil.copyProperties(datasource, DynamicDataSource.class);
|
||||
dynamicDataSource.setInitialSize(datasource.getInitCount());
|
||||
dynamicDataSource.setMinIdle(datasource.getMinCount());
|
||||
dynamicDataSource.setMaxActive(datasource.getMaxCount());
|
||||
dynamicDataSource.setDriver(DataBaseEnum.getDriver(datasource.getType()));
|
||||
dynamicDataSource.setUrl(DataBaseEnum.getUrl(datasource.getType(), datasource.getIp(), datasource.getPort(), datasource.getName()));
|
||||
dynamicDataSourceList.add(dynamicDataSource);
|
||||
dynamicDataSourceList.add(transform(datasource));
|
||||
}
|
||||
return dynamicDataSourceList;
|
||||
}
|
||||
|
||||
private DynamicDataSource transform(SysTenantDatasource datasource) {
|
||||
DynamicDataSource dynamicDataSource = BeanUtil.copyProperties(datasource, DynamicDataSource.class);
|
||||
dynamicDataSource.setInitialSize(datasource.getInitCount());
|
||||
dynamicDataSource.setMinIdle(datasource.getMinCount());
|
||||
dynamicDataSource.setMaxActive(datasource.getMaxCount());
|
||||
dynamicDataSource.setDriver(DataBaseEnum.getDriver(datasource.getType()));
|
||||
dynamicDataSource.setUrl(DataBaseEnum.getUrl(datasource.getType(), datasource.getIp(), datasource.getPort(), datasource.getName()));
|
||||
return dynamicDataSource;
|
||||
}
|
||||
}
|
||||
|
@ -30,6 +30,13 @@ public class SysTenantDatasourceServiceImpl implements SysTenantDatasourceServic
|
||||
return sysTenantDatasourceMapper.selectOne(paramToWrapper(new SysTenantDatasourceParam(tenantId, BaseEnum.YES.getCode())));
|
||||
}
|
||||
|
||||
@Override
|
||||
public SysTenantDatasource selectByIp(String tenantId, String ip) {
|
||||
SysTenantDatasourceParam param = new SysTenantDatasourceParam(tenantId);
|
||||
param.setIp(ip);
|
||||
return sysTenantDatasourceMapper.selectOne(paramToWrapper(param));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insert(SysTenantDatasource sysTenantDatasource) {
|
||||
return sysTenantDatasourceMapper.insert(sysTenantDatasource);
|
||||
@ -69,6 +76,7 @@ public class SysTenantDatasourceServiceImpl implements SysTenantDatasourceServic
|
||||
QueryWrapper<SysTenantDatasource> wrapper = new QueryWrapper<>();
|
||||
wrapper.lambda()
|
||||
.eq(StrUtil.isNotBlank(param.getTenantId()), SysTenantDatasource::getTenantId, param.getTenantId())
|
||||
.eq(StrUtil.isNotBlank(param.getIp()), SysTenantDatasource::getIp, param.getIp())
|
||||
.eq(StrUtil.isNotBlank(param.getIsPrimary()), SysTenantDatasource::getIsPrimary, param.getIsPrimary());
|
||||
return wrapper;
|
||||
}
|
||||
|
Reference in New Issue
Block a user