feat(ops): partner proxy order list and HQ order delete
CI / verify (pull_request) Has been cancelled
CI / verify (pull_request) Has been cancelled
Add partner-facing proxy order list/detail; unlock SUPER_ADMIN order delete with cascade cleanup and type filter. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1359,7 +1359,76 @@ export class TradeService {
|
||||
},
|
||||
});
|
||||
|
||||
return this.getPartnerOrder(partnerAccountId, order.id);
|
||||
return serializeBigInt(mapOrderCompat(order));
|
||||
}
|
||||
|
||||
/** 合伙人代下单列表:按 proxyPartnerAccountId 归属,与管仓订单无关 */
|
||||
async listPartnerProxyOrders(
|
||||
partnerAccountId: bigint,
|
||||
page = 1,
|
||||
pageSize = 20,
|
||||
keyword?: string,
|
||||
) {
|
||||
const primary = await this.partnerCityService.resolvePrimaryAccount(partnerAccountId);
|
||||
const kw = keyword?.trim();
|
||||
const where = {
|
||||
orderType: 'PROXY' as const,
|
||||
proxyPartnerAccountId: primary.id,
|
||||
...(kw
|
||||
? {
|
||||
OR: [
|
||||
{ orderNo: { contains: kw } },
|
||||
{ receiverPhone: { contains: kw } },
|
||||
{ receiverName: { contains: kw } },
|
||||
{ productName: { contains: kw } },
|
||||
],
|
||||
}
|
||||
: {}),
|
||||
};
|
||||
const take = Math.min(Math.max(pageSize, 1), 50);
|
||||
const skip = (Math.max(page, 1) - 1) * take;
|
||||
const [list, total] = await Promise.all([
|
||||
this.prisma.order.findMany({
|
||||
where,
|
||||
include: {
|
||||
delivery: true,
|
||||
imageResource: true,
|
||||
user: { select: { phone: true, nickname: true } },
|
||||
},
|
||||
orderBy: { createdAt: 'desc' },
|
||||
skip,
|
||||
take,
|
||||
}),
|
||||
this.prisma.order.count({ where }),
|
||||
]);
|
||||
return {
|
||||
list: serializeBigInt(list.map(mapOrderCompat)),
|
||||
total,
|
||||
page: Math.max(page, 1),
|
||||
pageSize: take,
|
||||
};
|
||||
}
|
||||
|
||||
async getPartnerProxyOrder(partnerAccountId: bigint, orderId: bigint) {
|
||||
const primary = await this.partnerCityService.resolvePrimaryAccount(partnerAccountId);
|
||||
const order = await this.prisma.order.findFirst({
|
||||
where: {
|
||||
id: orderId,
|
||||
orderType: 'PROXY',
|
||||
proxyPartnerAccountId: primary.id,
|
||||
},
|
||||
include: {
|
||||
delivery: true,
|
||||
user: true,
|
||||
imageResource: true,
|
||||
},
|
||||
});
|
||||
if (!order) throw new NotFoundException('代下单不存在');
|
||||
const statusLogs = await this.prisma.commonEvent.findMany({
|
||||
where: orderStatusLogWhere(orderId),
|
||||
orderBy: { createdAt: 'desc' },
|
||||
});
|
||||
return serializeBigInt(mapOrderCompat({ ...order, statusLogs: mapStatusLogCompat(statusLogs) }));
|
||||
}
|
||||
|
||||
/** HQ 代下单:商品/推广码选项(运营侧可看白名单测试酒) */
|
||||
|
||||
Reference in New Issue
Block a user