fix:购物车下单
This commit is contained in:
@@ -4,7 +4,6 @@ import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"fusenapi/constants"
|
||||
"fusenapi/model/gmodel"
|
||||
"fusenapi/utils/basic"
|
||||
@@ -62,12 +61,15 @@ type (
|
||||
// 下单
|
||||
func (d *defaultOrder) Create(ctx context.Context, in *CreateReq) (res *CreateRes, err error) {
|
||||
var errorCode basic.StatusResponse
|
||||
// 订单编号
|
||||
var orderSn string = order.GenerateOrderNumber(int(in.DeliveryMethod), int(in.UserId))
|
||||
|
||||
err = d.MysqlConn.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
||||
// 查询购物车
|
||||
var shoppingCartList []*gmodel.RelaFsShoppingCart
|
||||
resShoppingCartFind := tx.Preload("ShoppingCartProduct", func(dbPreload *gorm.DB) *gorm.DB {
|
||||
return dbPreload.Table(gmodel.NewFsProductModel(tx).TableName()).Preload("CoverResource")
|
||||
}).Preload("ShoppingCartProductPriceList").Preload("ShoppingCartProductModel3dList").
|
||||
}).Preload("ShoppingCartProductPriceList").Preload("ShoppingCartProductModel3dList").Preload("ShoppingCartProductModel3dFitting").
|
||||
Where("id IN ?", in.CartIds).
|
||||
Where("user_id = ?", in.UserId).
|
||||
Find(&shoppingCartList)
|
||||
@@ -86,7 +88,7 @@ func (d *defaultOrder) Create(ctx context.Context, in *CreateReq) (res *CreateRe
|
||||
}
|
||||
|
||||
// 订单商品列表
|
||||
var orderProductList []*gmodel.OrderProduct
|
||||
var orderProductList []gmodel.OrderProduct
|
||||
|
||||
var shippingFee gmodel.AmountInfo
|
||||
// 订单税费总价(厘)
|
||||
@@ -229,7 +231,7 @@ func (d *defaultOrder) Create(ctx context.Context, in *CreateReq) (res *CreateRe
|
||||
var productSnapshot = make(map[string]interface{}, 1)
|
||||
productSnapshot["product_snapshot"] = shoppingCart.ShoppingCartProduct
|
||||
|
||||
orderProductList = append(orderProductList, &gmodel.OrderProduct{
|
||||
orderProductList = append(orderProductList, gmodel.OrderProduct{
|
||||
Amount: order.GetAmountInfo(order.GetAmountInfoReq{
|
||||
ExchangeRate: in.ExchangeRate,
|
||||
Initiate: productTotalPrice,
|
||||
@@ -272,29 +274,94 @@ func (d *defaultOrder) Create(ctx context.Context, in *CreateReq) (res *CreateRe
|
||||
OriginalCurrency: in.OriginalCurrency,
|
||||
})
|
||||
// 定金
|
||||
var depositInt int64 //厘
|
||||
var depositInt int64 = orderTotal / 2
|
||||
var deposit = gmodel.PayInfo{
|
||||
Status: gmodel.PayStatus{
|
||||
StatusCode: int64(constants.PAYSTATUSUNPAID),
|
||||
StatusTitle: constants.PayStatusMessage[constants.PAYSTATUSUNPAID],
|
||||
},
|
||||
PayAmount: gmodel.AmountInfo{},
|
||||
PayAmount: order.GetAmountInfo(order.GetAmountInfoReq{
|
||||
ExchangeRate: in.ExchangeRate,
|
||||
Initiate: depositInt,
|
||||
Current: depositInt,
|
||||
CurrentCurrency: in.CurrentCurrency,
|
||||
OriginalCurrency: in.OriginalCurrency,
|
||||
}),
|
||||
}
|
||||
|
||||
// 尾款
|
||||
var remainingBalanceInt int64 //厘
|
||||
var remainingBalance = gmodel.PayInfo{}
|
||||
fmt.Println(orderProductList, shippingFee, shippingFeeTotal, tax, taxTotal, discount, discountTotal, subtotal, orderProductTotal, total)
|
||||
var remainingBalanceInt int64 = orderTotal - depositInt
|
||||
var remainingBalance = gmodel.PayInfo{
|
||||
Status: gmodel.PayStatus{
|
||||
StatusCode: int64(constants.PAYSTATUSUNPAID),
|
||||
StatusTitle: constants.PayStatusMessage[constants.PAYSTATUSUNPAID],
|
||||
},
|
||||
PayAmount: order.GetAmountInfo(order.GetAmountInfoReq{
|
||||
ExchangeRate: in.ExchangeRate,
|
||||
Initiate: remainingBalanceInt,
|
||||
Current: remainingBalanceInt,
|
||||
CurrentCurrency: in.CurrentCurrency,
|
||||
OriginalCurrency: in.OriginalCurrency,
|
||||
}),
|
||||
}
|
||||
var orderAmount = gmodel.OrderAmount{
|
||||
Deposit: deposit,
|
||||
RemainingBalance: remainingBalance,
|
||||
Discount: discount,
|
||||
ShippingFee: shippingFee,
|
||||
Tax: tax,
|
||||
Subtotal: subtotal,
|
||||
Total: total,
|
||||
}
|
||||
|
||||
// 订单状态--当前
|
||||
var status = gmodel.OrderStatus{
|
||||
Ctime: nowTime,
|
||||
Utime: nowTime,
|
||||
StatusCode: constants.ORDERSTATUSUNPAIDDEPOSIT,
|
||||
StatusTitle: constants.OrderStatusMessage[constants.ORDERSTATUSUNPAIDDEPOSIT],
|
||||
}
|
||||
// 订单状态--链路
|
||||
var statusLink = order.GenerateOrderStatusLink(in.DeliveryMethod, nowTime)
|
||||
var orderInfo = gmodel.OrderInfo{
|
||||
Ctime: nowTime,
|
||||
DeliveryMethod: in.DeliveryMethod,
|
||||
OrderSn: orderSn,
|
||||
Status: status,
|
||||
StatusLink: statusLink,
|
||||
}
|
||||
|
||||
var orderDetail = gmodel.OrderDetail{
|
||||
DeliveryAddress: orderAddress,
|
||||
OrderAmount: orderAmount,
|
||||
OrderInfo: orderInfo,
|
||||
OrderProduct: orderProductList,
|
||||
PayStatus: payStatus,
|
||||
}
|
||||
// 数据库操作
|
||||
var order = gmodel.NewFsOrder{
|
||||
UserId: &in.UserId,
|
||||
DeliveryMethod: &in.DeliveryMethod,
|
||||
OrderSn: &orderSn,
|
||||
Status: (*int64)(&status.StatusCode),
|
||||
PayStatus: (*int64)(&payStatus),
|
||||
Ctime: &nowTime,
|
||||
Metadata: &orderDetail,
|
||||
}
|
||||
result := tx.Create(&order)
|
||||
if result.Error != nil {
|
||||
return result.Error
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return &CreateRes{
|
||||
OrderSn: orderSn,
|
||||
ErrorCode: errorCode,
|
||||
}, err
|
||||
}
|
||||
return &CreateRes{
|
||||
OrderSn: orderSn,
|
||||
ErrorCode: errorCode,
|
||||
}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user