京西商城订单可以创建

This commit is contained in:
gazebo
2019-11-15 22:01:30 +08:00
parent 293226d002
commit 30167d627a
4 changed files with 75 additions and 18 deletions

View File

@@ -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