From 78957096f6f7859c93eaa44e60632e120172a4e5 Mon Sep 17 00:00:00 2001 From: gaoxq <376340421@qq.com> Date: Wed, 27 Aug 2025 14:48:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EMySQL=E5=92=8Cpg=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E7=9A=84=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mini/capi/job/taskDbSync.java | 8 -- .../java/com/mini/capi/job/taskEnable.java | 8 +- .../capi/sys/controller/sysController.java | 97 ++++++++++--------- 3 files changed, 59 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/mini/capi/job/taskDbSync.java b/src/main/java/com/mini/capi/job/taskDbSync.java index 3ff719f..18093b7 100644 --- a/src/main/java/com/mini/capi/job/taskDbSync.java +++ b/src/main/java/com/mini/capi/job/taskDbSync.java @@ -192,7 +192,6 @@ public class taskDbSync { private String mapMySqlTypeToPgType(String mySqlType, int columnSize, int decimalDigits) { // 统一转为大写处理,避免类型字符串大小写问题 String type = mySqlType.toUpperCase(); - return switch (type) { // 整数类型映射 case "INT", "INTEGER" -> "INTEGER"; @@ -200,7 +199,6 @@ public class taskDbSync { case "SMALLINT" -> "SMALLINT"; case "MEDIUMINT" -> "INTEGER"; // PostgresSQL无MEDIUMINT,用INTEGER兼容 case "BIGINT" -> "BIGINT"; - // 浮点类型映射 case "FLOAT" -> columnSize > 24 ? "DOUBLE PRECISION" : "REAL"; // FLOAT(24)以下映射为REAL case "DOUBLE", "DOUBLE PRECISION" -> "DOUBLE PRECISION"; @@ -209,7 +207,6 @@ public class taskDbSync { int scale = Math.max(decimalDigits, 0); yield "NUMERIC(" + precision + "," + scale + ")"; } - // 字符串类型映射 case "VARCHAR" -> { // PostgresSQL VARCHAR无长度限制时建议用TEXT @@ -219,30 +216,25 @@ public class taskDbSync { case "CHAR" -> "CHAR(" + (columnSize > 0 ? columnSize : 1) + ")"; case "TEXT", "MEDIUMTEXT", "TINYTEXT" -> "TEXT"; case "LONGTEXT" -> "TEXT"; // PostgresSQL TEXT无长度限制 - // 二进制类型映射 case "BLOB" -> "BYTEA"; case "TINYBLOB", "MEDIUMBLOB", "LONGBLOB" -> "BYTEA"; case "BINARY" -> "BYTEA"; case "VARBINARY" -> "BYTEA"; - // 日期时间类型映射 case "DATE" -> "DATE"; case "TIME" -> "TIME"; case "DATETIME", "TIMESTAMP" -> "TIMESTAMP"; case "YEAR" -> "SMALLINT"; // YEAR用SMALLINT存储更高效 - // 特殊类型映射 case "BOOLEAN" -> "BOOLEAN"; case "JSON", "JSONB" -> "JSONB"; // PostgresSQL推荐用JSONB case "ENUM" -> "VARCHAR(255)"; // ENUM转为字符串存储,需业务层保证合法性 case "SET" -> "TEXT"; // SET用TEXT存储,逗号分隔 - // 几何类型(简化映射) case "POINT" -> "POINT"; case "LINESTRING" -> "LINESTRING"; case "POLYGON" -> "POLYGON"; - // 未匹配类型的默认处理 default -> { // 日志输出未匹配的类型,便于后续优化 diff --git a/src/main/java/com/mini/capi/job/taskEnable.java b/src/main/java/com/mini/capi/job/taskEnable.java index c4b69c7..91680d1 100644 --- a/src/main/java/com/mini/capi/job/taskEnable.java +++ b/src/main/java/com/mini/capi/job/taskEnable.java @@ -46,7 +46,10 @@ public class taskEnable { */ @GetMapping("/getTaskDockerDiskInfo") public ApiResult jobHostDisk(String token) { - if (vToken.isValidToken(token)) { + if (!vToken.isValidToken(token)) { + return ApiResult.error(401, "无效的访问令牌"); + } + try { List dockerHosts = dockerHostService.list(); List errorList = Collections.synchronizedList(new ArrayList<>()); // 并行处理所有宿主机 @@ -58,8 +61,9 @@ public class taskEnable { return errorList.isEmpty() ? ApiResult.success() : ApiResult.error(); + } catch (Exception e) { + return ApiResult.error(101, e.getMessage()); } - return ApiResult.error(); } diff --git a/src/main/java/com/mini/capi/sys/controller/sysController.java b/src/main/java/com/mini/capi/sys/controller/sysController.java index 9e1fbc4..40ef07f 100644 --- a/src/main/java/com/mini/capi/sys/controller/sysController.java +++ b/src/main/java/com/mini/capi/sys/controller/sysController.java @@ -255,7 +255,11 @@ public class sysController { @GetMapping("/getApiInfo") public ApiResult> getApiInfo(String token) { - if (vToken.isValidToken(token)) { + if (!vToken.isValidToken(token)) { + return ApiResult.error(401, "无效的访问令牌"); + } + + try { // 1. 新建一个一次性 List List snapshots = Collections.synchronizedList(new LinkedList<>()); @@ -267,8 +271,9 @@ public class sysController { ((LinkedList) snapshots).removeFirst(); } return ApiResult.success(Collections.singletonList(SnapshotDTO.from(snap))); + } catch (Exception e) { + return ApiResult.error(101, e.getMessage()); } - return ApiResult.error(); } @@ -277,7 +282,10 @@ public class sysController { */ @GetMapping("/getApiDockerInfo") public ApiResult getDockerInfo(String token) { - if (vToken.isValidToken(token)) { + if (!vToken.isValidToken(token)) { + return ApiResult.error(401, "无效的访问令牌"); + } + try { List dockerHosts = dockerHostService.list(); List errorList = Collections.synchronizedList(new ArrayList<>()); CompletableFuture[] futures = dockerHosts.stream() @@ -289,8 +297,9 @@ public class sysController { return errorList.isEmpty() ? ApiResult.success() : ApiResult.error(); + } catch (Exception e) { + return ApiResult.error(101, e.getMessage()); } - return ApiResult.error(); } @@ -299,29 +308,29 @@ public class sysController { */ @GetMapping("/getApiStartDockerInfo") public ApiResult startDockerInfo(String id, String token) { - if (vToken.isValidToken(token)) { + if (!vToken.isValidToken(token)) { + return ApiResult.error(401, "无效的访问令牌"); + } + try { DockerContainerInfo cur = dockerInfoService.getById(id); DockerHost host = dockerHostService.getById(cur.getDokerHostId()); - try { - SshUser sshUser = sshUserService.getById(host.getUserId()); - SshInfo sshInfo = sshInfoService.getById(host.getHostId()); - docker.startDocker(sshInfo.getHostIp(), Long.valueOf(sshInfo.getHostPort()), sshUser.getCUsername(), sshUser.getCPassword(), cur.getContainerId()); - /* 2. 取回最新列表 */ - List remoteList = docker.getDockerInfo( - sshInfo.getHostIp(), - Long.valueOf(sshInfo.getHostPort()), - sshUser.getCUsername(), - sshUser.getCPassword()); - /* 3. 有则更新、无则插入、失效删除 */ - refreshContainerTable(cur.getDokerHostId(), remoteList, sshInfo); - /* 4. 更新主机运行数 */ - updateRunNum(host, remoteList); - return ApiResult.success(); - } catch (Exception e) { - System.out.println(e.getMessage()); - } + SshUser sshUser = sshUserService.getById(host.getUserId()); + SshInfo sshInfo = sshInfoService.getById(host.getHostId()); + docker.startDocker(sshInfo.getHostIp(), Long.valueOf(sshInfo.getHostPort()), sshUser.getCUsername(), sshUser.getCPassword(), cur.getContainerId()); + /* 2. 取回最新列表 */ + List remoteList = docker.getDockerInfo( + sshInfo.getHostIp(), + Long.valueOf(sshInfo.getHostPort()), + sshUser.getCUsername(), + sshUser.getCPassword()); + /* 3. 有则更新、无则插入、失效删除 */ + refreshContainerTable(cur.getDokerHostId(), remoteList, sshInfo); + /* 4. 更新主机运行数 */ + updateRunNum(host, remoteList); + return ApiResult.success(); + } catch (Exception e) { + return ApiResult.error(101, e.getMessage()); } - return ApiResult.error(); } @@ -330,29 +339,29 @@ public class sysController { */ @GetMapping("/getApiStopDockerInfo") public ApiResult stopDockerInfo(String id, String token) { - if (vToken.isValidToken(token)) { + if (!vToken.isValidToken(token)) { + return ApiResult.error(401, "无效的访问令牌"); + } + try { DockerContainerInfo cur = dockerInfoService.getById(id); DockerHost host = dockerHostService.getById(cur.getDokerHostId()); - try { - SshUser sshUser = sshUserService.getById(host.getUserId()); - SshInfo sshInfo = sshInfoService.getById(host.getHostId()); - docker.stopDocker(sshInfo.getHostIp(), Long.valueOf(sshInfo.getHostPort()), sshUser.getCUsername(), sshUser.getCPassword(), cur.getContainerId()); - /* 2. 取回最新列表 */ - List remoteList = docker.getDockerInfo( - sshInfo.getHostIp(), - Long.valueOf(sshInfo.getHostPort()), - sshUser.getCUsername(), - sshUser.getCPassword()); - /* 3. 有则更新、无则插入、失效删除 */ - refreshContainerTable(cur.getDokerHostId(), remoteList, sshInfo); - /* 4. 更新主机运行数 */ - updateRunNum(host, remoteList); - return ApiResult.success(); - } catch (Exception e) { - System.out.println(e.getMessage()); - } + SshUser sshUser = sshUserService.getById(host.getUserId()); + SshInfo sshInfo = sshInfoService.getById(host.getHostId()); + docker.stopDocker(sshInfo.getHostIp(), Long.valueOf(sshInfo.getHostPort()), sshUser.getCUsername(), sshUser.getCPassword(), cur.getContainerId()); + /* 2. 取回最新列表 */ + List remoteList = docker.getDockerInfo( + sshInfo.getHostIp(), + Long.valueOf(sshInfo.getHostPort()), + sshUser.getCUsername(), + sshUser.getCPassword()); + /* 3. 有则更新、无则插入、失效删除 */ + refreshContainerTable(cur.getDokerHostId(), remoteList, sshInfo); + /* 4. 更新主机运行数 */ + updateRunNum(host, remoteList); + return ApiResult.success(); + } catch (Exception e) { + return ApiResult.error(101, e.getMessage()); } - return ApiResult.error(); }