Переглянути джерело

toggle endpoint: support explicit is_active parameter

liuchengsen 3 тижнів тому
батько
коміт
bde5ec17ef

+ 4 - 2
backend-java/src/main/java/com/pharmacopoeia/controller/AdminKnowledgeController.java

@@ -334,8 +334,10 @@ public class AdminKnowledgeController {
     }
 
     @PatchMapping("/brand-recommend-rules/{id}/toggle")
-    public ResponseEntity<Map<String, Object>> toggleBrandRecommendRule(@PathVariable int id) {
-        return ResponseEntity.ok(brandRecommendService.toggleRule(id));
+    public ResponseEntity<Map<String, Object>> toggleBrandRecommendRule(@PathVariable int id,
+                                                                        @RequestBody(required = false) Map<String, Boolean> body) {
+        Boolean isActive = body != null ? body.get("is_active") : null;
+        return ResponseEntity.ok(brandRecommendService.toggleRule(id, isActive));
     }
 
     @PostMapping("/brand-recommend-rules/import")

+ 5 - 4
backend-java/src/main/java/com/pharmacopoeia/service/BrandRecommendService.java

@@ -314,14 +314,15 @@ public class BrandRecommendService {
     }
 
     @Transactional
-    public Map<String, Object> toggleRule(int id) {
+    public Map<String, Object> toggleRule(int id, Boolean isActive) {
         var opt = ruleRepository.findById(id);
         if (opt.isEmpty()) return Map.of("ok", false, "message", "未找到该规则");
         BrandRecommendRule rule = opt.get();
-        rule.setIsActive(!Boolean.TRUE.equals(rule.getIsActive()));
+        boolean newState = isActive != null ? isActive : !Boolean.TRUE.equals(rule.getIsActive());
+        rule.setIsActive(newState);
         ruleRepository.save(rule);
-        return Map.of("ok", true, "id", id, "is_active", rule.getIsActive(),
-                "message", Boolean.TRUE.equals(rule.getIsActive()) ? "已启用" : "已停用");
+        return Map.of("ok", true, "id", id, "is_active", newState,
+                "message", newState ? "已启用" : "已停用");
     }
 
     // ==================== CSV 导入导出 ====================