Commit 035b05b03bed906f2a74c7566674ddd3b9fd9814

Authored by 杨鸣坤
1 parent 06a2cf5f

测试数据库是否可以链接

... ... @@ -66,6 +66,12 @@ public class TkDbConnectController extends BaseController {
66 66 return ResponseEntity.ok(dto);
67 67 }
68 68
  69 + @PostMapping("/testDbConnect")
  70 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
  71 + public ResponseEntity<Boolean> testDbConnect(@RequestBody TkDbConnectDTO tkDbConnectDTO) throws ThingsboardException {
  72 + return ResponseEntity.ok(tkDbConnectService.checkConnect(tkDbConnectDTO));
  73 + }
  74 +
69 75 @GetMapping("/delete")
70 76 @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')")
71 77 public ResponseEntity<Boolean> delete(@RequestParam("id") String id) throws ThingsboardException {
... ...
... ... @@ -34,9 +34,11 @@ import java.util.Properties;
34 34 public class BaseDbConnectServiceImpl implements BaseDbConnectService {
35 35
36 36 private static SSLContext sslContext = null;
  37 + private static Boolean checkConnect = null;
37 38
38 39 @Override
39   - public Object connect(TkDbConnectDTO tkDbConnectDTO) {
  40 + public Object connect(TkDbConnectDTO tkDbConnectDTO, boolean checkConnect) {
  41 + this.checkConnect = checkConnect;
40 42 if (BooleanUtils.isNotTrue(tkDbConnectDTO.isOpenSsh()) && BooleanUtils.isNotTrue(tkDbConnectDTO.isOpenSsl())) {
41 43 return commonConnect(tkDbConnectDTO);
42 44 } else if (BooleanUtils.isTrue(tkDbConnectDTO.isOpenSsh()) && BooleanUtils.isNotTrue(tkDbConnectDTO.isOpenSsl())) {
... ... @@ -216,6 +218,10 @@ public class BaseDbConnectServiceImpl implements BaseDbConnectService {
216 218
217 219 dataSource = new HikariDataSource(config);
218 220 connection = dataSource.getConnection();
  221 + if (BooleanUtils.isTrue(checkConnect)) {
  222 + return true;
  223 + }
  224 +
219 225 statement = connection.prepareStatement(replaceParam(tkDbConnectDTO.getSql(), tkDbConnectDTO.getParamMap()));
220 226 resultSet = statement.executeQuery();
221 227 ResultSetMetaData metaData = resultSet.getMetaData();
... ...
... ... @@ -130,6 +130,16 @@ public class TkDbConnectServiceImpl extends AbstractBaseService<TkDbConnectMappe
130 130
131 131 dbDto.setSql(tkDbConnectDTO.getSql());
132 132 dbDto.setParamMap(tkDbConnectDTO.getParamMap());
133   - return connectServiceFactory.getService("baseConnect").connect(dbDto);
  133 + return connectServiceFactory.getService("baseConnect").connect(dbDto, false);
  134 + }
  135 +
  136 + @Override
  137 + public boolean checkConnect(TkDbConnectDTO tkDbConnectDTO) {
  138 + Object result = connectServiceFactory.getService("baseConnect").connect(tkDbConnectDTO, true);
  139 + if (result instanceof Boolean) {
  140 + return (Boolean) result;
  141 + }
  142 +
  143 + return false;
134 144 }
135 145 }
... ...
... ... @@ -68,7 +68,7 @@ public class TkDbDataSetServiceImpl extends AbstractBaseService<TkDbDataSetMappe
68 68 TkDbConnectDTO dbConnectDTO = dto.getTkDbConnectDTO();
69 69 dbConnectDTO.setParamMap(paramMap);
70 70 dbConnectDTO.setSql(dto.getSql());
71   - return connectServiceFactory.getService("baseConnect").connect(dbConnectDTO);
  71 + return connectServiceFactory.getService("baseConnect").connect(dbConnectDTO, false);
72 72 }
73 73
74 74 private void checkDto(TkDbDataSetDTO dto) {
... ...
... ... @@ -10,5 +10,5 @@ public interface BaseDbConnectService {
10 10 * @param tkDbConnectDTO
11 11 * @return
12 12 */
13   - Object connect(TkDbConnectDTO tkDbConnectDTO);
  13 + Object connect(TkDbConnectDTO tkDbConnectDTO, boolean checkConnect);
14 14 }
... ...
... ... @@ -17,4 +17,6 @@ public interface TkDbConnectService extends BaseService<TkDbConnectEntity> {
17 17 TkDbConnectDTO get(String id);
18 18
19 19 Object connectResult(TkDbConnectDTO tkDbConnectDTO);
  20 +
  21 + boolean checkConnect(TkDbConnectDTO tkDbConnectDTO);
20 22 }
... ...