From eee00fd63f558cfa0caf737c868de8fc0c652fcd Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期一, 07 九月 2026 10:39:30 +0800
Subject: [PATCH] 修复对比字段模板结构与权限边界
---
ruoyi-admin/src/main/java/com/battery/business/web/CompareReportController.java | 26 +++++++++++++++++---------
1 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/battery/business/web/CompareReportController.java b/ruoyi-admin/src/main/java/com/battery/business/web/CompareReportController.java
index 11d5462..755e479 100644
--- a/ruoyi-admin/src/main/java/com/battery/business/web/CompareReportController.java
+++ b/ruoyi-admin/src/main/java/com/battery/business/web/CompareReportController.java
@@ -5,9 +5,10 @@
import com.battery.business.report.CompareReportRequest;
import com.battery.business.report.CompareReportEditRequest;
import com.battery.business.report.CompareFieldTemplateRepository;
+import com.battery.business.report.CompareFieldTemplateRequest;
+import com.battery.business.report.CompareFieldTemplateService;
import jakarta.validation.Valid;
import java.util.List;
-import java.util.Map;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -16,6 +17,7 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
@@ -27,23 +29,29 @@
private final CompareReportRepository reports;
private final CompareReportService service;
private final CompareFieldTemplateRepository templates;
- public CompareReportController(CompareReportRepository reports, CompareReportService service, CompareFieldTemplateRepository templates)
- { this.reports = reports; this.service = service; this.templates = templates; }
+ private final CompareFieldTemplateService templateService;
+ public CompareReportController(CompareReportRepository reports, CompareReportService service, CompareFieldTemplateRepository templates, CompareFieldTemplateService templateService)
+ { this.reports = reports; this.service = service; this.templates = templates; this.templateService = templateService; }
- @PreAuthorize("@ss.hasPermi('system:compare-report:query')")
+ /** 查看或编写报表均可读取模板,不额外要求测试或共享字段管理权限。 */
+ @PreAuthorize("@ss.hasAnyPermi('system:compare-report:query,system:compare-report:add,system:compare-report:edit')")
@GetMapping("/templates")
public AjaxResult templates() { return success(templates.list()); }
+ /** 模板新增复用报表新增权限;只接收经过验证的字段结构。 */
@PreAuthorize("@ss.hasPermi('system:compare-report:add')")
@PostMapping("/templates")
- public AjaxResult createTemplate(@RequestBody Map<String, Object> body)
+ public AjaxResult createTemplate(@Valid @RequestBody CompareFieldTemplateRequest request)
{
- String name = String.valueOf(body.getOrDefault("name", "")).trim();
- Object fields = body.get("fields");
- if (name.isBlank() || !(fields instanceof List<?> list) || list.isEmpty() || list.size() > 100) throw new com.ruoyi.common.exception.ServiceException("模板名称和字段不能为空");
- return success().put("id", templates.insert(name, (List<Map<String,Object>>) (List<?>) list, getUserId(), getUsername()));
+ return success().put("id", templateService.create(request, getUserId(), getUsername()));
}
+ /** 模板更新复用报表编辑权限,允许跨创建人协作。 */
+ @PreAuthorize("@ss.hasPermi('system:compare-report:edit')")
+ @PutMapping("/templates/{id}")
+ public AjaxResult updateTemplate(@PathVariable long id, @Valid @RequestBody CompareFieldTemplateRequest request)
+ { templateService.update(id, request); return success(); }
+
/** 查询报表摘要;筛选与分页沿用现有列表交互。 */
@PreAuthorize("@ss.hasPermi('system:compare-report:query')")
@GetMapping("/list")
--
Gitblit v1.7.1