diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index 7dcd9b7ad..d9f9aac13 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -432,12 +432,6 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64 outJxOrder.StoreName = storeDetail.Name skus := formalizeSkus(jxOrder.Skus) - if fromStoreID != 0 { - err = matterSkusLimited(skus, fromStoreID) - if err != nil { - return nil, nil, err - } - } // 允许空商品列表(一般用于测试配送地址,门店信息是否合适) if len(skus) > 0 { var skuIDs []int @@ -470,7 +464,11 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64 } skuMap[v.ID] = v } - + var result *orderman.OrderCount + if fromStoreID != 0 { + result, _ = orderman.GetMatterStoreOrderCount(nil, fromStoreID) + } + sum := result.Count for _, v := range skus { if storeSkuBind := storeSkuMap[v.SkuID]; storeSkuBind != nil { if sku := skuMap[v.SkuID]; sku != nil { @@ -504,18 +502,35 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64 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 + if jxSku.SkuID == 6039382 { + if bagMap[jxSku.SkuID] != 0 { + if sum > 0 { + if bagMap[jxSku.SkuID]*jxSku.Count <= sum+100 { + outJxOrder.OrderPrice += int64(1 * jxSku.Count) } else { - outJxOrder.OrderPrice += jxSku.SalePrice + outJxOrder.OrderPrice += int64(1 * math.Ceil(utils.Int2Float64(sum/100))) + outJxOrder.OrderPrice += (int64(jxSku.Count) - utils.Float64TwoInt64(math.Ceil(utils.Int2Float64(sum/100)))) * jxSku.SalePrice } + } else { + outJxOrder.OrderPrice += int64(jxSku.Count) * jxSku.SalePrice } + sum = sum - bagMap[jxSku.SkuID]*jxSku.Count + } + } + if jxSku.SkuID == 6039383 || jxSku.SkuID == 6039384 || jxSku.SkuID == 6039387 || jxSku.SkuID == 6039390 { + if bagMap[jxSku.SkuID] != 0 { + if sum > 0 { + if bagMap[jxSku.SkuID]*jxSku.Count <= sum+200 { + outJxOrder.OrderPrice += int64(1 * jxSku.Count) + } else { + outJxOrder.OrderPrice += int64(1 * math.Ceil(utils.Int2Float64(sum/200))) + outJxOrder.OrderPrice += (int64(jxSku.Count) - utils.Float64TwoInt64(math.Ceil(utils.Int2Float64(sum/200)))) * jxSku.SalePrice + } + } else { + outJxOrder.OrderPrice += int64(jxSku.Count) * jxSku.SalePrice + } + sum = sum - bagMap[jxSku.SkuID]*jxSku.Count } - } else { - outJxOrder.OrderPrice += int64(jxSku.Count) * jxSku.SalePrice } } outJxOrder.Weight += jxSku.Count * jxSku.Weight