refactor: 文件路径按pending/approved区分,去掉版本号

- submit: configs/{siteId}/pending/{hash}.json
- approve: 文件移到 configs/{siteId}/approved/{hash}.json
This commit is contained in:
mediabot-pt
2026-06-29 23:20:14 +08:00
parent d093c5eb28
commit 7d7de75bbd
2 changed files with 11 additions and 1 deletions

View File

@@ -13,6 +13,7 @@ import com.par.core.mapper.SiteMapper;
import com.par.core.entity.Psk; import com.par.core.entity.Psk;
import com.par.core.service.AccountService; import com.par.core.service.AccountService;
import com.par.core.service.PskService; import com.par.core.service.PskService;
import com.par.core.storage.CachedStorageService;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -38,6 +39,7 @@ public class AdminController {
private final SiteMapper siteMapper; private final SiteMapper siteMapper;
private final AccountService accountService; private final AccountService accountService;
private final PskService pskService; private final PskService pskService;
private final CachedStorageService storageService;
/** /**
* 获取所有用户列表 * 获取所有用户列表
@@ -84,6 +86,14 @@ public class AdminController {
} }
config.setVersion(String.valueOf(nextVersion)); 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.setStatus(ConfigStatus.APPROVED);
config.setReviewerId(reviewerId); config.setReviewerId(reviewerId);
config.setReviewedAt(LocalDateTime.now()); config.setReviewedAt(LocalDateTime.now());

View File

@@ -57,7 +57,7 @@ public class ConfigServiceImpl implements ConfigService {
public SiteConfig submitConfig(String siteId, String version, String configJson, public SiteConfig submitConfig(String siteId, String version, String configJson,
String schemaVersion, Long submitterId) { String schemaVersion, Long submitterId) {
String configHash = HmacUtil.sha256(configJson); 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 的提交 → 真正重复,跳过 // 相同 hash 的提交 → 真正重复,跳过
SiteConfig sameHash = siteConfigMapper.selectOne( SiteConfig sameHash = siteConfigMapper.selectOne(