From 7d7de75bbd27b312691bb54ba15dae29b621801e Mon Sep 17 00:00:00 2001 From: mediabot-pt <295750538+mediabot-pt@users.noreply.github.com> Date: Mon, 29 Jun 2026 23:20:14 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=96=87=E4=BB=B6=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E6=8C=89pending/approved=E5=8C=BA=E5=88=86=EF=BC=8C?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - submit: configs/{siteId}/pending/{hash}.json - approve: 文件移到 configs/{siteId}/approved/{hash}.json --- .../java/com/par/api/controller/AdminController.java | 10 ++++++++++ .../com/par/core/service/impl/ConfigServiceImpl.java | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/par-api/src/main/java/com/par/api/controller/AdminController.java b/par-api/src/main/java/com/par/api/controller/AdminController.java index 9a2e799..44ad570 100644 --- a/par-api/src/main/java/com/par/api/controller/AdminController.java +++ b/par-api/src/main/java/com/par/api/controller/AdminController.java @@ -13,6 +13,7 @@ import com.par.core.mapper.SiteMapper; import com.par.core.entity.Psk; import com.par.core.service.AccountService; import com.par.core.service.PskService; +import com.par.core.storage.CachedStorageService; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -38,6 +39,7 @@ public class AdminController { private final SiteMapper siteMapper; private final AccountService accountService; private final PskService pskService; + private final CachedStorageService storageService; /** * 获取所有用户列表 @@ -84,6 +86,14 @@ public class AdminController { } config.setVersion(String.valueOf(nextVersion)); + // 文件从 pending 移到 approved 路径 + String approvedPath = config.getStoragePath().replace("/pending/", "/approved/"); + String content = storageService.read(config.getStoragePath()); + if (content != null) { + storageService.store(approvedPath, content); + config.setStoragePath(approvedPath); + } + config.setStatus(ConfigStatus.APPROVED); config.setReviewerId(reviewerId); config.setReviewedAt(LocalDateTime.now()); diff --git a/par-core/src/main/java/com/par/core/service/impl/ConfigServiceImpl.java b/par-core/src/main/java/com/par/core/service/impl/ConfigServiceImpl.java index 80c25f7..9a65d8e 100644 --- a/par-core/src/main/java/com/par/core/service/impl/ConfigServiceImpl.java +++ b/par-core/src/main/java/com/par/core/service/impl/ConfigServiceImpl.java @@ -57,7 +57,7 @@ public class ConfigServiceImpl implements ConfigService { public SiteConfig submitConfig(String siteId, String version, String configJson, String schemaVersion, Long submitterId) { String configHash = HmacUtil.sha256(configJson); - String storagePath = String.format("configs/%s/%s/%s.json", siteId, version, configHash.substring(0, 8)); + String storagePath = String.format("configs/%s/pending/%s.json", siteId, configHash.substring(0, 8)); // 相同 hash 的提交 → 真正重复,跳过 SiteConfig sameHash = siteConfigMapper.selectOne(