feat: 站点提交/返回统一支持多名称多地址数组
- POST /sites/{id}/submit: names[]/urls[] 数组,兼容旧 name/baseUrl 单值
- 已有站点合并新名称/地址(去重+前置)
- 站点列表返回 names[]/urls[]
- API 文档和代码示例同步更新
This commit is contained in:
@@ -66,8 +66,8 @@ public class SiteController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交站点收录(需 HMAC 鉴权)
|
||||
* 创建或更新站点信息,自动设置为活跃状态
|
||||
* 提交站点收录(需 PSK 鉴权)
|
||||
* 支持 names[]/urls[] 数组或 name/baseUrl 单值(向后兼容)
|
||||
*/
|
||||
@PostMapping("/{siteId}/submit")
|
||||
public ApiResponse<SiteDTO> submitSite(
|
||||
@@ -75,22 +75,31 @@ public class SiteController {
|
||||
@RequestBody Map<String, Object> payload,
|
||||
HttpServletRequest request) {
|
||||
|
||||
String name = (String) payload.get("name");
|
||||
@SuppressWarnings("unchecked")
|
||||
List<String> names = (List<String>) payload.get("names");
|
||||
@SuppressWarnings("unchecked")
|
||||
List<String> urls = (List<String>) payload.get("urls");
|
||||
// 向后兼容单值
|
||||
if ((names == null || names.isEmpty()) && payload.containsKey("name")) {
|
||||
names = List.of((String) payload.get("name"));
|
||||
}
|
||||
if ((urls == null || urls.isEmpty()) && payload.containsKey("baseUrl")) {
|
||||
urls = List.of((String) payload.get("baseUrl"));
|
||||
}
|
||||
|
||||
if (names == null || names.isEmpty()) {
|
||||
return ApiResponse.error(400, "names or name is required");
|
||||
}
|
||||
if (urls == null || urls.isEmpty()) {
|
||||
return ApiResponse.error(400, "urls or baseUrl is required");
|
||||
}
|
||||
|
||||
String description = (String) payload.get("description");
|
||||
String baseUrl = (String) payload.get("baseUrl");
|
||||
String iconUrl = (String) payload.get("iconUrl");
|
||||
String siteType = (String) payload.get("siteType");
|
||||
|
||||
if (name == null || name.isBlank()) {
|
||||
return ApiResponse.error(400, "name is required");
|
||||
}
|
||||
if (baseUrl == null || baseUrl.isBlank()) {
|
||||
return ApiResponse.error(400, "baseUrl is required");
|
||||
}
|
||||
|
||||
Long submitterId = (Long) request.getAttribute("accountId");
|
||||
|
||||
Site site = siteService.submitSite(siteId, name, description, baseUrl, iconUrl, siteType, submitterId);
|
||||
Site site = siteService.submitSite(siteId, names, urls, description, iconUrl, siteType, submitterId);
|
||||
return ApiResponse.success(siteService.toDTO(site));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user