package com.qianwen.smartman.modules.visual.service.impl; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import java.sql.Connection; import java.sql.DriverManager; import java.util.LinkedHashMap; import java.util.List; import com.qianwen.core.log.exception.ServiceException; import com.qianwen.core.mp.base.BaseServiceImpl; import com.qianwen.core.secure.BladeUser; import com.qianwen.core.secure.utils.AuthUtil; import com.qianwen.core.tool.utils.BeanUtil; import com.qianwen.core.tool.utils.PlaceholderUtil; import com.qianwen.smartman.modules.visual.dto.VisualDbDTO; import com.qianwen.smartman.modules.visual.dynamic.DynamicDataSourceHolder; import com.qianwen.smartman.modules.visual.entity.VisualDb; import com.qianwen.smartman.modules.visual.mapper.VisualDbMapper; import com.qianwen.smartman.modules.visual.service.IVisualDbService; import org.springframework.stereotype.Service; @Service /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/visual/service/impl/VisualDbServiceImpl.class */ public class VisualDbServiceImpl extends BaseServiceImpl implements IVisualDbService { private final VisualDbMapper mapper; private final DynamicDataSourceHolder holder; public VisualDbServiceImpl(final VisualDbMapper mapper, final DynamicDataSourceHolder holder) { this.mapper = mapper; this.holder = holder; } @Override // org.springblade.modules.visual.service.IVisualDbService public Boolean dbTest(VisualDb db) { Connection conn = null; try { try { Class.forName(db.getDriverClass()); conn = DriverManager.getConnection(db.getUrl(), db.getUsername(), db.getPassword()); conn.setAutoCommit(Boolean.FALSE.booleanValue()); dbClose(conn); return true; } catch (Exception ex) { ex.printStackTrace(); dbClose(conn); return false; } } catch (Throwable th) { dbClose(conn); throw th; } } private void dbClose(Connection conn) { if (conn != null) { try { conn.close(); } catch (Exception ex) { ex.printStackTrace(); } } } @Override // org.springblade.modules.visual.service.IVisualDbService public List dbList() { return this.mapper.dbList(); } @Override // org.springblade.modules.visual.service.IVisualDbService public List> dynamicQuery(String id, String sql) { try { try { this.holder.handleDataSource(id); DynamicDataSourceContextHolder.push(id); BladeUser user = AuthUtil.getUser(); String dynamicSql = PlaceholderUtil.getDefaultResolver().resolveByMap(sql, BeanUtil.toMap(user)); List> dynamicQuery = this.mapper.dynamicQuery(dynamicSql); DynamicDataSourceContextHolder.poll(); return dynamicQuery; } catch (Exception exception) { throw new ServiceException(exception.getMessage()); } } catch (Throwable th) { DynamicDataSourceContextHolder.poll(); throw th; } } }