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 26a8bc0..76d991e 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 @@ -290,6 +290,28 @@ public class SitePagesController { return ApiResponse.success(); } + /** 发布普通站点页面配置到云存储 */ + @PutMapping("/api/v1/admin/site-pages/{siteId}/upload") + public ApiResponse uploadSitePages( + @PathVariable String siteId, @RequestBody Map payload, HttpServletRequest request) { + checkAdmin(request); + @SuppressWarnings("unchecked") + var entries = (List>) payload.get("entries"); + String authType = (String) payload.get("authType"); + String authValue = (String) payload.get("authValue"); + sitePagesService.savePages(siteId, entries != null ? entries : List.of(), authType, authValue); + try { + Map config = new LinkedHashMap<>(); + config.put("siteId", siteId); + if (authType != null) config.put("authType", authType); + if (authValue != null) config.put("authValue", authValue); + config.put("entries", entries != null ? entries : List.of()); + String json = objectMapper.writeValueAsString(config); + storageService.store("pages/site/" + siteId + ".json", json); + } catch (Exception ignored) {} + return ApiResponse.success(); + } + private void checkAdmin(HttpServletRequest request) { var level = request.getAttribute("trustLevel"); if (level == null || !"ADMIN".equals(level.toString())) { diff --git a/web/src/views/SitePages.vue b/web/src/views/SitePages.vue index 0f24cb2..4a0da5c 100644 --- a/web/src/views/SitePages.vue +++ b/web/src/views/SitePages.vue @@ -46,7 +46,7 @@

编辑: {{ editSiteId }}

保存 - 上传 + 上传 删除 返回列表
@@ -222,8 +222,12 @@ const deletePages = async () => { const uploadPages = async () => { uploading.value = true try { - const type = editSiteId.value.replace('default:','') - await api.raw.put('/admin/default-pages/'+type+'/upload', { entries: parsed.value }) + if (editSiteId.value.startsWith('default:')) { + const type = editSiteId.value.replace('default:','') + await api.raw.put('/admin/default-pages/'+type+'/upload', { entries: parsed.value }) + } else { + await api.raw.put('/admin/site-pages/'+editSiteId.value+'/upload', { entries: parsed.value, authType: authType.value }) + } ElMessage.success('已上传到云存储') } catch { ElMessage.error('上传失败') } finally { uploading.value = false }