refactor(order): 优化订单商品数据显示逻辑
- 将订单模型中的 orderGoods 类型从 OrderGoods 改为 ShopOrderGoods - 移除 OrderWithGoods 接口定义和 normalizeOrderGoodsList 函数 - 直接使用订单分页接口返回的 orderGoods 字段渲染商品信息 - 添加 utils/orderGoods.ts 工具函数处理订单商品数据标准化 - 在骑手端订单页面实现商品名称汇总显示功能 - 优化再次购买和支付功能中的商品数据获取逻辑
This commit is contained in:
32
src/utils/orderGoods.ts
Normal file
32
src/utils/orderGoods.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import type { ShopOrderGoods } from '@/api/shop/shopOrderGoods/model';
|
||||
|
||||
/**
|
||||
* Normalize order goods data returned by the order/page API.
|
||||
*
|
||||
* In practice different backends may return different field names (orderGoods/orderGoodsList/goodsList...),
|
||||
* and the item fields can also differ (goodsName/title/name, totalNum/quantity, etc.).
|
||||
*
|
||||
* We normalize them to ShopOrderGoods so list pages can render without doing N+1 requests per order.
|
||||
*/
|
||||
export const normalizeOrderGoodsList = (order: any): ShopOrderGoods[] => {
|
||||
const raw =
|
||||
order?.orderGoods ||
|
||||
order?.orderGoodsList ||
|
||||
order?.goodsList ||
|
||||
order?.goods ||
|
||||
[];
|
||||
if (!Array.isArray(raw)) return [];
|
||||
|
||||
return raw.map((g: any) => ({
|
||||
...g,
|
||||
goodsId: g?.goodsId ?? g?.itemId ?? g?.goods_id,
|
||||
skuId: g?.skuId ?? g?.sku_id,
|
||||
// When the API returns minimal fields, fall back to order title to avoid blank names.
|
||||
goodsName: g?.goodsName ?? g?.goodsTitle ?? g?.title ?? g?.name ?? order?.title ?? '商品',
|
||||
image: g?.image ?? g?.goodsImage ?? g?.cover ?? g?.pic,
|
||||
spec: g?.spec ?? g?.specInfo ?? g?.spec_name,
|
||||
totalNum: g?.totalNum ?? g?.quantity ?? g?.num ?? g?.count,
|
||||
price: g?.price ?? g?.payPrice ?? g?.goodsPrice ?? g?.unitPrice
|
||||
}));
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user