From 18b045b4ba5bb3df7ce08c52e4f4d3190a4a4986 Mon Sep 17 00:00:00 2001 From: mediabot-pt <295750538+mediabot-pt@users.noreply.github.com> Date: Mon, 6 Jul 2026 01:00:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=A1=B5=E9=9D=A2=E9=85=8D=E7=BD=AEkey?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E6=9E=9A=E4=B8=BE=E4=B8=8B=E6=8B=89=E6=A1=86?= =?UTF-8?q?+=E8=87=AA=E5=8A=A8=E5=A1=ABmethod?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/controller/SitePagesController.java | 9 ++++ .../main/java/com/par/core/enums/PageKey.java | 41 +++++++++++++++++++ web/src/views/SitePages.vue | 22 ++++++++-- 3 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 par-core/src/main/java/com/par/core/enums/PageKey.java diff --git a/par-api/src/main/java/com/par/api/controller/SitePagesController.java b/par-api/src/main/java/com/par/api/controller/SitePagesController.java index a24984c..b0d8158 100644 --- a/par-api/src/main/java/com/par/api/controller/SitePagesController.java +++ b/par-api/src/main/java/com/par/api/controller/SitePagesController.java @@ -91,6 +91,15 @@ public class SitePagesController { return ApiResponse.success(Map.of("siteId", siteId, "version", version, "content", content)); } + /** 获取页面入口 key 枚举列表 */ + @GetMapping("/api/v1/admin/page-keys") + public ApiResponse>> pageKeys() { + var list = java.util.Arrays.stream(com.par.core.enums.PageKey.values()) + .map(pk -> Map.of("key", pk.getKey(), "label", pk.getLabel(), "defaultMethod", pk.getDefaultMethod())) + .toList(); + return ApiResponse.success(list); + } + @GetMapping("/api/v1/admin/default-pages/{type}") public ApiResponse> getDefaultPages(@PathVariable String type, HttpServletRequest request) { checkAdmin(request); diff --git a/par-core/src/main/java/com/par/core/enums/PageKey.java b/par-core/src/main/java/com/par/core/enums/PageKey.java new file mode 100644 index 0000000..0dc5310 --- /dev/null +++ b/par-core/src/main/java/com/par/core/enums/PageKey.java @@ -0,0 +1,41 @@ +package com.par.core.enums; + +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * 站点页面入口 key 枚举 — 统一命名,脚本据此分发解析逻辑 + */ +public enum PageKey { + SYNC("sync", "同步", "GET"), + SIGN_IN("signIn", "签到", "POST"), + SEARCH("search", "搜索", "GET"), + DETAIL("detail", "资源详情", "GET"), + DOWNLOAD("download", "下载", "GET"), + USER("user", "用户信息", "GET"), + HOME("home", "首页", "GET"), + TORRENTS("torrents", "种子列表", "GET"), + BONUS("bonus", "魔力值", "GET"), + MESSAGES("messages", "消息", "GET"); + + private final String key; + private final String label; + private final String defaultMethod; + + PageKey(String key, String label, String defaultMethod) { + this.key = key; + this.label = label; + this.defaultMethod = defaultMethod; + } + + @JsonValue + public String getKey() { return key; } + public String getLabel() { return label; } + public String getDefaultMethod() { return defaultMethod; } + + public static PageKey fromKey(String key) { + for (var pk : values()) { + if (pk.key.equalsIgnoreCase(key)) return pk; + } + return null; + } +} diff --git a/web/src/views/SitePages.vue b/web/src/views/SitePages.vue index dd73ecd..d09c054 100644 --- a/web/src/views/SitePages.vue +++ b/web/src/views/SitePages.vue @@ -61,8 +61,12 @@
双向可视化
- - + + @@ -91,6 +95,18 @@ const loading = ref(false), saving = ref(false), uploading = ref(false), deletin const editSiteId = ref(''), editorJson = ref('[]') const defaultTypes = ['nexusphp','mtorrent','gazelle','unit3d'] const isDefaultEditor = computed(() => editSiteId.value.startsWith('default:')) +const pageKeys = ref([]) + +const loadPageKeys = async () => { + try { const r = await api.raw.get('/admin/page-keys'); pageKeys.value = r?.data || r || [] } + catch {} +} + +const onKeyChange = (row) => { + const pk = pageKeys.value.find(k => k.key === row.key) + if (pk?.defaultMethod) row.method = pk.defaultMethod + syncToJson() +} const fmt = (t) => t ? (t.substring(0,19)||'').replace('T',' ') : '-' const parsed = computed(() => { try { return JSON.parse(editorJson.value) } catch { return [] } }) const resolveUrl = (url) => url?.replace('{base}', sitesList.value.find(s=>s.siteId===editSiteId.value)?.urls?.[0] || '{base}') || '' @@ -157,5 +173,5 @@ const savePages = async () => { } catch { ElMessage.error('保存失败') } finally { saving.value = false } } -onMounted(fetchAll) +onMounted(() => { fetchAll(); loadPageKeys() })