fix(trade): on-site pickup pay success marks order COMPLETED
This commit is contained in:
@@ -252,7 +252,7 @@ export default function ProxyOrderModal({ open, onClose, onSuccess }: ProxyOrder
|
|||||||
message={`订单 ${created.orderNo} 待支付 ¥${fmtMoney(created.payAmount)},请扫码支付`}
|
message={`订单 ${created.orderNo} 待支付 ¥${fmtMoney(created.payAmount)},请扫码支付`}
|
||||||
description={
|
description={
|
||||||
created.deliveryType === 'ON_SITE_PICKUP'
|
created.deliveryType === 'ON_SITE_PICKUP'
|
||||||
? '支付完成后将进入现场提货闭环'
|
? '支付完成后订单即为已完成,并发放好客权益'
|
||||||
: '支付完成后将进入待发货,由总部履约发货'
|
: '支付完成后将进入待发货,由总部履约发货'
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -325,7 +325,7 @@ export default function ProxyOrderPage() {
|
|||||||
</p>
|
</p>
|
||||||
<p className="label-md text-muted" style={{ marginTop: 8 }}>
|
<p className="label-md text-muted" style={{ marginTop: 8 }}>
|
||||||
{created.deliveryType === 'ON_SITE_PICKUP'
|
{created.deliveryType === 'ON_SITE_PICKUP'
|
||||||
? '支付成功后进入现场提货闭环'
|
? '支付成功后订单即为已完成,并发放好客权益'
|
||||||
: '支付成功后进入待发货,由总部履约'}
|
: '支付成功后进入待发货,由总部履约'}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ export default function PayPage() {
|
|||||||
const [showBindPhone, setShowBindPhone] = useState(false);
|
const [showBindPhone, setShowBindPhone] = useState(false);
|
||||||
const [wxSessionKey, setWxSessionKey] = useState<string | null>(null);
|
const [wxSessionKey, setWxSessionKey] = useState<string | null>(null);
|
||||||
const [orderNo, setOrderNo] = useState('');
|
const [orderNo, setOrderNo] = useState('');
|
||||||
|
const [deliveryType, setDeliveryType] = useState('');
|
||||||
|
|
||||||
const refreshPayReadiness = useCallback(async () => {
|
const refreshPayReadiness = useCallback(async () => {
|
||||||
try {
|
try {
|
||||||
@@ -78,9 +79,15 @@ export default function PayPage() {
|
|||||||
setOrderNo('');
|
setOrderNo('');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
request<{ orderNo?: string }>('USER_H5', `/trade/orders/${orderId}`)
|
request<{ orderNo?: string; deliveryType?: string }>('USER_H5', `/trade/orders/${orderId}`)
|
||||||
.then((order) => setOrderNo(order.orderNo || ''))
|
.then((order) => {
|
||||||
.catch(() => setOrderNo(''));
|
setOrderNo(order.orderNo || '');
|
||||||
|
setDeliveryType(order.deliveryType || '');
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
setOrderNo('');
|
||||||
|
setDeliveryType('');
|
||||||
|
});
|
||||||
}, [orderId]);
|
}, [orderId]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -140,11 +147,13 @@ export default function PayPage() {
|
|||||||
if (!paid) {
|
if (!paid) {
|
||||||
alert('支付结果确认中,请稍后在订单列表查看');
|
alert('支付结果确认中,请稍后在订单列表查看');
|
||||||
}
|
}
|
||||||
navigate('/orders?tab=paid');
|
navigate(
|
||||||
|
deliveryType === 'ON_SITE_PICKUP' ? '/orders?tab=completed' : '/orders?tab=paid',
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
navigate('/orders?tab=paid');
|
navigate(deliveryType === 'ON_SITE_PICKUP' ? '/orders?tab=completed' : '/orders?tab=paid');
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (isWechatAuthRequiredError(e)) {
|
if (isWechatAuthRequiredError(e)) {
|
||||||
setNeedsWechatAuth(true);
|
setNeedsWechatAuth(true);
|
||||||
|
|||||||
@@ -144,7 +144,8 @@ export default function PayPage() {
|
|||||||
toast('支付成功', 'success');
|
toast('支付成功', 'success');
|
||||||
}
|
}
|
||||||
if (deliveryType === 'ON_SITE_PICKUP') {
|
if (deliveryType === 'ON_SITE_PICKUP') {
|
||||||
Taro.redirectTo({ url: `/pages/pickup-receive/index?id=${orderId}` });
|
// 现场提货支付即完成 → 订单详情(已完成)
|
||||||
|
Taro.redirectTo({ url: `/pages/order-detail/index?id=${orderId}` });
|
||||||
} else {
|
} else {
|
||||||
Taro.redirectTo({ url: '/pages/orders/index?tab=paid' });
|
Taro.redirectTo({ url: '/pages/orders/index?tab=paid' });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -288,8 +288,9 @@ export class TradeService {
|
|||||||
order.cityId,
|
order.cityId,
|
||||||
order.receiverDistrict,
|
order.receiverDistrict,
|
||||||
);
|
);
|
||||||
|
// 现场提货:支付即完成(PRD SC-02 / REQ-U-008)
|
||||||
const toStatus =
|
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 this.prisma.$transaction(async (tx) => {
|
||||||
await tx.order.update({
|
await tx.order.update({
|
||||||
@@ -400,8 +401,9 @@ export class TradeService {
|
|||||||
order.cityId,
|
order.cityId,
|
||||||
order.receiverDistrict,
|
order.receiverDistrict,
|
||||||
);
|
);
|
||||||
|
// 现场提货:支付即完成(PRD SC-02 / REQ-U-008)
|
||||||
const toStatus =
|
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 this.prisma.$transaction(async (tx) => {
|
||||||
const current = await tx.order.findUnique({ where: { id: order.id } });
|
const current = await tx.order.findUnique({ where: { id: order.id } });
|
||||||
if (!current || current.payStatus === 'PAID') return;
|
if (!current || current.payStatus === 'PAID') return;
|
||||||
@@ -1812,8 +1814,9 @@ export class TradeService {
|
|||||||
order.cityId,
|
order.cityId,
|
||||||
order.receiverDistrict,
|
order.receiverDistrict,
|
||||||
);
|
);
|
||||||
|
// 现场提货:支付即完成(代下单同 C 端 PRD)
|
||||||
const toStatus =
|
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 this.prisma.$transaction(async (tx) => {
|
||||||
await tx.order.update({
|
await tx.order.update({
|
||||||
|
|||||||
Reference in New Issue
Block a user