物料订单计算袋子

This commit is contained in:
苏尹岚
2020-03-11 18:23:38 +08:00
parent 22ffecf95f
commit e5e5bda869

View File

@@ -8,6 +8,8 @@ import (
"strings"
"time"
"git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
"git.rosy.net.cn/jx-callback/business/jxstore/event"
"git.rosy.net.cn/jx-callback/globals"
@@ -122,6 +124,14 @@ var (
7: "七",
}
dayList = []string{"今天", "明天", "后天"}
bagMap = map[int]int{
6039382: 100,
6039383: 200,
6039384: 200,
6039387: 200,
6039390: 200,
}
)
func init() {
@@ -422,6 +432,10 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
outJxOrder.StoreName = storeDetail.Name
skus := formalizeSkus(jxOrder.Skus)
err = matterSkusLimited(skus, fromStoreID)
if err != nil {
return nil, nil, err
}
// 允许空商品列表(一般用于测试配送地址,门店信息是否合适)
if len(skus) > 0 {
var skuIDs []int
@@ -485,7 +499,23 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
}
if jxSku != nil {
outJxOrder.Skus = append(outJxOrder.Skus, jxSku)
outJxOrder.OrderPrice += int64(jxSku.Count) * jxSku.SalePrice
if fromStoreID == 0 {
outJxOrder.OrderPrice += int64(jxSku.Count) * jxSku.SalePrice
} else {
if bagMap[jxSku.SkuID] != 0 {
if jxSku.Count > 1 {
for i := 0; i < jxSku.Count; i++ {
if i == 0 {
outJxOrder.OrderPrice += 1
} else {
outJxOrder.OrderPrice += jxSku.SalePrice
}
}
}
} else {
outJxOrder.OrderPrice += int64(jxSku.Count) * jxSku.SalePrice
}
}
outJxOrder.Weight += jxSku.Count * jxSku.Weight
}
}
@@ -537,6 +567,22 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
return outJxOrder, deliveryAddress, err
}
func matterSkusLimited(skus []*JxSkuInfo, storeID int) (err error) {
result, err := orderman.GetMatterStoreOrderCount(nil, storeID)
sum := 0
if result.Count != 0 {
for _, sku := range skus {
if bagMap[sku.SkuID] != 0 {
sum += bagMap[sku.SkuID] * sku.Count
}
}
if sum-200 < result.Count {
return fmt.Errorf("订单背心袋订购数量过多,请按照实际销量购买!,大概销量:[%v],购买数量:[%v]", result.Count, sum)
}
}
return err
}
func jxOrder2GoodsOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, deliveryAddress *dao.UserDeliveryAddressEx) (order *model.GoodsOrder, err error) {
order = &model.GoodsOrder{
VendorOrderID: utils.Int64ToStr(jxOrder.OrderID),