- 修复GetStoresOrderSaleInfoNew中的bug
This commit is contained in:
@@ -791,51 +791,59 @@ func (c *OrderManager) GetStoresOrderSaleInfoNew(ctx *jxcontext.Context, storeID
|
||||
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{
|
||||
StoreID: v.StoreID,
|
||||
VendorID: v.VendorID,
|
||||
Status: status,
|
||||
}
|
||||
saleInfoMap[index] = saleInfo
|
||||
}
|
||||
saleInfo.ShopPrice += v.ShopPrice * int64(v.Count)
|
||||
saleInfo.VendorPrice += v.VendorPrice * int64(v.Count)
|
||||
saleInfo.SalePrice += v.SalePrice * int64(v.Count)
|
||||
saleInfo.EarningPrice += v.EarningPrice * int64(v.Count)
|
||||
|
||||
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
|
||||
}
|
||||
orderSkuList4Afs, err := dao.GetStoreOrderSkuList4Afs(db, storeIDList, fromTime, toTime)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
orderSkuHandler := func(skuList []*dao.OrderSkuWithActualPayPrice) (orderMap map[string]*model.GoodsOrder, orderSkuMap map[string]*dao.OrderSkuWithActualPayPrice, saleInfoMap map[int64]*dao.StoresOrderSaleInfo) {
|
||||
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{
|
||||
StoreID: v.StoreID,
|
||||
VendorID: v.VendorID,
|
||||
Status: status,
|
||||
}
|
||||
saleInfoMap[index] = saleInfo
|
||||
}
|
||||
saleInfo.ShopPrice += v.ShopPrice * int64(v.Count)
|
||||
saleInfo.VendorPrice += v.VendorPrice * int64(v.Count)
|
||||
saleInfo.SalePrice += v.SalePrice * int64(v.Count)
|
||||
saleInfo.EarningPrice += v.EarningPrice * int64(v.Count)
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
return orderMap, orderSkuMap, saleInfoMap
|
||||
}
|
||||
_, _, saleInfoMap := orderSkuHandler(orderSkuList)
|
||||
orderMap, orderSkuMap, _ := orderSkuHandler(orderSkuList4Afs)
|
||||
|
||||
afsOrderMap := make(map[string]*model.GoodsOrder)
|
||||
for _, v := range afsSkuList {
|
||||
|
||||
@@ -248,6 +248,28 @@ func GetStoreOrderSkuList(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAt
|
||||
return skuList, err
|
||||
}
|
||||
|
||||
func GetStoreOrderSkuList4Afs(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAtEnd time.Time) (skuList []*OrderSkuWithActualPayPrice, err error) {
|
||||
sql := `
|
||||
SELECT t1.*,
|
||||
t2.actual_pay_price, t2.status, IF(t2.jx_store_id > 0, t2.jx_store_id, t2.store_id) store_id,
|
||||
t3.pay_percentage
|
||||
FROM order_sku t1
|
||||
JOIN goods_order t2 ON t2.vendor_order_id = t1.vendor_order_id AND t2.vendor_id = t1.vendor_id
|
||||
LEFT JOIN store t3 ON t3.id = IF(t2.jx_store_id > 0, t2.jx_store_id, t2.store_id)
|
||||
JOIN (
|
||||
SELECT t12.*
|
||||
FROM afs_order t12
|
||||
WHERE IF(t12.jx_store_id > 0, t12.jx_store_id, t12.store_id) IN (` + GenQuestionMarks(len(storeIDs)) + `) AND t12.afs_finished_at >= ? AND t12.afs_finished_at <= ?
|
||||
) t4 ON t4.vendor_order_id = t2.vendor_order_id AND t4.vendor_id = t2.vendor_id`
|
||||
sqlParams := []interface{}{
|
||||
storeIDs,
|
||||
finishedAtBegin,
|
||||
finishedAtEnd,
|
||||
}
|
||||
err = GetRows(db, &skuList, sql, sqlParams...)
|
||||
return skuList, err
|
||||
}
|
||||
|
||||
func GetStoreAfsOrderSkuList(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAtEnd time.Time, statusList []int) (afsSkuList []*model.OrderSkuFinancial, err error) {
|
||||
sql := `
|
||||
SELECT t1.*
|
||||
|
||||
Reference in New Issue
Block a user