优化下单流程

This commit is contained in:
2025-07-30 00:40:38 +08:00
parent 11729876ca
commit 19fe9b4775
18 changed files with 8252 additions and 169 deletions

View File

@@ -10,10 +10,15 @@ import {ShopUserAddress} from "@/api/shop/shopUserAddress/model";
import './index.scss'
import {useCart} from "@/hooks/useCart";
import Gap from "@/components/Gap";
import {createOrder} from "@/api/shop/shopOrder";
import {OrderCreateRequest} from "@/api/shop/shopOrder/model";
import {Payment} from "@/api/system/payment/model";
import {PaymentHandler, PaymentType, buildCartOrder} from "@/utils/payment";
const OrderConfirm = () => {
const [goods, setGoods] = useState<ShopGoods | null>(null);
const [address, setAddress] = useState<ShopUserAddress>()
const [payment, setPayment] = useState<Payment>()
const router = Taro.getCurrentInstance().router;
const goodsId = router?.params?.goodsId;
@@ -29,6 +34,47 @@ const OrderConfirm = () => {
}
}
/**
* 统一支付入口
*/
const onPay = async () => {
// 基础校验
if (!address) {
Taro.showToast({
title: '请选择收货地址',
icon: 'error'
});
return;
}
if (!cartItems || cartItems.length === 0) {
Taro.showToast({
title: '购物车为空',
icon: 'error'
});
return;
}
// 构建订单数据
const orderData = buildCartOrder(
cartItems.map(item => ({
goodsId: item.goodsId!,
quantity: item.quantity || 1
})),
address.id,
{
comments: '购物车下单',
deliveryType: 0
}
);
// 根据支付方式选择支付类型,默认微信支付
const paymentType = payment?.type === 0 ? PaymentType.BALANCE : PaymentType.WECHAT;
// 执行支付
await PaymentHandler.pay(orderData, paymentType);
};
useEffect(() => {
if (goodsId) {
getShopGoods(Number(goodsId)).then(res => {
@@ -121,7 +167,7 @@ const OrderConfirm = () => {
<span className={'text-red-500 text-xl font-bold'}>{goods.price}</span>
</div>
<div className={'buy-btn mx-4'}>
<Button type="success" size="large"></Button>
<Button type="success" size="large" onClick={onPay}></Button>
</div>
</View>
</div>