add
This commit is contained in:
@ -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 = "数据源类型")
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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()
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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>
|
||||
|
Reference in New Issue
Block a user