feat: 站点提交/返回统一支持多名称多地址数组
- POST /sites/{id}/submit: names[]/urls[] 数组,兼容旧 name/baseUrl 单值
- 已有站点合并新名称/地址(去重+前置)
- 站点列表返回 names[]/urls[]
- API 文档和代码示例同步更新
This commit is contained in:
@@ -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);
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user