diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index 7e8354333..49aa680bd 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -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),