diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 7fc236deb..04198673b 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -364,17 +364,28 @@ func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db *dao. salePrice = 0 } v.EarningPrice = jxutils.CaculateSkuEarningPrice(v.ShopPrice, salePrice, storePayPercentage) - //重复购买有结算价的商品需要拆分,第一个商品按结算价,后面的商品按shopprice 或者 saleprice,然后把原来的商品信息删了 - if v.Count > 1 && v.EarningPrice != 0 { - sku := v - sku.Count = v.Count - 1 - v.Count = 1 - if v.ShopPrice < v.SalePrice { - sku.EarningPrice = v.ShopPrice + //TODO 重复购买有结算价的商品需要拆分,第一个商品按结算价,后面的商品按shopprice 或者 saleprice, 2020-05-06 + if v.Count > 1 { + storeID := 0 + if order.StoreID == 0 { + storeID = order.JxStoreID } else { - sku.EarningPrice = v.SalePrice + storeID = order.StoreID + } + result, _ := dao.GetEffectiveActStoreSkuInfo(db, 0, nil, 0, []int{storeID}, []int{v.SkuID}, order.OrderCreatedAt, order.OrderCreatedAt) + if len(result) > 0 { + if result[0].EarningPrice != 0 { + sku := v + sku.Count = v.Count - 1 + v.Count = 1 + if v.ShopPrice < v.SalePrice { + sku.EarningPrice = v.ShopPrice + } else { + sku.EarningPrice = v.SalePrice + } + orderSkus = append(orderSkus, sku) + } } - orderSkus = append(orderSkus, sku) } } // 直营店始终按比例结算,不考虑活动与结算表 diff --git a/business/jxcallback/orderman/orderman_ext.go b/business/jxcallback/orderman/orderman_ext.go index 9c079cfbc..a983d57d2 100644 --- a/business/jxcallback/orderman/orderman_ext.go +++ b/business/jxcallback/orderman/orderman_ext.go @@ -332,44 +332,53 @@ func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateS order.SkuInfo2 += ";" + skuStr1 } } else if v.SkuCount2 > 1 { - if v.SkuEarningPrice != 0 { - skuStr1 := strings.Join([]string{ - utils.Int2Str(v.SkuID), - utils.Int2Str(v.SkuCount2), - utils.Int2Str(v.SkuShopPrice), - utils.Int2Str(v.SkuSalePrice), - utils.Int2Str(v.SkuEarningPrice), - }, ",") - skuStr2 := strings.Join([]string{ - utils.Int2Str(v.SkuID), - utils.Int2Str(1), - utils.Int2Str(v.SkuShopPrice), - utils.Int2Str(v.SkuSalePrice), - utils.Int2Str(v.SkuEarningPrice), - }, ",") - price := 0 - if v.SkuShopPrice < v.SkuSalePrice { - price = v.SkuShopPrice - } else { - price = v.SkuSalePrice - } - skuStr3 := strings.Join([]string{ - utils.Int2Str(v.SkuID), - utils.Int2Str(v.SkuCount2 - 1), - utils.Int2Str(v.SkuShopPrice), - utils.Int2Str(v.SkuSalePrice), - utils.Int2Str(price), - }, ",") - if order == nil || v.ID != order.ID { - order = v - v.CourierVendorName = model.VendorChineseNames[v.WaybillVendorID] - v.Status2 = model.OrderStatusName[v.Status] - v.SkuInfo = skuStr1 - v.SkuInfo2 = skuStr2 + ";" + skuStr3 - orders2 = append(orders2, v) - } else { - order.SkuInfo += ";" + skuStr1 - order.SkuInfo2 += ";" + skuStr2 + ";" + skuStr3 + storeID := 0 + if v.StoreID == 0 { + storeID = v.JxStoreID + } else { + storeID = v.StoreID + } + result, _ := dao.GetEffectiveActStoreSkuInfo(dao.GetDB(), 0, nil, 0, []int{storeID}, []int{v.SkuID}, v.OrderCreatedAt, v.OrderCreatedAt) + if len(result) > 0 { + if result[0].EarningPrice != 0 { + skuStr1 := strings.Join([]string{ + utils.Int2Str(v.SkuID), + utils.Int2Str(v.SkuCount2), + utils.Int2Str(v.SkuShopPrice), + utils.Int2Str(v.SkuSalePrice), + utils.Int2Str(v.SkuEarningPrice), + }, ",") + skuStr2 := strings.Join([]string{ + utils.Int2Str(v.SkuID), + utils.Int2Str(1), + utils.Int2Str(v.SkuShopPrice), + utils.Int2Str(v.SkuSalePrice), + utils.Int2Str(v.SkuEarningPrice), + }, ",") + price := 0 + if v.SkuShopPrice < v.SkuSalePrice { + price = v.SkuShopPrice + } else { + price = v.SkuSalePrice + } + skuStr3 := strings.Join([]string{ + utils.Int2Str(v.SkuID), + utils.Int2Str(v.SkuCount2 - 1), + utils.Int2Str(v.SkuShopPrice), + utils.Int2Str(v.SkuSalePrice), + utils.Int2Str(price), + }, ",") + if order == nil || v.ID != order.ID { + order = v + v.CourierVendorName = model.VendorChineseNames[v.WaybillVendorID] + v.Status2 = model.OrderStatusName[v.Status] + v.SkuInfo = skuStr1 + v.SkuInfo2 = skuStr2 + ";" + skuStr3 + orders2 = append(orders2, v) + } else { + order.SkuInfo += ";" + skuStr1 + order.SkuInfo2 += ";" + skuStr2 + ";" + skuStr3 + } } } else { skuStr1 := strings.Join([]string{