feat: 站点提交/返回统一支持多名称多地址数组

- POST /sites/{id}/submit: names[]/urls[] 数组,兼容旧 name/baseUrl 单值
- 已有站点合并新名称/地址(去重+前置)
- 站点列表返回 names[]/urls[]
- API 文档和代码示例同步更新
This commit is contained in:
mediabot-pt
2026-06-30 13:47:56 +08:00
parent 28e6c2882f
commit 04f4af1f2c
4 changed files with 51 additions and 37 deletions

View File

@@ -29,7 +29,7 @@ public interface SiteService {
/**
* 提交站点信息(创建 pending,更新保持原状态)
*/
Site submitSite(String siteId, String name, String description, String baseUrl,
Site submitSite(String siteId, List<String> names, List<String> urls, String description,
String iconUrl, String siteType, Long submitterId);
/**

View File

@@ -90,18 +90,22 @@ public class SiteServiceImpl implements SiteService {
}
@Override
public Site submitSite(String siteId, String name, String description, String baseUrl,
String iconUrl, String siteType, Long submitterId) {
public Site submitSite(String siteId, List<String> names, List<String> urls,
String description, String iconUrl, String siteType, Long submitterId) {
Site existing = siteMapper.selectBySiteId(siteId);
if (existing != null) {
if (name != null && !name.isBlank()) {
List<String> names = fromJsonArray(existing.getNamesJson());
if (!names.contains(name)) { names.add(0, name); existing.setNamesJson(toJsonArray(names)); }
// 合并名称:新名称置前,去重
List<String> existingNames = fromJsonArray(existing.getNamesJson());
for (String n : names) {
if (n != null && !n.isBlank() && !existingNames.contains(n)) existingNames.add(0, n);
}
if (baseUrl != null && !baseUrl.isBlank()) {
List<String> urls = fromJsonArray(existing.getUrlsJson());
if (!urls.contains(baseUrl)) { urls.add(0, baseUrl); existing.setUrlsJson(toJsonArray(urls)); }
existing.setNamesJson(toJsonArray(existingNames));
// 合并地址
List<String> existingUrls = fromJsonArray(existing.getUrlsJson());
for (String u : urls) {
if (u != null && !u.isBlank() && !existingUrls.contains(u)) existingUrls.add(0, u);
}
existing.setUrlsJson(toJsonArray(existingUrls));
if (description != null) existing.setDescription(description);
if (iconUrl != null) existing.setIconUrl(iconUrl);
if (siteType != null) existing.setSiteType(SiteType.fromValue(siteType));
@@ -111,8 +115,8 @@ public class SiteServiceImpl implements SiteService {
Site site = new Site();
site.setSiteId(siteId);
site.setNamesJson(toJsonArray(name != null ? List.of(name) : List.of()));
site.setUrlsJson(toJsonArray(baseUrl != null ? List.of(baseUrl) : List.of()));
site.setNamesJson(toJsonArray(names.stream().filter(n -> n != null && !n.isBlank()).toList()));
site.setUrlsJson(toJsonArray(urls.stream().filter(u -> u != null && !u.isBlank()).toList()));
site.setDescription(description);
site.setIconUrl(iconUrl);
site.setSiteType(siteType != null ? SiteType.fromValue(siteType) : SiteType.UNKNOWN);