feat: Manifest全局版本号(站点/页面/规则/脚本任一变则递增)

This commit is contained in:
mediabot-pt
2026-07-05 22:05:00 +08:00
parent 41dfd04203
commit 8a2f6144a7
7 changed files with 44 additions and 1 deletions

View File

@@ -0,0 +1,30 @@
package com.par.core.service;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
/**
* Manifest 全局版本号管理
* 任何站点/页面/规则/脚本变更时递增,mediabot 据此判断是否需要拉取最新数据
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class ManifestVersionService {
private final JdbcTemplate jdbc;
/** 获取当前版本号 */
public int current() {
Integer v = jdbc.queryForObject("SELECT version FROM manifest_version WHERE id=1", Integer.class);
return v != null ? v : 1;
}
/** 递增版本号并返回新值 */
public int increment() {
jdbc.update("UPDATE manifest_version SET version = version + 1, updated_at = NOW() WHERE id=1");
return current();
}
}

View File

@@ -17,6 +17,7 @@ import java.util.stream.Collectors;
@Service
public class ConfigServiceImpl implements ConfigService {
private final ManifestVersionService versionService;
private final SiteConfigMapper siteConfigMapper;
private final CachedStorageService storageService;
@@ -71,6 +72,7 @@ public class ConfigServiceImpl implements ConfigService {
config.setIsLatest(false);
siteConfigMapper.insert(config);
versionService.increment();
log.info("Config submitted: siteId={}, version={}, id={}, scriptPath={}", siteId, version, config.getId(), scriptPath);
return config;
}

View File

@@ -16,6 +16,7 @@ import java.util.*;
@RequiredArgsConstructor
public class RiskRuleServiceImpl implements RiskRuleService {
private final ManifestVersionService versionService;
private final RiskRuleMapper mapper;
private final com.par.core.storage.CachedStorageService storageService;
private static final ObjectMapper om = new ObjectMapper();
@@ -62,6 +63,7 @@ public class RiskRuleServiceImpl implements RiskRuleService {
// 存七牛云 + 本地缓存
String storagePath = String.format("rules/%s/v%d.json", siteType, nextVer);
storageService.store(storagePath, json);
versionService.increment();
log.info("风险规则已保存: siteType={}, version={}, path={}", siteType, nextVer, storagePath);
} catch (Exception e) {
log.error("保存风险规则失败 siteType={}", siteType, e);

View File

@@ -16,6 +16,7 @@ import java.util.*;
@RequiredArgsConstructor
public class SitePagesServiceImpl implements SitePagesService {
private final ManifestVersionService versionService;
private final SitePagesMapper mapper;
private final com.par.core.storage.CachedStorageService storageService;
private static final ObjectMapper om = new ObjectMapper();
@@ -69,6 +70,7 @@ public class SitePagesServiceImpl implements SitePagesService {
// 存七牛云 + 本地缓存
String storagePath = String.format("pages/%s/v%s.json", siteId, version);
storageService.store(storagePath, json);
versionService.increment();
log.info("页面配置已保存: siteId={}, version={}, path={}", siteId, version, storagePath);
} catch (Exception e) {
log.error("保存页面配置失败 siteId={}", siteId, e);

View File

@@ -29,6 +29,7 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class SiteServiceImpl implements SiteService {
private final ManifestVersionService versionService;
private final SiteMapper siteMapper;
private final SiteChangeMapper changeMapper;
private final SiteConfigMapper siteConfigMapper;
@@ -231,6 +232,7 @@ public class SiteServiceImpl implements SiteService {
try { site.setStatus(SiteStatus.fromValue(status)); } catch (Exception ignored) {}
}
siteMapper.updateById(site);
versionService.increment();
log.info("站点编辑: siteId={}", siteId);
return site;
}