From ec37369bc2ffd7abd17063db4d38781369c88502 Mon Sep 17 00:00:00 2001 From: mediabot-pt <295750538+mediabot-pt@users.noreply.github.com> Date: Tue, 7 Jul 2026 17:57:20 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=90=88=E5=B9=B6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E5=88=B0=E4=BF=9D=E5=AD=98=E6=8C=89=E9=92=AE=EF=BC=8C?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E4=B8=8A=E4=BC=A0=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 后端 saveRules/saveDefaultRules 接口直接包含 CDN 上传逻辑 2. 移除独立的 /upload 端点(风险规则 + 默认规则) 3. 前端去掉上传按钮和 uploadRules 函数 4. 现在只需保存→发布正式版两步即可完成 --- .../api/controller/RiskRuleController.java | 26 +++---------------- web/src/views/RiskRules.vue | 12 +-------- 2 files changed, 4 insertions(+), 34 deletions(-) diff --git a/par-api/src/main/java/com/par/api/controller/RiskRuleController.java b/par-api/src/main/java/com/par/api/controller/RiskRuleController.java index 449f263..c28f4bf 100644 --- a/par-api/src/main/java/com/par/api/controller/RiskRuleController.java +++ b/par-api/src/main/java/com/par/api/controller/RiskRuleController.java @@ -44,6 +44,7 @@ public class RiskRuleController { return ResponseEntity.status(304).build(); } + /** 保存风险规则(写DB + 生成快照 + 上传CDN) */ @PostMapping("/api/v1/risk-rules/{siteType}") public ApiResponse saveRules(@PathVariable String siteType, @RequestBody Map payload) { @@ -51,17 +52,6 @@ public class RiskRuleController { var rules = (List>) payload.get("rules"); if (rules == null || rules.isEmpty()) return ApiResponse.error(400, "rules is required"); riskRuleService.saveRules(siteType, rules); - return ApiResponse.success(); - } - - /** 发布风险规则到云存储 */ - @PostMapping("/api/v1/risk-rules/{siteType}/upload") - public ApiResponse uploadRules(@PathVariable String siteType, - @RequestBody Map payload) { - @SuppressWarnings("unchecked") - var rules = (List>) payload.get("rules"); - if (rules == null || rules.isEmpty()) return ApiResponse.error(400, "rules is required"); - riskRuleService.saveRules(siteType, rules); try { storageService.store("rules/" + siteType + ".json", new com.fasterxml.jackson.databind.ObjectMapper().writeValueAsString(rules)); } catch (Exception ignored) {} return ApiResponse.success(); @@ -118,18 +108,8 @@ public class RiskRuleController { checkAdmin(request); @SuppressWarnings("unchecked") var rules = (List>) payload.get("rules"); - riskRuleService.saveRules("default:" + type, rules != null ? rules : List.of()); - return ApiResponse.success(); - } - - /** 发布默认风险规则到云存储 */ - @PostMapping("/api/v1/admin/default-rules/{type}/upload") - public ApiResponse uploadDefaultRules( - @PathVariable String type, @RequestBody Map payload, HttpServletRequest request) { - checkAdmin(request); - @SuppressWarnings("unchecked") - var rules = (List>) payload.get("rules"); - riskRuleService.saveRules("default:" + type, rules != null ? rules : List.of()); + if (rules == null) rules = List.of(); + riskRuleService.saveRules("default:" + type, rules); try { storageService.store("rules/default/" + type + ".json", new com.fasterxml.jackson.databind.ObjectMapper().writeValueAsString(rules)); } catch (Exception ignored) {} return ApiResponse.success(); diff --git a/web/src/views/RiskRules.vue b/web/src/views/RiskRules.vue index 3d0357a..e068759 100644 --- a/web/src/views/RiskRules.vue +++ b/web/src/views/RiskRules.vue @@ -42,7 +42,6 @@
保存 重置 - 上传 发布正式版 丢弃预览版 返回列表 @@ -280,7 +279,7 @@ const presets = [ ] // ============ 状态 ============ -const loading = ref(false), saving = ref(false), uploading = ref(false), savingPreview = ref(false), publishing = ref(false), discardingDraft = ref(false) +const loading = ref(false), saving = ref(false), savingPreview = ref(false), publishing = ref(false), discardingDraft = ref(false) const sites = ref([]), rulesMap = ref({}) const editType = ref(''), editorJson = ref('[]'), originalJson = ref('') const snapshotStatus = ref(null) @@ -492,15 +491,6 @@ const saveRules = async () => { finally { saving.value = false } } -const uploadRules = async () => { - uploading.value = true - try { - await api.raw.post('/risk-rules/'+editType.value+'/upload', { rules: parsed.value }) - ElMessage.success('已上传') - fetchSnapshotStatus() - } catch { ElMessage.error('上传失败') } - finally { uploading.value = false } -} onMounted(fetchAll)