+ GetStoresOrderSaleInfoNew
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user