刷新历史订单结算价

This commit is contained in:
苏尹岚
2019-11-08 15:23:18 +08:00
parent 622d53cb4e
commit b44f41d9d0
2 changed files with 62 additions and 23 deletions

View File

@@ -618,14 +618,52 @@ func (c *OrderManager) RefreshHistoryOrdersEarningPrice(ctx *jxcontext.Context,
orderList []*model.GoodsOrder orderList []*model.GoodsOrder
fromDateParam time.Time fromDateParam time.Time
toDateParam time.Time toDateParam time.Time
beginAt time.Time
endAt time.Time
) )
db := dao.GetDB() db := dao.GetDB()
if actID > 0 { if actID > 0 {
actList, _ := dao.QueryActs(db, actID, 0, math.MaxInt32, 0, "", 0, nil, nil, nil, 0, 0, 0, time.Time{}, time.Time{}, time.Time{}, time.Time{}) if fromDate != "" && toDate != "" {
if len(actList.Data) > 0 { fromDateParam = utils.Str2Time(fromDate)
orderList, _ = dao.QueryOrders(db, vendorOrderID, actID, vendorIDs, storeID, actList.Data[0].BeginAt, actList.Data[0].EndAt) toDateParam = utils.Str2Time(toDate)
actList, _ := dao.QueryActs(db, actID, 0, math.MaxInt32, 0, "", 0, nil, nil, nil, 0, 0, 0, time.Time{}, time.Time{}, time.Time{}, time.Time{})
if len(actList.Data) > 0 {
actBeginAt := actList.Data[0].BeginAt
actEndAt := actList.Data[0].EndAt
if fromDateParam.Sub(actBeginAt) > 0 && fromDateParam.Sub(actEndAt) > 0 {
return "", errors.New(fmt.Sprintf("结算活动有效时间范围与订单创建时间范围不一致!,活动时间范围:[%v] 至 [%v] ,订单创建时间范围 [%v] 至 [%v]", actBeginAt, actEndAt, fromDateParam, toDateParam))
}
if actBeginAt.Sub(toDateParam) > 0 && actEndAt.Sub(toDateParam) > 0 {
return "", errors.New(fmt.Sprintf("结算活动有效时间范围与订单创建时间范围不一致!,活动时间范围:[%v] 至 [%v] ,订单创建时间范围 [%v] 至 [%v]", actBeginAt, actEndAt, fromDateParam, toDateParam))
}
if fromDateParam.Sub(actBeginAt) > 0 {
beginAt = fromDateParam
if toDateParam.Sub(actEndAt) > 0 {
endAt = actEndAt
} else {
endAt = toDateParam
}
} else {
beginAt = actBeginAt
if toDateParam.Sub(actEndAt) > 0 {
endAt = actEndAt
} else {
endAt = toDateParam
}
}
orderList, _ = dao.QueryOrders(db, vendorOrderID, actID, vendorIDs, storeID, beginAt, endAt)
} else {
return "", errors.New(fmt.Sprintf("未查询到相关结算活动活动ID[%d]", actID))
}
} else if fromDate == "" && toDate == "" {
actList, _ := dao.QueryActs(db, actID, 0, math.MaxInt32, 0, "", 0, nil, nil, nil, 0, 0, 0, time.Time{}, time.Time{}, time.Time{}, time.Time{})
if len(actList.Data) > 0 {
orderList, _ = dao.QueryOrders(db, vendorOrderID, actID, vendorIDs, storeID, actList.Data[0].BeginAt, actList.Data[0].EndAt)
} else {
return "", errors.New(fmt.Sprintf("未查询到相关结算活动活动ID[%d]", actID))
}
} else { } else {
return "", errors.New(fmt.Sprintf("未查询到相关结算活动活动ID[%d]", actID)) return "", errors.New(fmt.Sprintf("若不按活动查询则间隔时间必须完整!时间范围:[%v] 至 [%v]", fromDate, toDate))
} }
} else { } else {
if fromDate != "" && toDate != "" { if fromDate != "" && toDate != "" {
@@ -635,7 +673,6 @@ func (c *OrderManager) RefreshHistoryOrdersEarningPrice(ctx *jxcontext.Context,
if math.Ceil(toDateParam.Sub(fromDateParam).Hours()/24) > 10 { if math.Ceil(toDateParam.Sub(fromDateParam).Hours()/24) > 10 {
return "", errors.New(fmt.Sprintf("查询间隔时间不允许大于10天时间范围[%v] 至 [%v]", fromDate, toDate)) return "", errors.New(fmt.Sprintf("查询间隔时间不允许大于10天时间范围[%v] 至 [%v]", fromDate, toDate))
} }
// orderList, _ := dao.QueryOrders(db, vendorOrderID, vendorIDs, storeID, fromDateParam, toDateParam)
orderList, _ = dao.QueryOrders(db, vendorOrderID, actID, vendorIDs, storeID, fromDateParam, toDateParam) orderList, _ = dao.QueryOrders(db, vendorOrderID, actID, vendorIDs, storeID, fromDateParam, toDateParam)
} else { } else {
return "", errors.New(fmt.Sprintf("若不按活动查询则间隔时间必须完整!时间范围:[%v] 至 [%v]", fromDate, toDate)) return "", errors.New(fmt.Sprintf("若不按活动查询则间隔时间必须完整!时间范围:[%v] 至 [%v]", fromDate, toDate))

View File

@@ -68,6 +68,26 @@ func QueryOrders(db *DaoDB, vendorOrderID string, actID int, vendorIDs []int, st
b.vendor_price sku_vendor_price, b.sale_price sku_sale_price, b.earning_price sku_earning_price, b.weight, b.sku_type, b.promotion_type b.vendor_price sku_vendor_price, b.sale_price sku_sale_price, b.earning_price sku_earning_price, b.weight, b.sku_type, b.promotion_type
FROM goods_order a FROM goods_order a
JOIN order_sku b ON a.vendor_order_id = b.vendor_order_id JOIN order_sku b ON a.vendor_order_id = b.vendor_order_id
`
if actID > 0 {
sql += `
JOIN ( SELECT t4.vendor_order_id, t4.vendor_id
FROM act t1
JOIN act_store_sku t2 ON t2.act_id = t1.id
JOIN order_sku t3 ON t3.sku_id = t2.sku_id
JOIN goods_order t4 ON t4.vendor_order_id = t3.vendor_order_id
AND t4.vendor_id = t3.vendor_id
AND t2.store_id = IF(t4.jx_store_id <> 0, t4.jx_store_id, t4.store_id)
AND t4.order_created_at BETWEEN t1.begin_at AND t1.end_at
WHERE t1.status = 1
AND t1.type = ?
AND t1.id = ?
GROUP BY 1,2
)s ON s.vendor_order_id = a.vendor_order_id AND s.vendor_id = a.vendor_id
`
sqlParams = append(sqlParams, model.ActSkuFake, actID)
}
sql += `
WHERE 1=1 WHERE 1=1
` `
if vendorOrderID != "" { if vendorOrderID != "" {
@@ -86,24 +106,6 @@ func QueryOrders(db *DaoDB, vendorOrderID string, actID int, vendorIDs []int, st
sql += " AND a.order_created_at BETWEEN ? and ?" sql += " AND a.order_created_at BETWEEN ? and ?"
sqlParams = append(sqlParams, fromDate, toDate) sqlParams = append(sqlParams, fromDate, toDate)
} }
if actID > 0 {
sql += `
AND a.vendor_order_id IN
( SELECT DISTINCT t4.vendor_order_id
FROM act t1
JOIN act_store_sku t2 ON t2.act_id = t1.id
JOIN order_sku t3 ON t3.sku_id = t2.sku_id
JOIN goods_order t4 ON t4.vendor_order_id = t3.vendor_order_id
AND t4.vendor_id = t3.vendor_id
AND t2.store_id = IF(t4.jx_store_id <> 0, t4.jx_store_id, t4.store_id)
AND t4.order_created_at BETWEEN t1.begin_at AND t1.end_at
WHERE t1.status = 1
AND t1.type = ?
AND t1.id = ?
)
`
sqlParams = append(sqlParams, model.ActSkuFake, actID)
}
err = GetRows(db, &orderNewList, sql, sqlParams...) err = GetRows(db, &orderNewList, sql, sqlParams...)
if len(orderNewList) > 0 { if len(orderNewList) > 0 {
orderNewMap = make(map[string][]*model.OrderSku) orderNewMap = make(map[string][]*model.OrderSku)