- 修复GetStoresOrderSaleInfoNew中的bug

This commit is contained in:
gazebo
2019-08-20 14:07:31 +08:00
parent bcd8eba95e
commit 6bd473839c
2 changed files with 74 additions and 44 deletions

View File

@@ -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 {

View File

@@ -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.*