Browse Source

fix: 修复NEW-01/02/03运行时API错误

- NEW-01: AdminEnergyRuleController.create() 改为Map参数,映射energyValue→amount字段
- NEW-02: ProductSkuController.listByProduct() 添加productId空值校验防止NPE
- NEW-03: ActivityController.publish() 包装try-catch,返回Result.error()而非500

Ultraworked with Sisyphus

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Xiaogang Liao 2 months ago
parent
commit
c0afe7e

+ 5 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/ActivityController.java

@@ -43,7 +43,11 @@ public class ActivityController {
     public Result<String> publish(@RequestBody Map<String, Object> params) {
         Long id = params.get("id") != null ? Long.valueOf(params.get("id").toString()) : null;
         if (id == null) return Result.error("id不能为空");
-        return activityService.publish(id);
+        try {
+            return activityService.publish(id);
+        } catch (Exception e) {
+            return Result.error("发布失败: " + e.getMessage());
+        }
     }
 
     @PostMapping("/end")

+ 20 - 2
cfc-backend/src/main/java/com/etotem/cfc/controller/admin/AdminEnergyRuleController.java

@@ -26,10 +26,28 @@ public class AdminEnergyRuleController {
     }
 
     @PostMapping("/create")
-    public Result<Void> create(@RequestBody EnergyRule rule) {
+    public Result<Void> create(@RequestBody Map<String, Object> params) {
+        EnergyRule rule = new EnergyRule();
+        rule.setRuleName((String) params.get("ruleName"));
+        rule.setEventType((String) params.get("eventType"));
+        rule.setDimensionCode((String) params.get("dimensionCode"));
+        Object energyValue = params.get("energyValue");
+        if (energyValue instanceof Number) {
+            rule.setAmount(((Number) energyValue).intValue());
+        } else if (energyValue != null) {
+            rule.setAmount(Integer.valueOf(energyValue.toString()));
+        }
+        String action = (String) params.get("action");
+        rule.setAction(action != null ? action : "increase");
+        Object ruleCode = params.get("ruleCode");
+        if (ruleCode != null) rule.setRuleCode(ruleCode.toString());
+        Object priority = params.get("priority");
+        if (priority instanceof Number) rule.setPriority(((Number) priority).intValue());
+        Object status = params.get("status");
+        rule.setStatus(status instanceof Number ? ((Number) status).intValue() : 1);
+        rule.setDescription((String) params.get("description"));
         rule.setCreatedAt(LocalDateTime.now());
         rule.setUpdatedAt(LocalDateTime.now());
-        if (rule.getStatus() == null) rule.setStatus(1);
         energyRuleMapper.insert(rule);
         return Result.success(null);
     }

+ 3 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/admin/ProductSkuController.java

@@ -24,7 +24,9 @@ public class ProductSkuController {
 
     @PostMapping("/list")
     public Result<List<ProductSkuDTO>> listByProduct(@RequestBody Map<String, Object> params) {
-        Long productId = Long.parseLong(params.get("productId").toString());
+        Object productIdObj = params.get("productId");
+        if (productIdObj == null) return Result.error("productId不能为空");
+        Long productId = Long.parseLong(productIdObj.toString());
         List<ProductSku> skus = skuService.listByProductId(productId);
         List<ProductSkuDTO> dtos = skus.stream()
             .map(ProductSkuDTO::from)