From cb6ecaaba6a065fdc4237fa3032f81c3cd356afd Mon Sep 17 00:00:00 2001 From: jacy <18049821889@163.com> Date: Sun, 2 Aug 2026 13:42:15 +0800 Subject: [PATCH] fix(trade): on-site pickup pay success marks order COMPLETED --- .../src/components/ProxyOrderModal.tsx | 2 +- apps/h5-partner/src/pages/ProxyOrderPage.tsx | 2 +- apps/h5-user/src/pages/PayPage.tsx | 19 ++++++++++++++----- apps/mini-user/src/pages/pay/index.tsx | 3 ++- .../src/modules/trade/trade.service.ts | 9 ++++++--- 5 files changed, 24 insertions(+), 11 deletions(-) diff --git a/apps/admin-web/src/components/ProxyOrderModal.tsx b/apps/admin-web/src/components/ProxyOrderModal.tsx index 66f5ccb..2aeccde 100644 --- a/apps/admin-web/src/components/ProxyOrderModal.tsx +++ b/apps/admin-web/src/components/ProxyOrderModal.tsx @@ -252,7 +252,7 @@ export default function ProxyOrderModal({ open, onClose, onSuccess }: ProxyOrder message={`订单 ${created.orderNo} 待支付 ¥${fmtMoney(created.payAmount)},请扫码支付`} description={ created.deliveryType === 'ON_SITE_PICKUP' - ? '支付完成后将进入现场提货闭环' + ? '支付完成后订单即为已完成,并发放好客权益' : '支付完成后将进入待发货,由总部履约发货' } /> diff --git a/apps/h5-partner/src/pages/ProxyOrderPage.tsx b/apps/h5-partner/src/pages/ProxyOrderPage.tsx index 9616fee..57a54d0 100644 --- a/apps/h5-partner/src/pages/ProxyOrderPage.tsx +++ b/apps/h5-partner/src/pages/ProxyOrderPage.tsx @@ -325,7 +325,7 @@ export default function ProxyOrderPage() {

{created.deliveryType === 'ON_SITE_PICKUP' - ? '支付成功后进入现场提货闭环' + ? '支付成功后订单即为已完成,并发放好客权益' : '支付成功后进入待发货,由总部履约'}

diff --git a/apps/h5-user/src/pages/PayPage.tsx b/apps/h5-user/src/pages/PayPage.tsx index 6163eb2..e318cc0 100644 --- a/apps/h5-user/src/pages/PayPage.tsx +++ b/apps/h5-user/src/pages/PayPage.tsx @@ -41,6 +41,7 @@ export default function PayPage() { const [showBindPhone, setShowBindPhone] = useState(false); const [wxSessionKey, setWxSessionKey] = useState(null); const [orderNo, setOrderNo] = useState(''); + const [deliveryType, setDeliveryType] = useState(''); const refreshPayReadiness = useCallback(async () => { try { @@ -78,9 +79,15 @@ export default function PayPage() { setOrderNo(''); return; } - request<{ orderNo?: string }>('USER_H5', `/trade/orders/${orderId}`) - .then((order) => setOrderNo(order.orderNo || '')) - .catch(() => setOrderNo('')); + request<{ orderNo?: string; deliveryType?: string }>('USER_H5', `/trade/orders/${orderId}`) + .then((order) => { + setOrderNo(order.orderNo || ''); + setDeliveryType(order.deliveryType || ''); + }) + .catch(() => { + setOrderNo(''); + setDeliveryType(''); + }); }, [orderId]); useEffect(() => { @@ -140,11 +147,13 @@ export default function PayPage() { if (!paid) { alert('支付结果确认中,请稍后在订单列表查看'); } - navigate('/orders?tab=paid'); + navigate( + deliveryType === 'ON_SITE_PICKUP' ? '/orders?tab=completed' : '/orders?tab=paid', + ); return; } - navigate('/orders?tab=paid'); + navigate(deliveryType === 'ON_SITE_PICKUP' ? '/orders?tab=completed' : '/orders?tab=paid'); } catch (e) { if (isWechatAuthRequiredError(e)) { setNeedsWechatAuth(true); diff --git a/apps/mini-user/src/pages/pay/index.tsx b/apps/mini-user/src/pages/pay/index.tsx index f07f1fe..5d388c9 100644 --- a/apps/mini-user/src/pages/pay/index.tsx +++ b/apps/mini-user/src/pages/pay/index.tsx @@ -144,7 +144,8 @@ export default function PayPage() { toast('支付成功', 'success'); } if (deliveryType === 'ON_SITE_PICKUP') { - Taro.redirectTo({ url: `/pages/pickup-receive/index?id=${orderId}` }); + // 现场提货支付即完成 → 订单详情(已完成) + Taro.redirectTo({ url: `/pages/order-detail/index?id=${orderId}` }); } else { Taro.redirectTo({ url: '/pages/orders/index?tab=paid' }); } diff --git a/server/dukang-api/src/modules/trade/trade.service.ts b/server/dukang-api/src/modules/trade/trade.service.ts index 37b309b..e79e9a8 100644 --- a/server/dukang-api/src/modules/trade/trade.service.ts +++ b/server/dukang-api/src/modules/trade/trade.service.ts @@ -288,8 +288,9 @@ export class TradeService { order.cityId, order.receiverDistrict, ); + // 现场提货:支付即完成(PRD SC-02 / REQ-U-008) const toStatus = - order.deliveryType === 'ON_SITE_PICKUP' ? 'PENDING_RECEIVE' : 'PENDING_SHIP'; + order.deliveryType === 'ON_SITE_PICKUP' ? 'COMPLETED' : 'PENDING_SHIP'; await this.prisma.$transaction(async (tx) => { await tx.order.update({ @@ -400,8 +401,9 @@ export class TradeService { order.cityId, order.receiverDistrict, ); + // 现场提货:支付即完成(PRD SC-02 / REQ-U-008) const toStatus = - order.deliveryType === 'ON_SITE_PICKUP' ? 'PENDING_RECEIVE' : 'PENDING_SHIP'; + order.deliveryType === 'ON_SITE_PICKUP' ? 'COMPLETED' : 'PENDING_SHIP'; await this.prisma.$transaction(async (tx) => { const current = await tx.order.findUnique({ where: { id: order.id } }); if (!current || current.payStatus === 'PAID') return; @@ -1812,8 +1814,9 @@ export class TradeService { order.cityId, order.receiverDistrict, ); + // 现场提货:支付即完成(代下单同 C 端 PRD) const toStatus = - order.deliveryType === 'ON_SITE_PICKUP' ? 'PENDING_RECEIVE' : 'PENDING_SHIP'; + order.deliveryType === 'ON_SITE_PICKUP' ? 'COMPLETED' : 'PENDING_SHIP'; await this.prisma.$transaction(async (tx) => { await tx.order.update({