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