- 修复GetStoresOrderSaleInfoNew中的bug
This commit is contained in:
@@ -791,51 +791,59 @@ func (c *OrderManager) GetStoresOrderSaleInfoNew(ctx *jxcontext.Context, storeID
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
orderSkuList4Afs, err := dao.GetStoreOrderSkuList4Afs(db, storeIDList, fromTime, toTime)
|
||||||
orderMap := make(map[string]*model.GoodsOrder)
|
if err != nil {
|
||||||
orderSkuMap := make(map[string]*dao.OrderSkuWithActualPayPrice)
|
return nil, err
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
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)
|
afsOrderMap := make(map[string]*model.GoodsOrder)
|
||||||
for _, v := range afsSkuList {
|
for _, v := range afsSkuList {
|
||||||
|
|||||||
@@ -248,6 +248,28 @@ func GetStoreOrderSkuList(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAt
|
|||||||
return skuList, err
|
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) {
|
func GetStoreAfsOrderSkuList(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAtEnd time.Time, statusList []int) (afsSkuList []*model.OrderSkuFinancial, err error) {
|
||||||
sql := `
|
sql := `
|
||||||
SELECT t1.*
|
SELECT t1.*
|
||||||
|
|||||||
Reference in New Issue
Block a user