From a8e9119a0c714213f67146941cfff522cb4129ca Mon Sep 17 00:00:00 2001 From: From-wh Date: Mon, 26 Oct 2026 16:13:00 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E7=A7=BB=E5=8A=A8=E7=AB=AF=E5=8F=91?= =?UTF-8?q?=E7=A5=A8):=20=E5=BC=80=E7=A5=A8=E8=AF=A6=E6=83=85=E5=95=86?= =?UTF-8?q?=E5=93=81=E5=9B=BE=E7=89=87=E4=B8=8E=E9=87=91=E9=A2=9D=E4=B8=8D?= =?UTF-8?q?=E5=9B=9E=E6=98=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit buildLegacyCartInfo 合成旧版 cartInfo 时 attrInfo 只带了 suk, 且 productInfo 缺 price 字段;移动端 orderGoods 组件在 attrInfo 存在时取 attrInfo.image/attrInfo.price 展示图片与规格价、单价取 productInfo.price,字段缺失导致图片与金额空白。 补齐 attrInfo.image/price(规格缺省回退商品主图/商品价)与 productInfo.price,开票列表与开票详情两处消费方同时修复 --- .../app/services/order/OrderInvoiceServices.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/backend/app/services/order/OrderInvoiceServices.php b/backend/app/services/order/OrderInvoiceServices.php index f47ae2710..06be7a44d 100644 --- a/backend/app/services/order/OrderInvoiceServices.php +++ b/backend/app/services/order/OrderInvoiceServices.php @@ -155,6 +155,11 @@ class OrderInvoiceServices extends BaseService /** * 由订单中台商品快照合成旧版 cartInfo 结构(兼容移动端旧组件) + * + * 移动端 orderGoods 组件按旧版结构取值:attrInfo 存在时图片/规格价取 + * attrInfo.image / attrInfo.price,商品单价取 productInfo.price, + * 三者缺一会导致商品图片或金额不回显。 + * * @param array $extra 解析后的 extra_info * @return array */ @@ -162,13 +167,22 @@ class OrderInvoiceServices extends BaseService { $cartInfo = []; foreach ($extra['items'] ?? [] as $product) { + $attrInfo = is_array($product['attr_info'] ?? null) ? $product['attr_info'] : []; + // 规格图优先,缺省回退商品主图;规格价优先,缺省回退商品价 + $image = $attrInfo['image'] ?? ($product['image'] ?? ''); + $price = $attrInfo['price'] ?? ($product['price'] ?? 0); $cartInfo[] = [ 'cart_num' => $product['cart_num'] ?? 1, 'truePrice' => $product['true_price'] ?? 0, 'productInfo' => [ 'image' => $product['image'] ?? '', 'store_name' => $product['store_name'] ?? '', - 'attrInfo' => ['suk' => $product['attr_info']['suk'] ?? ($product['sku'] ?? '')], + 'price' => $price, + 'attrInfo' => array_merge($attrInfo, [ + 'suk' => $attrInfo['suk'] ?? ($product['sku'] ?? ''), + 'image' => $image, + 'price' => $price, + ]), ], ]; }