From dea40268fee7a1939e67dcad1c1a2ac4ea1d30b6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com>
Date: Sun, 1 Feb 2026 11:51:28 +0800
Subject: [PATCH] =?UTF-8?q?refactor(order):=20=E4=BC=98=E5=8C=96=E8=AE=A2?=
=?UTF-8?q?=E5=8D=95=E5=88=97=E8=A1=A8=E6=80=A7=E8=83=BD=E5=B9=B6=E7=A7=BB?=
=?UTF-8?q?=E9=99=A4=E5=86=97=E4=BD=99=E6=8E=A8=E8=8D=90=E4=BA=BA=E4=BF=A1?=
=?UTF-8?q?=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 移除经销商页面中的推荐人显示信息
- 将订单商品详情从单独接口请求改为直接从分页接口获取,避免N+1查询问题
- 添加normalizeOrderGoodsList函数实现订单商品数据结构标准化
- 统一门店名称文字颜色样式为灰色
- 简化支付工具类中的重复API端点调用
---
src/dealer/index.tsx | 2 +-
src/store/index.tsx | 2 +-
src/store/orders/index.tsx | 2 +-
src/user/order/components/OrderList.tsx | 54 +++++++++++++------------
src/utils/payment.ts | 5 +--
5 files changed, 34 insertions(+), 31 deletions(-)
diff --git a/src/dealer/index.tsx b/src/dealer/index.tsx
index 2c9d6a0..bdf8b3e 100644
--- a/src/dealer/index.tsx
+++ b/src/dealer/index.tsx
@@ -108,7 +108,7 @@ const DealerIndex: React.FC = () => {
- ID: {dealerUser.userId} | 推荐人: {dealerUser.refereeId || '无'}
+ ID: {dealerUser.userId}
diff --git a/src/store/index.tsx b/src/store/index.tsx
index 8852533..37ef85a 100644
--- a/src/store/index.tsx
+++ b/src/store/index.tsx
@@ -181,7 +181,7 @@ const StoreIndex: React.FC = () => {
{/* 门店信息 */}
- 当前门店
+ 当前门店
Taro.switchTab({url: '/pages/index/index'})}
diff --git a/src/store/orders/index.tsx b/src/store/orders/index.tsx
index 2127715..bcd5e8f 100644
--- a/src/store/orders/index.tsx
+++ b/src/store/orders/index.tsx
@@ -51,7 +51,7 @@ export default function StoreOrders() {
- 当前门店:
+ 当前门店:
{boundStoreId
? (selectedStore?.id === boundStoreId ? (selectedStore?.name || `门店ID: ${boundStoreId}`) : `门店ID: ${boundStoreId}`)
diff --git a/src/user/order/components/OrderList.tsx b/src/user/order/components/OrderList.tsx
index 8e87747..7aff881 100644
--- a/src/user/order/components/OrderList.tsx
+++ b/src/user/order/components/OrderList.tsx
@@ -84,6 +84,30 @@ interface OrderWithGoods extends ShopOrder {
orderGoodsList?: ShopOrderGoods[];
}
+// 后端订单分页接口通常已返回 orderGoods(订单商品明细)。
+// 这里把各种可能的字段名做一次归一化,避免再为每个订单额外请求一次“订单商品”接口。
+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,
+ // 当接口只返回了最小字段时,用订单标题兜底,避免列表出现空白商品名
+ 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
+ }));
+};
+
interface OrderListProps {
onReload?: () => void;
searchParams?: ShopOrderParam;
@@ -230,31 +254,11 @@ function OrderList(props: OrderListProps) {
const res = await pageShopOrder(searchConditions);
if (res?.list && res?.list.length > 0) {
- // 批量获取订单商品信息,限制并发数量
- const batchSize = 3; // 限制并发数量为3
- const ordersWithGoods: OrderWithGoods[] = [];
-
- for (let i = 0; i < res.list.length; i += batchSize) {
- const batch = res.list.slice(i, i + batchSize);
- const batchResults = await Promise.all(
- batch.map(async (order) => {
- try {
- const orderGoods = await listShopOrderGoods({orderId: order.orderId});
- return {
- ...order,
- orderGoodsList: orderGoods || []
- };
- } catch (error) {
- console.error('获取订单商品失败:', error);
- return {
- ...order,
- orderGoodsList: []
- };
- }
- })
- );
- ordersWithGoods.push(...batchResults);
- }
+ // 订单分页接口已返回 orderGoods:直接读取并归一化,避免 N+1 请求导致列表加载慢
+ const ordersWithGoods: OrderWithGoods[] = res.list.map((order: any) => ({
+ ...order,
+ orderGoodsList: normalizeOrderGoodsList(order)
+ }));
// 使用函数式更新避免依赖 list
setList(prevList => {
diff --git a/src/utils/payment.ts b/src/utils/payment.ts
index 6ea1a41..de0e5d1 100644
--- a/src/utils/payment.ts
+++ b/src/utils/payment.ts
@@ -191,9 +191,8 @@ export class PaymentHandler {
// 后端字段可能叫 dealerId 或 storeId,这里都带上,服务端忽略未知字段即可。
// 这里做一次路径兼容(camel vs kebab),避免接口路径不一致导致整单失败。
const list = await this.listByCompatEndpoint(
- ['/shop/shop-store-rider', '/shop/shop-store-rider'],
+ ['/shop/shop-store-rider'],
{
- dealerId: storeId,
storeId: storeId,
status: 1
}
@@ -224,7 +223,7 @@ export class PaymentHandler {
private static async getWarehouses(): Promise {
if (this.warehousesCache) return this.warehousesCache;
const list = await this.listByCompatEndpoint(
- ['/shop/shop-warehouse', '/shop/shop-warehouse'],
+ ['/shop/shop-warehouse'],
{}
);
const usable = (list || []).filter(w => w?.isDelete !== 1 && (w.status === undefined || w.status === 1));