From 3cf6a5cfb47ea872d6e07be0d89304dc80ed61bb Mon Sep 17 00:00:00 2001 From: web Date: Mon, 1 Dec 2025 03:00:47 -0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20update=20localization=20fil?= =?UTF-8?q?es=20and=20improve=20system=20version=20management?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Changed output path for i18next configuration in admin and user apps to "public/assets/locales/{{language}}/{{namespace}}.json". - Added new translation keys in English and Chinese for admin and user updates in tool.json files. - Refactored SystemVersionCard component to utilize new service version checking and updating logic. - Introduced basic service version checking and updating functions in the gateway service. - Added typings for new API endpoints related to service version management. - Updated Vite configuration to rewrite API paths. - Added TypeScript error handling in various service files. --- apps/admin/i18next.config.ts | 2 +- .../public/assets/locales/en-US/tool.json | 9 +- .../public/assets/locales/zh-CN/tool.json | 9 +- .../components/system-version-card.tsx | 331 ++++++++++-------- apps/admin/src/types/api.d.ts | 1 + apps/admin/vite.config.ts | 1 + apps/user/i18next.config.ts | 2 +- packages/ui/openapi2ts.config.ts | 7 + packages/ui/src/services/admin/ads.ts | 1 + .../ui/src/services/admin/announcement.ts | 1 + packages/ui/src/services/admin/application.ts | 1 + packages/ui/src/services/admin/authMethod.ts | 1 + packages/ui/src/services/admin/console.ts | 1 + packages/ui/src/services/admin/coupon.ts | 1 + packages/ui/src/services/admin/document.ts | 1 + packages/ui/src/services/admin/index.ts | 1 + packages/ui/src/services/admin/log.ts | 1 + packages/ui/src/services/admin/marketing.ts | 1 + packages/ui/src/services/admin/order.ts | 1 + packages/ui/src/services/admin/payment.ts | 1 + packages/ui/src/services/admin/server.ts | 1 + packages/ui/src/services/admin/subscribe.ts | 1 + packages/ui/src/services/admin/system.ts | 1 + packages/ui/src/services/admin/ticket.ts | 1 + packages/ui/src/services/admin/tool.ts | 1 + packages/ui/src/services/admin/user.ts | 1 + packages/ui/src/services/common/auth.ts | 1 + packages/ui/src/services/common/common.ts | 1 + packages/ui/src/services/common/index.ts | 1 + .../gateway/basicCheckServiceVersion.ts | 22 ++ .../ui/src/services/gateway/basicHeartbeat.ts | 21 ++ .../services/gateway/basicRegisterService.ts | 22 ++ .../services/gateway/basicUpdateService.ts | 22 ++ packages/ui/src/services/gateway/index.ts | 14 + packages/ui/src/services/gateway/typings.d.ts | 77 ++++ packages/ui/src/services/user/announcement.ts | 1 + packages/ui/src/services/user/document.ts | 1 + packages/ui/src/services/user/index.ts | 1 + packages/ui/src/services/user/order.ts | 1 + packages/ui/src/services/user/payment.ts | 1 + packages/ui/src/services/user/portal.ts | 1 + packages/ui/src/services/user/subscribe.ts | 1 + packages/ui/src/services/user/ticket.ts | 1 + packages/ui/src/services/user/user.ts | 1 + 44 files changed, 427 insertions(+), 143 deletions(-) create mode 100644 packages/ui/src/services/gateway/basicCheckServiceVersion.ts create mode 100644 packages/ui/src/services/gateway/basicHeartbeat.ts create mode 100644 packages/ui/src/services/gateway/basicRegisterService.ts create mode 100644 packages/ui/src/services/gateway/basicUpdateService.ts create mode 100644 packages/ui/src/services/gateway/index.ts create mode 100644 packages/ui/src/services/gateway/typings.d.ts diff --git a/apps/admin/i18next.config.ts b/apps/admin/i18next.config.ts index ac2b09a..f676de6 100644 --- a/apps/admin/i18next.config.ts +++ b/apps/admin/i18next.config.ts @@ -18,6 +18,6 @@ export default defineConfig({ "src/**/*.{js,jsx,ts,tsx}", "../../packages/ui/src/**/*.{js,jsx,ts,tsx}", ], // Source files to scan - output: "public/locales/{{language}}/{{namespace}}.json", // Output path template + output: "public/assets/locales/{{language}}/{{namespace}}.json", // Output path template }, }); diff --git a/apps/admin/public/assets/locales/en-US/tool.json b/apps/admin/public/assets/locales/en-US/tool.json index 70e3a25..1503c5c 100644 --- a/apps/admin/public/assets/locales/en-US/tool.json +++ b/apps/admin/public/assets/locales/en-US/tool.json @@ -1,8 +1,9 @@ { + "adminUpdateSuccess": "Admin updated successfully", "cancel": "Cancel", "confirmReboot": "Confirm Reboot", "confirmSystemReboot": "Confirm System Reboot", - "newVersionAvailable": "New Version Available", + "confirmUpdate": "Confirm Update", "rebootDescription": "Are you sure you want to reboot the system? This action cannot be undone.", "rebooting": "Rebooting...", "refreshLogs": "Refresh Logs", @@ -10,5 +11,11 @@ "systemLogs": "System Logs", "systemReboot": "System Reboot", "systemServices": "System Services", + "update": "Update", + "updateFailed": "Update failed", + "updateServerDescription": "Are you sure you want to update the server version from V{{current}} to V{{latest}}?", + "updateSuccess": "Update completed successfully", + "updateWebDescription": "Are you sure you want to update the web version from V{{current}} to V{{latest}}?", + "userUpdateSuccess": "User updated successfully", "webVersion": "Web Version" } diff --git a/apps/admin/public/assets/locales/zh-CN/tool.json b/apps/admin/public/assets/locales/zh-CN/tool.json index cd707fe..478dbbc 100644 --- a/apps/admin/public/assets/locales/zh-CN/tool.json +++ b/apps/admin/public/assets/locales/zh-CN/tool.json @@ -1,8 +1,9 @@ { + "adminUpdateSuccess": "管理端更新成功", "cancel": "取消", "confirmReboot": "确认重启", "confirmSystemReboot": "确认系统重启", - "newVersionAvailable": "有新版本可用", + "confirmUpdate": "确认更新", "rebootDescription": "确定要重启系统吗?此操作无法撤销。", "rebooting": "重启中...", "refreshLogs": "刷新日志", @@ -10,5 +11,11 @@ "systemLogs": "系统日志", "systemReboot": "系统重启", "systemServices": "系统服务", + "update": "更新", + "updateFailed": "更新失败", + "updateServerDescription": "确定要将服务器版本从 V{{current}} 更新到 V{{latest}} 吗?", + "updateSuccess": "更新成功", + "updateWebDescription": "确定要将前端版本从 V{{current}} 更新到 V{{latest}} 吗?", + "userUpdateSuccess": "用户端更新成功", "webVersion": "前端版本" } diff --git a/apps/admin/src/sections/dashboard/components/system-version-card.tsx b/apps/admin/src/sections/dashboard/components/system-version-card.tsx index e35a169..d75b6da 100644 --- a/apps/admin/src/sections/dashboard/components/system-version-card.tsx +++ b/apps/admin/src/sections/dashboard/components/system-version-card.tsx @@ -1,7 +1,6 @@ "use client"; -import { useQuery } from "@tanstack/react-query"; -import { Link } from "@tanstack/react-router"; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { AlertDialog, AlertDialogCancel, @@ -21,123 +20,109 @@ import { CardTitle, } from "@workspace/ui/components/card"; import { Icon } from "@workspace/ui/composed/icon"; -import { getVersion, restartSystem } from "@workspace/ui/services/admin/tool"; +import { getModuleConfig } from "@workspace/ui/services/admin/system"; +import { restartSystem } from "@workspace/ui/services/admin/tool"; +import { basicCheckServiceVersion } from "@workspace/ui/services/gateway/basicCheckServiceVersion"; +import { basicUpdateService } from "@workspace/ui/services/gateway/basicUpdateService"; import { useState } from "react"; import { useTranslation } from "react-i18next"; -import { formatDate } from "@/utils/common"; +import { toast } from "sonner"; import packageJson from "../../../../../../package.json"; import SystemLogsDialog from "./system-logs-dialog"; export default function SystemVersionCard() { const { t } = useTranslation("tool"); + const queryClient = useQueryClient(); const [openRestart, setOpenRestart] = useState(false); const [isRestarting, setIsRestarting] = useState(false); + const [openUpdateWeb, setOpenUpdateWeb] = useState(false); + const [openUpdateServer, setOpenUpdateServer] = useState(false); + const [isUpdatingWeb, setIsUpdatingWeb] = useState(false); - const { data: versionInfo } = useQuery({ - queryKey: ["getVersionInfo"], + const { data: moduleConfig } = useQuery({ + queryKey: ["getModuleConfig"], queryFn: async () => { - try { - const [webResponse, serverResponse, systemResponse] = await Promise.all( - [ - fetch( - "https://data.jsdelivr.com/v1/packages/gh/perfect-panel/frontend/resolved?specifier=latest" - ), - fetch( - "https://data.jsdelivr.com/v1/packages/gh/perfect-panel/server/resolved?specifier=latest" - ), - getVersion(), - ] - ); - - const webData = webResponse.ok ? await webResponse.json() : null; - const serverData = serverResponse.ok - ? await serverResponse.json() - : null; - const systemData = systemResponse.data.data; - - const rawVersion = (systemData?.version || "") - .replace(" Develop", "") - .trim(); - const timeMatch = rawVersion.match(/\(([^)]+)\)/); - const timestamp = timeMatch ? timeMatch[1] : ""; - const versionWithoutTime = rawVersion.replace(/\([^)]*\)/, "").trim(); - - const isDevelopment = !/^[Vv]?\d+\.\d+\.\d+(-[a-zA-Z]+(\.\d+)?)?$/.test( - versionWithoutTime - ); - - let displayVersion = versionWithoutTime; - if ( - !( - isDevelopment || - versionWithoutTime.startsWith("V") || - versionWithoutTime.startsWith("v") - ) - ) { - displayVersion = `V${versionWithoutTime}`; - } - const lastUpdated = formatDate(new Date(timestamp || Date.now())) || ""; - - const systemInfo = { - isRelease: !isDevelopment, - version: displayVersion, - lastUpdated, - }; - - const latestReleases = { - web: webData - ? { - version: webData.version, - url: `https://github.com/perfect-panel/frontend/releases/tag/v${webData.version}`, - } - : null, - server: serverData - ? { - version: serverData.version, - url: `https://github.com/perfect-panel/server/releases/tag/v${serverData.version}`, - } - : null, - }; - - const hasNewVersion = - latestReleases.web && - packageJson.version !== latestReleases.web.version.replace(/^v/, ""); - - const hasServerNewVersion = - latestReleases.server && - systemInfo.version && - systemInfo.version.replace(/^V/, "") !== - latestReleases.server.version.replace(/^v/, ""); - - return { - systemInfo, - latestReleases, - hasNewVersion, - hasServerNewVersion, - }; - } catch (error) { - console.error("Failed to fetch version info:", error); - return { - systemInfo: { isRelease: true, version: "V1.0.0", lastUpdated: "" }, - latestReleases: { web: null, server: null }, - hasNewVersion: false, - hasServerNewVersion: false, - }; - } + const { data } = await getModuleConfig(); + return data.data; }, staleTime: 0, + }); + + const { data: serverVersionInfo } = useQuery({ + queryKey: ["checkServerVersion", moduleConfig?.secret], + queryFn: async () => { + const { data } = await basicCheckServiceVersion({ + service_name: moduleConfig!.service_name, + secret: moduleConfig!.secret, + }); + return data.data; + }, + enabled: !!moduleConfig?.secret, + staleTime: 0, retry: 1, - retryDelay: 10_000, - initialData: { - systemInfo: { isRelease: true, version: "V1.0.0", lastUpdated: "" }, - latestReleases: { web: null, server: null }, - hasNewVersion: false, - hasServerNewVersion: false, + }); + + const { data: webVersionInfo } = useQuery({ + queryKey: ["checkWebVersion", moduleConfig?.secret], + queryFn: async () => { + const { data } = await basicCheckServiceVersion({ + service_name: "admin", + secret: moduleConfig!.secret, + }); + return data.data; + }, + enabled: !!moduleConfig?.secret, + staleTime: 0, + retry: 1, + }); + + const updateServerMutation = useMutation({ + mutationFn: async (serviceName: string) => { + await basicUpdateService({ + service_name: serviceName, + secret: moduleConfig!.secret, + }); + }, + onSuccess: () => { + toast.success(t("updateSuccess", "Update completed successfully")); + queryClient.invalidateQueries({ queryKey: ["checkServerVersion"] }); + queryClient.invalidateQueries({ queryKey: ["getModuleConfig"] }); + setOpenUpdateServer(false); + }, + onError: () => { + toast.error(t("updateFailed", "Update failed")); }, }); - const { systemInfo, latestReleases, hasNewVersion, hasServerNewVersion } = - versionInfo; + const handleUpdateWeb = async () => { + if (!moduleConfig?.secret) return; + + setIsUpdatingWeb(true); + try { + await basicUpdateService({ + service_name: "admin", + secret: moduleConfig.secret, + }); + toast.success(t("adminUpdateSuccess", "Admin updated successfully")); + + await basicUpdateService({ + service_name: "user", + secret: moduleConfig.secret, + }); + toast.success(t("userUpdateSuccess", "User updated successfully")); + + setOpenUpdateWeb(false); + window.location.reload(); + } catch { + toast.error(t("updateFailed", "Update failed")); + } finally { + setIsUpdatingWeb(false); + } + }; + + const hasServerNewVersion = serverVersionInfo?.has_update ?? false; + const hasWebNewVersion = webVersionInfo?.has_update ?? false; + const isUpdatingServer = updateServerMutation.isPending; return ( @@ -199,27 +184,55 @@ export default function SystemVersionCard() {
V{packageJson.version} - {hasNewVersion && ( - - - {t("newVersionAvailable", "New Version Available")} - - - + {hasWebNewVersion && webVersionInfo && ( + + + + + + + + {t("confirmUpdate", "Confirm Update")} + + + {t( + "updateWebDescription", + "Are you sure you want to update the web version from V{{current}} to V{{latest}}?", + { + current: packageJson.version, + latest: webVersionInfo.latest_version, + } + )} + + + + + {t("cancel", "Cancel")} + + + + + )}
+
@@ -228,27 +241,67 @@ export default function SystemVersionCard() {
- - {systemInfo?.version || "V1.0.0"} + + V + {moduleConfig?.service_version || + serverVersionInfo?.current_version || + "1.0.0"} - {hasServerNewVersion && ( - - - {t("newVersionAvailable", "New Version Available")} - - - + + + + + + + {t("confirmUpdate", "Confirm Update")} + + + {t( + "updateServerDescription", + "Are you sure you want to update the server version from V{{current}} to V{{latest}}?", + { + current: + moduleConfig.service_version || + serverVersionInfo.current_version, + latest: serverVersionInfo.latest_version, + } + )} + + + + + {t("cancel", "Cancel")} + + + + + )}
diff --git a/apps/admin/src/types/api.d.ts b/apps/admin/src/types/api.d.ts index 42fd046..3f22f9e 100644 --- a/apps/admin/src/types/api.d.ts +++ b/apps/admin/src/types/api.d.ts @@ -1,2 +1,3 @@ +/// /// /// diff --git a/apps/admin/vite.config.ts b/apps/admin/vite.config.ts index 3b23306..b1a59cd 100644 --- a/apps/admin/vite.config.ts +++ b/apps/admin/vite.config.ts @@ -47,6 +47,7 @@ export default defineConfig({ target: "https://api.ppanel.dev", changeOrigin: true, secure: false, + rewrite: (path) => path.replace(/^\/api/, ""), }, }, }, diff --git a/apps/user/i18next.config.ts b/apps/user/i18next.config.ts index ac2b09a..f676de6 100644 --- a/apps/user/i18next.config.ts +++ b/apps/user/i18next.config.ts @@ -18,6 +18,6 @@ export default defineConfig({ "src/**/*.{js,jsx,ts,tsx}", "../../packages/ui/src/**/*.{js,jsx,ts,tsx}", ], // Source files to scan - output: "public/locales/{{language}}/{{namespace}}.json", // Output path template + output: "public/assets/locales/{{language}}/{{namespace}}.json", // Output path template }, }); diff --git a/packages/ui/openapi2ts.config.ts b/packages/ui/openapi2ts.config.ts index a99c3d4..5b44f3a 100644 --- a/packages/ui/openapi2ts.config.ts +++ b/packages/ui/openapi2ts.config.ts @@ -23,6 +23,13 @@ const config = [ "https://raw.githubusercontent.com/perfect-panel/ppanel-docs/refs/heads/main/public/swagger/admin.json", projectName: "admin", }, + { + ...baseConfig, + schemaPath: + "https://raw.githubusercontent.com/perfect-panel/ppanel-docs/refs/heads/main/public/swagger/gateway.json", + apiPrefix: "", + projectName: "gateway", + }, ]; export default config; diff --git a/packages/ui/src/services/admin/ads.ts b/packages/ui/src/services/admin/ads.ts index 2af4938..cc08f3d 100644 --- a/packages/ui/src/services/admin/ads.ts +++ b/packages/ui/src/services/admin/ads.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/announcement.ts b/packages/ui/src/services/admin/announcement.ts index 7e003a2..056975a 100644 --- a/packages/ui/src/services/admin/announcement.ts +++ b/packages/ui/src/services/admin/announcement.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/application.ts b/packages/ui/src/services/admin/application.ts index 146859b..745a82a 100644 --- a/packages/ui/src/services/admin/application.ts +++ b/packages/ui/src/services/admin/application.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/authMethod.ts b/packages/ui/src/services/admin/authMethod.ts index 4231b81..dadf9ce 100644 --- a/packages/ui/src/services/admin/authMethod.ts +++ b/packages/ui/src/services/admin/authMethod.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/console.ts b/packages/ui/src/services/admin/console.ts index 2b33453..718146d 100644 --- a/packages/ui/src/services/admin/console.ts +++ b/packages/ui/src/services/admin/console.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/coupon.ts b/packages/ui/src/services/admin/coupon.ts index 7933cf4..8ffd545 100644 --- a/packages/ui/src/services/admin/coupon.ts +++ b/packages/ui/src/services/admin/coupon.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/document.ts b/packages/ui/src/services/admin/document.ts index 8582728..95045d9 100644 --- a/packages/ui/src/services/admin/document.ts +++ b/packages/ui/src/services/admin/document.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/index.ts b/packages/ui/src/services/admin/index.ts index f6ee7b6..b15b80e 100644 --- a/packages/ui/src/services/admin/index.ts +++ b/packages/ui/src/services/admin/index.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ // API 更新时间: // API 唯一标识: diff --git a/packages/ui/src/services/admin/log.ts b/packages/ui/src/services/admin/log.ts index 90793ac..b644e27 100644 --- a/packages/ui/src/services/admin/log.ts +++ b/packages/ui/src/services/admin/log.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/marketing.ts b/packages/ui/src/services/admin/marketing.ts index 1f4bcd4..674c763 100644 --- a/packages/ui/src/services/admin/marketing.ts +++ b/packages/ui/src/services/admin/marketing.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/order.ts b/packages/ui/src/services/admin/order.ts index d63b309..1530163 100644 --- a/packages/ui/src/services/admin/order.ts +++ b/packages/ui/src/services/admin/order.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/payment.ts b/packages/ui/src/services/admin/payment.ts index c4ef4d3..e3c46d6 100644 --- a/packages/ui/src/services/admin/payment.ts +++ b/packages/ui/src/services/admin/payment.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/server.ts b/packages/ui/src/services/admin/server.ts index 65749ec..80691c8 100644 --- a/packages/ui/src/services/admin/server.ts +++ b/packages/ui/src/services/admin/server.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/subscribe.ts b/packages/ui/src/services/admin/subscribe.ts index b7bd95f..adb2655 100644 --- a/packages/ui/src/services/admin/subscribe.ts +++ b/packages/ui/src/services/admin/subscribe.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/system.ts b/packages/ui/src/services/admin/system.ts index 7378bcd..0012c11 100644 --- a/packages/ui/src/services/admin/system.ts +++ b/packages/ui/src/services/admin/system.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/ticket.ts b/packages/ui/src/services/admin/ticket.ts index b858685..fc64757 100644 --- a/packages/ui/src/services/admin/ticket.ts +++ b/packages/ui/src/services/admin/ticket.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/tool.ts b/packages/ui/src/services/admin/tool.ts index 8b2ad94..ff43ad6 100644 --- a/packages/ui/src/services/admin/tool.ts +++ b/packages/ui/src/services/admin/tool.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/admin/user.ts b/packages/ui/src/services/admin/user.ts index 6a8f32a..c3b8cab 100644 --- a/packages/ui/src/services/admin/user.ts +++ b/packages/ui/src/services/admin/user.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/common/auth.ts b/packages/ui/src/services/common/auth.ts index df9a61e..6a26506 100644 --- a/packages/ui/src/services/common/auth.ts +++ b/packages/ui/src/services/common/auth.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/common/common.ts b/packages/ui/src/services/common/common.ts index f2c3654..387441c 100644 --- a/packages/ui/src/services/common/common.ts +++ b/packages/ui/src/services/common/common.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/common/index.ts b/packages/ui/src/services/common/index.ts index 201142d..6008c05 100644 --- a/packages/ui/src/services/common/index.ts +++ b/packages/ui/src/services/common/index.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ // API 更新时间: // API 唯一标识: diff --git a/packages/ui/src/services/gateway/basicCheckServiceVersion.ts b/packages/ui/src/services/gateway/basicCheckServiceVersion.ts new file mode 100644 index 0000000..56aa468 --- /dev/null +++ b/packages/ui/src/services/gateway/basicCheckServiceVersion.ts @@ -0,0 +1,22 @@ +// +/* eslint-disable */ +import request from "@workspace/ui/lib/request"; + +/** Check if there is a new version of the service GET /basic/check/version */ +export async function basicCheckServiceVersion( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.basicCheckServiceVersionParams, + options?: { [key: string]: any } +) { + return request<{ + code?: number; + data?: API.ServiceVersionResponse; + msg?: string; + }>("/basic/check/version", { + method: "GET", + params: { + ...params, + }, + ...(options || {}), + }); +} diff --git a/packages/ui/src/services/gateway/basicHeartbeat.ts b/packages/ui/src/services/gateway/basicHeartbeat.ts new file mode 100644 index 0000000..275540b --- /dev/null +++ b/packages/ui/src/services/gateway/basicHeartbeat.ts @@ -0,0 +1,21 @@ +// +/* eslint-disable */ +import request from "@workspace/ui/lib/request"; + +/** Send heartbeat to the service GET /basic/heartbeat */ +export async function basicHeartbeat( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.basicHeartbeatParams, + options?: { [key: string]: any } +) { + return request<{ code?: number; data?: API.HeartbeatResponse; msg?: string }>( + "/basic/heartbeat", + { + method: "GET", + params: { + ...params, + }, + ...(options || {}), + } + ); +} diff --git a/packages/ui/src/services/gateway/basicRegisterService.ts b/packages/ui/src/services/gateway/basicRegisterService.ts new file mode 100644 index 0000000..576dfe0 --- /dev/null +++ b/packages/ui/src/services/gateway/basicRegisterService.ts @@ -0,0 +1,22 @@ +// +/* eslint-disable */ +import request from "@workspace/ui/lib/request"; + +/** Register a new service to the gateway POST /basic/register */ +export async function basicRegisterService( + body: API.RegisterServiceRequest, + options?: { [key: string]: any } +) { + return request<{ + code?: number; + data?: API.RegisterServiceResponse; + msg?: string; + }>("/basic/register", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + data: body, + ...(options || {}), + }); +} diff --git a/packages/ui/src/services/gateway/basicUpdateService.ts b/packages/ui/src/services/gateway/basicUpdateService.ts new file mode 100644 index 0000000..e390ef2 --- /dev/null +++ b/packages/ui/src/services/gateway/basicUpdateService.ts @@ -0,0 +1,22 @@ +// +/* eslint-disable */ +import request from "@workspace/ui/lib/request"; + +/** Update the service to the latest version POST /basic/update */ +export async function basicUpdateService( + body: API.UpdateServiceRequest, + options?: { [key: string]: any } +) { + return request<{ + code?: number; + data?: API.UpdateServiceResponse; + msg?: string; + }>("/basic/update", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + data: body, + ...(options || {}), + }); +} diff --git a/packages/ui/src/services/gateway/index.ts b/packages/ui/src/services/gateway/index.ts new file mode 100644 index 0000000..3d872f7 --- /dev/null +++ b/packages/ui/src/services/gateway/index.ts @@ -0,0 +1,14 @@ +// +/* eslint-disable */ +// API 更新时间: +// API 唯一标识: +import * as basicCheckServiceVersion from "./basicCheckServiceVersion"; +import * as basicHeartbeat from "./basicHeartbeat"; +import * as basicRegisterService from "./basicRegisterService"; +import * as basicUpdateService from "./basicUpdateService"; +export default { + basicCheckServiceVersion, + basicHeartbeat, + basicRegisterService, + basicUpdateService, +}; diff --git a/packages/ui/src/services/gateway/typings.d.ts b/packages/ui/src/services/gateway/typings.d.ts new file mode 100644 index 0000000..289a05a --- /dev/null +++ b/packages/ui/src/services/gateway/typings.d.ts @@ -0,0 +1,77 @@ +declare namespace API { + type basicCheckServiceVersionParams = { + /** 服务名称 */ + service_name: string; + /** 通讯密钥 */ + secret: string; + }; + + type basicHeartbeatParams = { + /** 服务名称 */ + service_name: string; + /** 通讯密钥 */ + secret: string; + }; + + type CheckServiceVersionRequest = true; + + type HeartbeatRequest = true; + + type HeartbeatResponse = { + /** 心跳是否成功 */ + success: boolean; + }; + + type RegisterServiceRequest = { + /** 心跳地址 */ + heartbeat_url: string; + /** 代理路径 */ + proxy_path: string; + /** 服务代码仓库 */ + repository: string; + /** 通讯密钥 */ + secret: string; + /** 服务名称 */ + service_name: string; + /** 服务地址 */ + service_url: string; + /** 服务版本 */ + service_version: string; + }; + + type RegisterServiceResponse = { + /** 返回信息 */ + message: string; + /** 注册是否成功 */ + success: boolean; + }; + + type ServiceVersionResponse = { + /** 当前版本 */ + current_version: string; + /** 是否有更新 */ + has_update: boolean; + /** 最新版本 */ + latest_version: string; + }; + + type UpdateServiceRequest = { + /** 通讯密钥 */ + secret: string; + /** 服务名称 */ + service_name: string; + }; + + type UpdateServiceResponse = { + /** 是否更新出错 */ + error: boolean; + /** 返回信息 */ + message: string; + /** 是否正在更新 */ + running: boolean; + /** 更新步骤 */ + step: number; + /** 更新总步骤 */ + total: number; + }; +} diff --git a/packages/ui/src/services/user/announcement.ts b/packages/ui/src/services/user/announcement.ts index 60b2f04..b6278a6 100644 --- a/packages/ui/src/services/user/announcement.ts +++ b/packages/ui/src/services/user/announcement.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/user/document.ts b/packages/ui/src/services/user/document.ts index 61220a5..1062fa0 100644 --- a/packages/ui/src/services/user/document.ts +++ b/packages/ui/src/services/user/document.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/user/index.ts b/packages/ui/src/services/user/index.ts index 1b4de84..b164eba 100644 --- a/packages/ui/src/services/user/index.ts +++ b/packages/ui/src/services/user/index.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ // API 更新时间: // API 唯一标识: diff --git a/packages/ui/src/services/user/order.ts b/packages/ui/src/services/user/order.ts index c7f807a..c4a2d65 100644 --- a/packages/ui/src/services/user/order.ts +++ b/packages/ui/src/services/user/order.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/user/payment.ts b/packages/ui/src/services/user/payment.ts index 4deb59f..4412a94 100644 --- a/packages/ui/src/services/user/payment.ts +++ b/packages/ui/src/services/user/payment.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/user/portal.ts b/packages/ui/src/services/user/portal.ts index 89700b2..c43ee96 100644 --- a/packages/ui/src/services/user/portal.ts +++ b/packages/ui/src/services/user/portal.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/user/subscribe.ts b/packages/ui/src/services/user/subscribe.ts index 23b4968..1f8df20 100644 --- a/packages/ui/src/services/user/subscribe.ts +++ b/packages/ui/src/services/user/subscribe.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/user/ticket.ts b/packages/ui/src/services/user/ticket.ts index 6f95041..7de8296 100644 --- a/packages/ui/src/services/user/ticket.ts +++ b/packages/ui/src/services/user/ticket.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request"; diff --git a/packages/ui/src/services/user/user.ts b/packages/ui/src/services/user/user.ts index b8cc248..d656027 100644 --- a/packages/ui/src/services/user/user.ts +++ b/packages/ui/src/services/user/user.ts @@ -1,3 +1,4 @@ +// /* eslint-disable */ import request from "@workspace/ui/lib/request";