feat: 默认脚本编辑弹窗+后端读写default脚本接口

This commit is contained in:
mediabot-pt
2026-07-05 12:41:37 +08:00
parent 79dfd60348
commit 692b1bd863
4 changed files with 109 additions and 2 deletions

View File

@@ -65,6 +65,34 @@ public class ScriptController {
return ApiResponse.success(Map.of("version", v));
}
/** 获取站点类型默认脚本(管理员) */
@GetMapping("/api/v1/admin/scripts/default/{siteType}")
public ApiResponse<Map<String, String>> getDefaultScript(@PathVariable String siteType, HttpServletRequest request) {
checkAdmin(request);
String script = GroovyScriptEngine.loadDefaultByType(siteType);
return ApiResponse.success(Map.of("siteType", siteType, "script", script != null ? script : ""));
}
/** 保存站点类型默认脚本(管理员) */
@PutMapping("/api/v1/admin/scripts/default/{siteType}")
public ApiResponse<Void> saveDefaultScript(
@PathVariable String siteType,
@RequestBody Map<String, String> payload,
HttpServletRequest request) {
checkAdmin(request);
String script = payload.get("script");
if (script == null || script.isBlank()) return ApiResponse.error(400, "script is required");
GroovyScriptEngine.saveDefaultScript(siteType, script);
return ApiResponse.success();
}
private void checkAdmin(HttpServletRequest request) {
var level = request.getAttribute("trustLevel");
if (level == null || !"ADMIN".equals(level.toString())) {
throw new IllegalArgumentException("Admin permission required");
}
}
/** 上传 Groovy 脚本(PSK 签名认证) */
@PutMapping("/api/v1/scripts/{siteId}")
public ApiResponse<?> uploadScript(