diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index 7d8527017..374fa86a7 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -9,6 +9,7 @@ import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils/errlist" + "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" @@ -346,13 +347,26 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64 for _, v := range skus { skuIDs = append(skuIDs, v.SkuID) } - storeSkuList, err := dao.GetStoresSkusInfo(db, []int{jxOrder.StoreID}, skuIDs) + + // storeSkuList, err := dao.GetStoresSkusInfo(db, []int{jxOrder.StoreID}, skuIDs) + // if err != nil { + // return nil, nil, err + // } + // storeSkuMap := make(map[int]*model.StoreSkuBind) + // for _, v := range storeSkuList { + // storeSkuMap[v.SkuID] = v + // } + storeSkuInfo, err := cms.GetStoreSkus(ctx, jxOrder.StoreID, skuIDs, true, "", true, false, map[string]interface{}{ + "actVendorID": model.VendorIDJX, + }, 0, model.UnlimitedPageSize) if err != nil { return nil, nil, err } - storeSkuMap := make(map[int]*model.StoreSkuBind) - for _, v := range storeSkuList { - storeSkuMap[v.SkuID] = v + storeSkuMap := make(map[int]*cms.StoreSkuExt) + for _, v1 := range storeSkuInfo.SkuNames { + for _, v2 := range v1.Skus { + storeSkuMap[v2.SkuID] = v2 + } } skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil) @@ -380,9 +394,28 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64 Weight: sku.Weight, Name: jxutils.ComposeSkuName(sku.Prefix, sku.Name, sku.Comment, sku.Unit, sku.SpecQuality, sku.SpecUnit, 0), } - outJxOrder.Skus = append(outJxOrder.Skus, jxSku) - outJxOrder.OrderPrice += int64(v.Count) * jxSku.SalePrice - outJxOrder.Weight = v.Count * jxSku.Weight + if storeSkuBind.ActPrice != 0 && storeSkuBind.ActPrice < storeSkuBind.JxPrice { + jxSku.SalePrice = int64(storeSkuBind.ActPrice) + jxSku.Count = 1 + + outJxOrder.Skus = append(outJxOrder.Skus, jxSku) + outJxOrder.OrderPrice += int64(jxSku.Count) * jxSku.SalePrice + outJxOrder.Weight = jxSku.Count * jxSku.Weight + if v.Count-1 > 0 { + jxSku2 := *jxSku + jxSku.SalePrice = jxSku.Price + jxSku.Count = v.Count - 1 + + jxSku = &jxSku2 + } else { + jxSku = nil + } + } + if jxSku != nil { + outJxOrder.Skus = append(outJxOrder.Skus, jxSku) + outJxOrder.OrderPrice += int64(jxSku.Count) * jxSku.SalePrice + outJxOrder.Weight = jxSku.Count * jxSku.Weight + } } } }