From 1bdae88c1129500dc78de7067c45b84023b361ab Mon Sep 17 00:00:00 2001 From: tikkhun Date: Fri, 21 Nov 2025 11:58:13 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E8=AE=A2=E5=8D=95=E6=9C=8D=E5=8A=A1):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=85=B3=E8=81=94=E8=AE=A2=E5=8D=95=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=8E=BB=E9=87=8D=E9=80=BB=E8=BE=91=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=9F=A5=E8=AF=A2=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 确保关联订单列表中的条目不会重复,通过使用Set来跟踪已处理的外部ID 移除不必要的orders数组填充,简化返回数据结构 --- src/service/order.service.ts | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/service/order.service.ts b/src/service/order.service.ts index 780071d..7f7855c 100644 --- a/src/service/order.service.ts +++ b/src/service/order.service.ts @@ -1330,10 +1330,21 @@ export class OrderService { let relatedList: any[] = []; try { const related = await this.getRelatedByOrder(id); - relatedList = [ - ...(Array.isArray(related?.subscriptions) ? related.subscriptions : []), - ...(Array.isArray(related?.orders) ? related.orders : []), - ]; + const subs = Array.isArray(related?.subscriptions) ? related.subscriptions : []; + const ords = Array.isArray(related?.orders) ? related.orders : []; + const seen = new Set(); + const merge = [...subs, ...ords]; + for (const it of merge) { + const key = it?.externalSubscriptionId + ? `sub:${it.externalSubscriptionId}` + : it?.externalOrderId + ? `ord:${it.externalOrderId}` + : `id:${it?.id}`; + if (!seen.has(key)) { + seen.add(key); + relatedList.push(it); + } + } } catch (error) { // 关联查询失败不影响详情返回 } @@ -1360,15 +1371,10 @@ export class OrderService { WHERE s.siteId = ? AND s.parent_id = ? `; const subscriptions = await this.orderModel.query(subSql, [siteId, order.externalOrderId]); - - - const allOrdersMap = new Map(); - subscriptions.forEach(o => allOrdersMap.set(o.id, o)); - return { order, subscriptions, - orders: Array.from(allOrdersMap.values()), + orders: [], }; }