订单有活动商品earningprice拆分sec
This commit is contained in:
@@ -24,6 +24,11 @@ import (
|
||||
func init() {
|
||||
}
|
||||
|
||||
type tSkuCountPrice struct {
|
||||
Count int `json:"count"`
|
||||
SalePrice int64 `json:"salePrice"`
|
||||
}
|
||||
|
||||
// msgVendorStatus的意思是事件本身的类型,类似有时收到NewOrder事件去取,订单状态不一定就是New的
|
||||
// OnOrderAdjust也类似,而OrderStatus要记录的是消息,所以添加这个
|
||||
func (c *OrderManager) OnOrderNew(order *model.GoodsOrder, orderStatus *model.OrderStatus) (err error) {
|
||||
@@ -336,6 +341,7 @@ func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db *dao.
|
||||
return err
|
||||
}
|
||||
skumapper := storeSkuPriceAndWeight2Map(l)
|
||||
var skuMultiCountMap = make(map[int][]*tSkuCountPrice)
|
||||
for _, v := range orderSkus {
|
||||
v.VendorOrderID = order.VendorOrderID
|
||||
v.VendorID = order.VendorID
|
||||
@@ -364,34 +370,42 @@ func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db *dao.
|
||||
salePrice = 0
|
||||
}
|
||||
v.EarningPrice = jxutils.CaculateSkuEarningPrice(v.ShopPrice, salePrice, storePayPercentage)
|
||||
//TODO 重复购买有结算价的商品需要拆分,第一个商品按结算价,后面的商品按shopprice 或者 saleprice, 2020-05-06
|
||||
// if v.Count > 1 {
|
||||
// storeID := 0
|
||||
// if order.StoreID == 0 {
|
||||
// storeID = order.JxStoreID
|
||||
// } else {
|
||||
// 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)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
skuMultiCountMap[v.SkuID] = append(skuMultiCountMap[v.SkuID], &tSkuCountPrice{
|
||||
Count: v.Count,
|
||||
SalePrice: v.SalePrice,
|
||||
})
|
||||
}
|
||||
// 直营店始终按比例结算,不考虑活动与结算表
|
||||
if changePriceType != model.StoreChangePriceTypeManagedStore {
|
||||
updateSingleOrderEarningPrice(order, db)
|
||||
}
|
||||
globals.SugarLogger.Debugf("skuMultiCountMap", utils.Format4Output(skuMultiCountMap, false))
|
||||
//TODO 重复购买有活动且结算价大于0的商品需要拆分,第一个商品按结算价,后面的商品按shopprice 或者 saleprice, 2020-05-06
|
||||
//TODO 京东美团的订单,做活动的商品之前就会拆分出来,所以只做更新,饿百暂时不管, 2020-05-07
|
||||
if order.VendorID == model.VendorIDJD || order.VendorID == model.VendorIDMTWM {
|
||||
for _, v := range orderSkus {
|
||||
if v.EarningPrice > 0 {
|
||||
if len(skuMultiCountMap[v.SkuID]) > 1 {
|
||||
var price = 0
|
||||
for _, vv := range skuMultiCountMap[v.SkuID] {
|
||||
if int(vv.SalePrice) > price {
|
||||
price = int(vv.SalePrice)
|
||||
}
|
||||
}
|
||||
if price == int(v.SalePrice) {
|
||||
var earningPrice = 0
|
||||
if v.ShopPrice < v.SalePrice {
|
||||
earningPrice = int(v.ShopPrice) * storePayPercentage
|
||||
} else {
|
||||
earningPrice = int(v.ShopPrice) * storePayPercentage
|
||||
}
|
||||
v.EarningPrice = int64(earningPrice)
|
||||
globals.SugarLogger.Debugf("TestearningPrice", earningPrice)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -738,26 +752,35 @@ func (c *OrderManager) RefreshHistoryOrdersEarningPrice(ctx *jxcontext.Context,
|
||||
}
|
||||
}()
|
||||
for _, value := range order.Skus {
|
||||
storeID := 0
|
||||
if order.StoreID == 0 {
|
||||
storeID = order.JxStoreID
|
||||
} else {
|
||||
storeID = order.StoreID
|
||||
}
|
||||
result, _ := dao.GetEffectiveActStoreSkuInfo(db, 0, nil, 0, []int{storeID}, []int{value.SkuID}, order.OrderCreatedAt, order.OrderCreatedAt)
|
||||
if len(result) > 0 {
|
||||
if result[0].EarningPrice != 0 {
|
||||
sku := value
|
||||
sku.Count = value.Count - 1
|
||||
value.Count = 1
|
||||
if value.ShopPrice < value.SalePrice {
|
||||
sku.EarningPrice = value.ShopPrice
|
||||
} else {
|
||||
sku.EarningPrice = value.SalePrice
|
||||
}
|
||||
order.Skus = append(order.Skus, sku)
|
||||
}
|
||||
}
|
||||
// storeID := 0
|
||||
// if order.StoreID == 0 {
|
||||
// storeID = order.JxStoreID
|
||||
// } else {
|
||||
// storeID = order.StoreID
|
||||
// }
|
||||
// result, _ := dao.GetEffectiveActStoreSkuInfo(db, 0, nil, 0, []int{storeID}, []int{value.SkuID}, order.OrderCreatedAt, order.OrderCreatedAt)
|
||||
// if len(result) > 0 {
|
||||
// if result[0].EarningPrice != 0 {
|
||||
// var (
|
||||
// storePayPercentage int
|
||||
// )
|
||||
// stores, _ := dao.GetStoreList(db, []int{order.StoreID}, nil, nil, nil, "")
|
||||
// if len(stores) > 0 {
|
||||
// storePayPercentage = stores[0].PayPercentage
|
||||
// } else {
|
||||
// storePayPercentage = 70
|
||||
// }
|
||||
// sku := value
|
||||
// sku.Count = value.Count - 1
|
||||
// value.Count = 1
|
||||
// if value.ShopPrice < value.SalePrice {
|
||||
// sku.EarningPrice = value.ShopPrice * int64(storePayPercentage)
|
||||
// } else {
|
||||
// sku.EarningPrice = value.SalePrice * int64(storePayPercentage)
|
||||
// }
|
||||
// order.Skus = append(order.Skus, sku)
|
||||
// }
|
||||
// }
|
||||
if _, err = dao.UpdateEntity(db, value, "EarningPrice", "StoreSubID"); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -312,8 +312,105 @@ func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateS
|
||||
afsInfo[v.SkuID].Count -= minus
|
||||
}
|
||||
}
|
||||
if v.SkuCount2 == 1 {
|
||||
skuStr1 := strings.Join([]string{
|
||||
// if v.SkuCount2 == 1 {
|
||||
// skuStr1 := strings.Join([]string{
|
||||
// utils.Int2Str(v.SkuID),
|
||||
// utils.Int2Str(v.SkuCount2),
|
||||
// utils.Int2Str(v.SkuShopPrice),
|
||||
// utils.Int2Str(v.SkuSalePrice),
|
||||
// utils.Int2Str(v.SkuEarningPrice),
|
||||
// }, ",")
|
||||
// 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 = skuStr1
|
||||
// orders2 = append(orders2, v)
|
||||
// } else {
|
||||
// order.SkuInfo += ";" + skuStr1
|
||||
// order.SkuInfo2 += ";" + skuStr1
|
||||
// }
|
||||
// } else if v.SkuCount2 > 1 {
|
||||
// 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 {
|
||||
// var (
|
||||
// storePayPercentage, price int
|
||||
// )
|
||||
// stores, _ := dao.GetStoreList(dao.GetDB(), []int{v.StoreID}, nil, nil, nil, "")
|
||||
// if len(stores) > 0 {
|
||||
// storePayPercentage = stores[0].PayPercentage
|
||||
// } else {
|
||||
// storePayPercentage = 70
|
||||
// }
|
||||
// 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),
|
||||
// }, ",")
|
||||
// if v.SkuShopPrice < v.SkuSalePrice {
|
||||
// price = v.SkuShopPrice * storePayPercentage
|
||||
// } else {
|
||||
// price = v.SkuSalePrice * storePayPercentage
|
||||
// }
|
||||
// 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.SkuInfo2 = skuStr1
|
||||
// v.SkuInfo = skuStr2 + ";" + skuStr3
|
||||
// orders2 = append(orders2, v)
|
||||
// } else {
|
||||
// order.SkuInfo2 += ";" + skuStr1
|
||||
// order.SkuInfo += ";" + skuStr2 + ";" + skuStr3
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// skuStr1 := strings.Join([]string{
|
||||
// utils.Int2Str(v.SkuID),
|
||||
// utils.Int2Str(v.SkuCount2),
|
||||
// utils.Int2Str(v.SkuShopPrice),
|
||||
// utils.Int2Str(v.SkuSalePrice),
|
||||
// utils.Int2Str(v.SkuEarningPrice),
|
||||
// }, ",")
|
||||
// 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 = skuStr1
|
||||
// orders2 = append(orders2, v)
|
||||
// } else {
|
||||
// order.SkuInfo += ";" + skuStr1
|
||||
// order.SkuInfo2 += ";" + skuStr1
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
if v.SkuCount2 > 0 {
|
||||
skuStr := strings.Join([]string{
|
||||
utils.Int2Str(v.SkuID),
|
||||
utils.Int2Str(v.SkuCount2),
|
||||
utils.Int2Str(v.SkuShopPrice),
|
||||
@@ -324,81 +421,10 @@ func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateS
|
||||
order = v
|
||||
v.CourierVendorName = model.VendorChineseNames[v.WaybillVendorID]
|
||||
v.Status2 = model.OrderStatusName[v.Status]
|
||||
v.SkuInfo = skuStr1
|
||||
v.SkuInfo2 = skuStr1
|
||||
v.SkuInfo = skuStr
|
||||
orders2 = append(orders2, v)
|
||||
} else {
|
||||
order.SkuInfo += ";" + skuStr1
|
||||
order.SkuInfo2 += ";" + skuStr1
|
||||
}
|
||||
} else if v.SkuCount2 > 1 {
|
||||
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.SkuInfo2 = skuStr1
|
||||
v.SkuInfo = skuStr2 + ";" + skuStr3
|
||||
orders2 = append(orders2, v)
|
||||
} else {
|
||||
order.SkuInfo2 += ";" + skuStr1
|
||||
order.SkuInfo += ";" + skuStr2 + ";" + skuStr3
|
||||
}
|
||||
}
|
||||
} else {
|
||||
skuStr1 := strings.Join([]string{
|
||||
utils.Int2Str(v.SkuID),
|
||||
utils.Int2Str(v.SkuCount2),
|
||||
utils.Int2Str(v.SkuShopPrice),
|
||||
utils.Int2Str(v.SkuSalePrice),
|
||||
utils.Int2Str(v.SkuEarningPrice),
|
||||
}, ",")
|
||||
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 = skuStr1
|
||||
orders2 = append(orders2, v)
|
||||
} else {
|
||||
order.SkuInfo += ";" + skuStr1
|
||||
order.SkuInfo2 += ";" + skuStr1
|
||||
}
|
||||
order.SkuInfo += ";" + skuStr
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user