This commit is contained in:
2023-06-14 17:38:18 +08:00
parent 5511fd8fb0
commit 239201c811
16 changed files with 260 additions and 28 deletions

View File

@ -27,7 +27,7 @@ public class SysTenantDatasource extends BaseEntity {
@TableId
@NotNull(message = "id不能为空", groups = {EditGroup.class})
private String id;
private String datasourceId;
@NotBlank(message = "数据源类型不能为空", groups = {AddGroup.class, EditGroup.class})
@Schema(description = "数据源类型")

View File

@ -2,6 +2,7 @@ package com.qiaoba.module.tenant.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qiaoba.module.tenant.entity.SysTenantDatasource;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -21,4 +22,12 @@ public interface SysTenantDatasourceMapper extends BaseMapper<SysTenantDatasourc
*/
List<String> selectTenantIds();
/**
* 将租户下的除datasourceId之外的其他数据源设置为备用
*
* @param tenantId tenantId
* @param excludeId 排除Id
* @param code 否
*/
void setBackupDatasourceExcludeId(@Param("tenantId") String tenantId, @Param("excludeId") String excludeId, @Param("code") String code);
}

View File

@ -68,4 +68,12 @@ public interface SysTenantDatasourceService {
* @return tenantIds
*/
List<String> selectTenantIds();
/**
* 将租户下的除datasourceId之外的其他数据源设置为备用
*
* @param tenantId tenantId
* @param excludeId 排除Id
*/
void setBackupDatasourceExcludeId(String tenantId, String excludeId);
}

View File

@ -40,6 +40,17 @@ public class DynamicDatasourceServiceImpl implements DynamicDatasourceService {
return datasourceMap;
}
@Override
public void changePrimaryDatasource(String tenantId, String datasourceId) {
// 将该数据源设置为主要数据源
SysTenantDatasource sysTenantDatasource = new SysTenantDatasource();
sysTenantDatasource.setDatasourceId(datasourceId);
sysTenantDatasource.setIsPrimary(BaseEnum.YES.getCode());
sysTenantDatasourceService.updateById(sysTenantDatasource);
// 将该租户下的其他数据源设置为非主要数据源
sysTenantDatasourceService.setBackupDatasourceExcludeId(tenantId, datasourceId);
}
private List<DynamicDataSource> transform(List<SysTenantDatasource> datasourceList) {
List<DynamicDataSource> dynamicDataSourceList = new ArrayList<>();
for (SysTenantDatasource datasource : datasourceList) {

View File

@ -60,6 +60,11 @@ public class SysTenantDatasourceServiceImpl implements SysTenantDatasourceServic
return sysTenantDatasourceMapper.selectTenantIds();
}
@Override
public void setBackupDatasourceExcludeId(String tenantId, String excludeId) {
sysTenantDatasourceMapper.setBackupDatasourceExcludeId(tenantId,excludeId,BaseEnum.NO.getCode());
}
private QueryWrapper<SysTenantDatasource> paramToWrapper(SysTenantDatasourceParam param) {
QueryWrapper<SysTenantDatasource> wrapper = new QueryWrapper<>();
wrapper.lambda()

View File

@ -1,6 +1,7 @@
package com.qiaoba.module.tenant.utils;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.StrUtil;
import cn.hutool.db.sql.SqlExecutor;
@ -9,6 +10,8 @@ import org.springframework.core.io.ClassPathResource;
import java.nio.charset.Charset;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
@ -101,14 +104,24 @@ public class MenuUtil {
}
}
public static List<String> getAllMenuIdsByTenantId(Connection conn, String tenantId) throws Exception {
public static List<String> getAllMenuIdsByTenantId(Connection conn, String tenantId) {
List<String> menuIds = new ArrayList<>();
ResultSet resultSet = conn.createStatement().executeQuery(StrUtil.format("SELECT menu_id FROM `sys_menu` where tenant_id = '{}'", tenantId));
while (resultSet.next()) {
String menuId = resultSet.getString("menu_id");
if (StrUtil.isNotBlank(menuId)) {
menuIds.add(menuId);
ResultSet resultSet = null;
Statement statement = null;
try {
statement = conn.createStatement();
resultSet = statement.executeQuery(StrUtil.format("SELECT menu_id FROM `sys_menu` where tenant_id = '{}'", tenantId));
while (resultSet.next()) {
String menuId = resultSet.getString("menu_id");
if (StrUtil.isNotBlank(menuId)) {
menuIds.add(menuId);
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
IoUtil.close(resultSet);
IoUtil.close(statement);
}
return menuIds;
}

View File

@ -6,4 +6,9 @@
<select id="selectTenantIds" resultType="string">
SELECT tenant_id FROM sys_tenant_datasource GROUP BY tenant_id
</select>
<update id="setBackupDatasourceExcludeId">
update sys_tenant_datasource set is_primary = #{code} where tenant_id = #{tenantId} and datasource_id != #{excludeId}
</update>
</mapper>