From 4611bfed1828953bbec5c140afe71be3f74c3f9d Mon Sep 17 00:00:00 2001 From: Agent Date: Mon, 30 Mar 2026 13:22:06 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=A7=8D=E7=B1=BB?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E4=BF=9D=E5=AD=98=E6=97=B6List=E6=97=A0?= =?UTF-8?q?=E6=B3=9B=E5=9E=8B=E5=AF=BC=E8=87=B4MyBatis=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ProductController.java | 5 ++-- .../service/CategoryAttributeService.java | 3 +- .../impl/CategoryAttributeServiceImpl.java | 28 +++++++++++++++---- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/example/building/controller/ProductController.java b/src/main/java/com/example/building/controller/ProductController.java index 3a36f4d..c308725 100644 --- a/src/main/java/com/example/building/controller/ProductController.java +++ b/src/main/java/com/example/building/controller/ProductController.java @@ -11,7 +11,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; -import java.util.Map; /** * 商品控制器 @@ -156,12 +155,12 @@ public class ProductController { @PostMapping("/categories/{categoryId}/attributes") public Result saveCategoryAttributes( @PathVariable String categoryId, - @RequestBody List attributes, + @RequestBody List> attrs, @RequestHeader(value = "X-User-Role", required = false) String role) { if (!"admin".equals(role)) { return Result.error("只有管理员可以操作"); } - categoryAttributeService.saveAttributes(categoryId, attributes); + categoryAttributeService.saveAttributes(categoryId, attrs); return Result.success(); } diff --git a/src/main/java/com/example/building/service/CategoryAttributeService.java b/src/main/java/com/example/building/service/CategoryAttributeService.java index e4b6765..7237ad3 100644 --- a/src/main/java/com/example/building/service/CategoryAttributeService.java +++ b/src/main/java/com/example/building/service/CategoryAttributeService.java @@ -2,6 +2,7 @@ package com.example.building.service; import com.example.building.entity.CategoryAttribute; import java.util.List; +import java.util.Map; /** * 种类属性服务接口 @@ -16,7 +17,7 @@ public interface CategoryAttributeService { /** * 保存属性 */ - void saveAttributes(String categoryId, List attrs); + void saveAttributes(String categoryId, List> attrs); /** * 删除种类的所有属性 diff --git a/src/main/java/com/example/building/service/impl/CategoryAttributeServiceImpl.java b/src/main/java/com/example/building/service/impl/CategoryAttributeServiceImpl.java index 4d8fed3..09f8094 100644 --- a/src/main/java/com/example/building/service/impl/CategoryAttributeServiceImpl.java +++ b/src/main/java/com/example/building/service/impl/CategoryAttributeServiceImpl.java @@ -8,7 +8,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.UUID; /** @@ -29,13 +31,10 @@ public class CategoryAttributeServiceImpl implements CategoryAttributeService { @Override @Transactional - public void saveAttributes(String categoryId, List attrs) { + public void saveAttributes(String categoryId, List> attrs) { System.out.println("=== saveAttributes called ==="); System.out.println("categoryId: " + categoryId); System.out.println("attrs size: " + (attrs != null ? attrs.size() : 0)); - if (attrs != null) { - attrs.forEach(a -> System.out.println(" attr: " + a.getName() + ", type=" + a.getAttrType() + ", unit=" + a.getUnit())); - } // 删除旧属性 categoryAttributeMapper.delete(new LambdaQueryWrapper() @@ -44,10 +43,29 @@ public class CategoryAttributeServiceImpl implements CategoryAttributeService { // 保存新属性 if (attrs != null && !attrs.isEmpty()) { for (int i = 0; i < attrs.size(); i++) { - CategoryAttribute attr = attrs.get(i); + Map attrMap = attrs.get(i); + CategoryAttribute attr = new CategoryAttribute(); attr.setAttrId(UUID.randomUUID().toString()); attr.setCategoryId(categoryId); attr.setSortOrder(i); + + if (attrMap.get("name") != null) { + attr.setName(attrMap.get("name").toString()); + } + if (attrMap.get("attrType") != null) { + attr.setAttrType(attrMap.get("attrType").toString()); + } + if (attrMap.get("unit") != null) { + attr.setUnit(attrMap.get("unit").toString()); + } + if (attrMap.get("required") != null) { + attr.setRequired((Boolean) attrMap.get("required")); + } + if (attrMap.get("formula") != null) { + attr.setFormula(attrMap.get("formula").toString()); + } + + System.out.println(" attr: " + attr.getName() + ", type=" + attr.getAttrType() + ", unit=" + attr.getUnit()); categoryAttributeMapper.insert(attr); } }