+ GetStoresOrderSaleInfoNew

This commit is contained in:
gazebo
2019-08-20 10:59:47 +08:00
parent 73b62ca1a9
commit 7a91faec5b
3 changed files with 168 additions and 1 deletions

View File

@@ -775,7 +775,105 @@ func (c *OrderManager) GetOrdersFinancial(ctx *jxcontext.Context, fromDateStr, t
}
func (c *OrderManager) GetStoresOrderSaleInfo(ctx *jxcontext.Context, storeIDList []int, fromTime time.Time, toTime time.Time, statusList []int) (saleInfoList []*dao.StoresOrderSaleInfo, err error) {
return dao.GetStoresOrderSaleInfo(dao.GetDB(), storeIDList, fromTime, toTime, statusList)
if globals.IsProductEnv() {
return dao.GetStoresOrderSaleInfo(dao.GetDB(), storeIDList, fromTime, toTime, statusList)
}
return c.GetStoresOrderSaleInfoNew(ctx, storeIDList, fromTime, toTime, statusList)
}
func (c *OrderManager) GetStoresOrderSaleInfoNew(ctx *jxcontext.Context, storeIDList []int, fromTime time.Time, toTime time.Time, statusList []int) (saleInfoList []*dao.StoresOrderSaleInfo, err error) {
db := dao.GetDB()
orderSkuList, err := dao.GetStoreOrderSkuList(db, storeIDList, fromTime, toTime, statusList)
if err != nil {
return nil, err
}
afsSkuList, err := dao.GetStoreAfsOrderSkuList(db, storeIDList, fromTime, toTime, []int{model.AfsOrderStatusFinished})
if err != nil {
return nil, err
}
orderMap := make(map[string]*model.GoodsOrder)
orderSkuMap := make(map[string]*dao.OrderSkuWithActualPayPrice)
saleInfoMap := make(map[int64]*dao.StoresOrderSaleInfo)
for _, v := range orderSkuList {
if v.EarningPrice == 0 {
v.EarningPrice = jxutils.CaculateSkuEarningPrice(v.ShopPrice, v.SalePrice, v.PayPercentage)
}
status := v.Status
if status < model.OrderStatusEndBegin {
status = 0
}
index := jxutils.Combine2Int(v.StoreID, v.VendorID)*1000 + int64(status)
saleInfo := saleInfoMap[index]
if saleInfo == nil {
saleInfo = &dao.StoresOrderSaleInfo{}
saleInfoMap[index] = saleInfo
}
saleInfo.ShopPrice += v.ShopPrice
saleInfo.VendorPrice += v.VendorPrice
saleInfo.SalePrice += v.SalePrice
saleInfo.EarningPrice += v.EarningPrice
universalOrderID := jxutils.ComposeUniversalOrderID(v.VendorOrderID, v.VendorID)
if orderMap[universalOrderID] == nil {
orderMap[universalOrderID] = &model.GoodsOrder{
StoreID: v.StoreID,
VendorID: v.VendorID,
ActualPayPrice: v.ActualPayPrice,
}
saleInfo.ActualPayPrice += v.ActualPayPrice
saleInfo.Count++
}
orderMap[universalOrderID].SkuCount += v.Count
universalOrderSkuID := universalOrderID + "/" + utils.Int2Str(jxutils.GetSkuIDFromOrderSku(&v.OrderSku))
if orderSkuMap[universalOrderSkuID] == nil {
orderSkuMap[universalOrderSkuID] = v
}
}
afsOrderMap := make(map[string]*model.GoodsOrder)
for _, v := range afsSkuList {
universalOrderID := jxutils.ComposeUniversalOrderID(v.VendorOrderID, v.VendorID)
order := afsOrderMap[universalOrderID]
if order == nil {
order = &model.GoodsOrder{
StoreID: v.JxStoreID,
VendorID: v.VendorID,
}
if order.StoreID == 0 {
order.StoreID = v.StoreID
}
afsOrderMap[universalOrderID] = order
}
order.SkuCount += v.Count
universalOrderSkuID := universalOrderID + "/" + utils.Int2Str(jxutils.GetSkuIDFromOrderSkuFinancial(v))
if orderSku := orderSkuMap[universalOrderSkuID]; orderSku != nil {
order.EarningPrice += orderSku.EarningPrice
}
}
for universalOrderID, v := range afsOrderMap {
if orderMap[universalOrderID] != nil {
if orderMap[universalOrderID].SkuCount == v.SkuCount {
v.EarningPrice = orderMap[universalOrderID].ActualPayPrice
}
}
index := jxutils.Combine2Int(v.StoreID, v.VendorID)*1000 + -1
saleInfo := saleInfoMap[index]
if saleInfo == nil {
saleInfo = &dao.StoresOrderSaleInfo{}
saleInfoMap[index] = saleInfo
}
saleInfo.ActualPayPrice += v.ActualPayPrice
saleInfo.Count += v.SkuCount
}
for _, v := range saleInfoMap {
saleInfoList = append(saleInfoList, v)
}
return saleInfoList, err
}
func (c *OrderManager) GetAfsOrders(ctx *jxcontext.Context, keyword, afsOrderID, vendorOrderID string, vendorIDList, appealTypeList, storeIDList, statusList []int, fromTime, toTime time.Time, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {