Przeglądaj źródła

feat(backend): 购物车/下单 linked SKU 转发到关联商品

asus 1 miesiąc temu
rodzic
commit
2349940fd2

+ 17 - 4
cfc-backend/src/main/java/com/etotem/cfc/service/CartService.java

@@ -152,10 +152,22 @@ public class CartService {
         if (cart.getSkuId() != null) {
             ProductSku sku = productSkuService.getById(cart.getSkuId());
             if (sku != null) {
-                if (sku.getPrice() != null) {
-                    dto.setUnitPrice(sku.getPrice());
-                }
-                if (sku.getSpecs() != null) {
+                // Linked SKU: 转发到关联商品
+                if (sku.getLinkedProductId() != null) {
+                    Product linkedProduct = productMapper.selectById(sku.getLinkedProductId());
+                    if (linkedProduct != null) {
+                        dto.setProductId(linkedProduct.getId());
+                        dto.setProductName(linkedProduct.getName());
+                        dto.setCoverImage(linkedProduct.getCoverImage());
+                        dto.setUnitPrice(linkedProduct.getPrice() != null ? linkedProduct.getPrice() : 0);
+                        dto.setSupplierName(linkedProduct.getVendorName());
+                    }
+                } else {
+                    // Legacy SKU: 用 SKU 价格覆盖
+                    if (sku.getPrice() != null) {
+                        dto.setUnitPrice(sku.getPrice());
+                    }
+                    if (sku.getSpecs() != null) {
                 try {
                     String specsStr = sku.getSpecs().toString().trim();
                     StringBuilder specDesc = new StringBuilder();
@@ -188,6 +200,7 @@ public class CartService {
                     log.warn("解析SKU specs失败: skuId={}", cart.getSkuId(), e);
                 }
                 }
+                } // end else (Legacy SKU)
             }
         }
         return dto;

+ 15 - 5
cfc-backend/src/main/java/com/etotem/cfc/service/ProductOrderService.java

@@ -457,11 +457,21 @@ public class ProductOrderService {
             if (item.getSkuId() != null) {
                 ProductSku sku = productSkuService.getById(item.getSkuId());
                 if (sku != null) {
-                    if (sku.getMinQuantity() != null && item.getQuantity() < sku.getMinQuantity()) {
-                        return Result.error(product.getName() + " 该规格最低需购买" + sku.getMinQuantity() + "件");
-                    }
-                    if (sku.getPrice() != null) {
-                        unitPrice = sku.getPrice();
+                    // Linked SKU: 转发到关联商品
+                    if (sku.getLinkedProductId() != null) {
+                        Product linkedProduct = productMapper.selectById(sku.getLinkedProductId());
+                        if (linkedProduct != null) {
+                            product = linkedProduct;
+                            unitPrice = linkedProduct.getPrice() != null ? linkedProduct.getPrice() : 0;
+                        }
+                    } else {
+                        // Legacy SKU: 用 SKU 价格
+                        if (sku.getMinQuantity() != null && item.getQuantity() < sku.getMinQuantity()) {
+                            return Result.error(product.getName() + " 该规格最低需购买" + sku.getMinQuantity() + "件");
+                        }
+                        if (sku.getPrice() != null) {
+                            unitPrice = sku.getPrice();
+                        }
                     }
                 }
             }