京西商城订单可以创建
This commit is contained in:
@@ -13,6 +13,11 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
)
|
||||
|
||||
const (
|
||||
OrderCreateTypePre = 0 // 预创建
|
||||
OrderCreateTypeNormal = 1 // 正常创建
|
||||
)
|
||||
|
||||
type JxSkuInfo struct {
|
||||
SkuID int `json:"skuID"`
|
||||
Count int `json:"count"`
|
||||
@@ -37,24 +42,24 @@ type JxOrderInfo struct {
|
||||
|
||||
OrderID int64 `json:"orderID"`
|
||||
StoreName string `json:"storeName"`
|
||||
PayID string `json:"payID"`
|
||||
}
|
||||
|
||||
func PreCreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64) (outJxOrder *JxOrderInfo, err error) {
|
||||
outJxOrder, _, err = generateOrder(ctx, jxOrder, addressID)
|
||||
return outJxOrder, err
|
||||
}
|
||||
|
||||
func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64) (outJxOrder *JxOrderInfo, err error) {
|
||||
func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64, createType int) (outJxOrder *JxOrderInfo, err error) {
|
||||
outJxOrder, deliveryAddress, err := generateOrder(ctx, jxOrder, addressID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if outJxOrder.TotalPrice != jxOrder.TotalPrice {
|
||||
return nil, fmt.Errorf("商品或配送信息发生改变,请重新下单")
|
||||
if createType != OrderCreateTypePre {
|
||||
if outJxOrder.TotalPrice != jxOrder.TotalPrice {
|
||||
return nil, fmt.Errorf("商品或配送信息发生改变,请重新下单")
|
||||
}
|
||||
outJxOrder.OrderID = GenOrderNo()
|
||||
order, err2 := jxOrder2GoodsOrder(ctx, outJxOrder, deliveryAddress)
|
||||
if err = err2; err == nil {
|
||||
partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order))
|
||||
}
|
||||
}
|
||||
outJxOrder.OrderID = GenOrderNo()
|
||||
order, err := jxOrder2GoodsOrder(ctx, jxOrder, deliveryAddress)
|
||||
partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order))
|
||||
return outJxOrder, err
|
||||
}
|
||||
|
||||
@@ -104,7 +109,9 @@ func isTimeInOpTime(openTime1, closeTime1, openTime2, closeTime2 int16, time2Che
|
||||
|
||||
func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64) (outJxOrder *JxOrderInfo, deliveryAddress *dao.UserDeliveryAddressEx, err error) {
|
||||
db := dao.GetDB()
|
||||
|
||||
if jxOrder.StoreID == 0 {
|
||||
return nil, nil, fmt.Errorf("没有指定门店信息")
|
||||
}
|
||||
// 配送范围检查
|
||||
storeDetail, err := dao.GetStoreDetail(db, jxOrder.StoreID, model.VendorIDJX)
|
||||
if err != nil {
|
||||
@@ -164,23 +171,28 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
|
||||
skuMap[v.ID] = v
|
||||
}
|
||||
|
||||
outJxOrder = &JxOrderInfo{
|
||||
StoreName: storeDetail.Name,
|
||||
}
|
||||
outJxOrder2 := *jxOrder
|
||||
outJxOrder2.Skus = nil
|
||||
outJxOrder2.OrderPrice = 0
|
||||
outJxOrder = &outJxOrder2
|
||||
outJxOrder.StoreName = storeDetail.Name
|
||||
for _, v := range skus {
|
||||
if storeSkuBind := storeSkuMap[v.SkuID]; storeSkuBind != nil {
|
||||
if sku := skuMap[v.SkuID]; sku != nil {
|
||||
outJxOrder.Skus = append(outJxOrder.Skus, &JxSkuInfo{
|
||||
jxSku := &JxSkuInfo{
|
||||
SkuID: v.SkuID,
|
||||
Count: v.Count,
|
||||
Price: int64(storeSkuBind.JxPrice),
|
||||
SalePrice: int64(storeSkuBind.JxPrice), // todo 考虑活动价
|
||||
Name: jxutils.ComposeSkuName(sku.Prefix, sku.Name, sku.Comment, sku.Unit, sku.SpecQuality, sku.SpecUnit, 0),
|
||||
})
|
||||
outJxOrder.TotalPrice += int64(v.Count) * v.SalePrice
|
||||
}
|
||||
outJxOrder.Skus = append(outJxOrder.Skus, jxSku)
|
||||
outJxOrder.OrderPrice += int64(v.Count) * jxSku.SalePrice
|
||||
}
|
||||
}
|
||||
}
|
||||
outJxOrder.TotalPrice = outJxOrder.OrderPrice + outJxOrder.FreightPrice
|
||||
outJxOrder.ActualPayPrice = outJxOrder.TotalPrice
|
||||
return outJxOrder, deliveryAddress, err
|
||||
}
|
||||
|
||||
@@ -209,6 +221,7 @@ func jxOrder2GoodsOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, deliveryAd
|
||||
DeliveryType: model.OrderDeliveryTypeStoreSelf,
|
||||
StatusTime: time.Now(),
|
||||
}
|
||||
order.OrderCreatedAt = order.StatusTime
|
||||
order.VendorUserID = order.UserID
|
||||
if jxOrder.ExpectedDeliveredTime != nil {
|
||||
order.ExpectedDeliveredTime = *jxOrder.ExpectedDeliveredTime
|
||||
|
||||
Reference in New Issue
Block a user