@@ -8,6 +8,10 @@ import (
"git.rosy.net.cn/jx-callback/business/model"
)
const (
AfsOrderStatus = - 1
)
type StoresOrderSaleInfo struct {
StoreID int ` orm:"column(store_id)" json:"storeID" `
VendorID int ` orm:"column(vendor_id)" json:"vendorID" `
@@ -122,6 +126,7 @@ func GetAfsOrders(db *DaoDB, vendorID int, vendorOrderID, afsOrderID string) (af
return afsOrderList , err
}
// 时间范围是订单完成时间
func GetStoresOrderSaleInfo ( db * DaoDB , storeIDList [ ] int , fromTime time . Time , toTime time . Time , statusList [ ] int ) ( saleInfoList [ ] * StoresOrderSaleInfo , err error ) {
if utils . IsTimeZero ( fromTime ) {
return nil , fmt . Errorf ( "查询订单信息必须指定起始时间" )
@@ -135,13 +140,13 @@ func GetStoresOrderSaleInfo(db *DaoDB, storeIDList []int, fromTime time.Time, to
// 用int64类型去取float型的数据库返回值, 会取不到
sql := fmt . Sprintf ( `
SELECT IF(t1.jx_store_id > 0, t1.jx_store_id, t1.store_id) store_id, t1.vendor_id, IF(t1.status < ?, 0, t1.status) status,
COUNT(*) count, SUM(t1.shop_price) shop_price, SUM(t1.vendor_price) vendor_price, SUM(t1.sale_price) sale_price, SUM(t1.actual_pay_price) actual_pay_price,
CAST(SUM(IF(t1.earning_price <> 0, t1.earning_price, IF(t1.shop_price <> 0 && t1.shop_price < t1.sale_price, t1.shop_price, t1.sale_price) * IF(t5.pay_percentage > 0, t5.pay_percentage, %d) / 100)) AS SIGNED) earning_price
FROM goods_order t1
LEFT JOIN store t5 ON t5.id = IF(t1.jx_store_id <> 0, t1.jx_store_id, t1.store_id)
WHERE t1.order_finished_at >= ? AND t1.order_finished_at <= ?
` , model . DefaultEarningPricePercentage )
SELECT IF(t1.jx_store_id > 0, t1.jx_store_id, t1.store_id) store_id, t1.vendor_id, IF(t1.status < ?, 0, t1.status) status,
COUNT(*) count, SUM(t1.shop_price) shop_price, SUM(t1.vendor_price) vendor_price, SUM(t1.sale_price) sale_price, SUM(t1.actual_pay_price) actual_pay_price,
CAST(SUM(IF(t1.earning_price <> 0, t1.earning_price, IF(t1.shop_price <> 0 && t1.shop_price < t1.sale_price, t1.shop_price, t1.sale_price) * IF(t5.pay_percentage > 0, t5.pay_percentage, %d) / 100)) AS SIGNED) earning_price
FROM goods_order t1
LEFT JOIN store t5 ON t5.id = IF(t1.jx_store_id <> 0, t1.jx_store_id, t1.store_id)
WHERE t1.order_finished_at >= ? AND t1.order_finished_at <= ?
` , model . DefaultEarningPricePercentage )
sqlParams := [ ] interface { } {
model . OrderStatusEndBegin ,
fromTime ,
@@ -156,8 +161,29 @@ func GetStoresOrderSaleInfo(db *DaoDB, storeIDList []int, fromTime time.Time, to
sqlParams = append ( sqlParams , statusList )
}
sql += `
GROUP BY 1,2,3
ORDER BY 1,2,3 `
GROUP BY 1,2,3`
sql += fmt . Sprintf ( `
UNION
SELECT IF(t0.jx_store_id > 0, t0.jx_store_id, t0.store_id) store_id, t0.vendor_id, -1 status,
COUNT(*) count, SUM(t1.shop_price) shop_price, SUM(t1.vendor_price) vendor_price, SUM(t1.sale_price) sale_price, 0 actual_pay_price,
CAST(SUM(IF(t1.earning_price <> 0, t1.earning_price, IF(t1.shop_price <> 0 && t1.shop_price < t1.sale_price, t1.shop_price, t1.sale_price) * IF(t5.pay_percentage > 0, t5.pay_percentage, %d) / 100)) AS SIGNED) earning_price
FROM afs_order t0
JOIN order_sku_financial t2 ON t2.afs_order_id = t0.afs_order_id AND t2.vendor_id = t0.vendor_id AND t2.is_afs_order = 1
JOIN order_sku t1 ON t1.vendor_order_id = t2.vendor_order_id AND t1.vendor_id = t2.vendor_id AND t1.sku_id = t2.sku_id
LEFT JOIN store t5 ON t5.id = IF(t0.jx_store_id <> 0, t0.jx_store_id, t0.store_id)
WHERE t0.afs_finished_at >= ? AND t0.afs_finished_at <= ? ` , model . DefaultEarningPricePercentage )
sqlParams = append ( sqlParams , [ ] interface { } {
fromTime ,
toTime ,
} )
if len ( storeIDList ) > 0 {
sql += " AND IF(t0.jx_store_id > 0, t0.jx_store_id, t0.store_id) IN (" + GenQuestionMarks ( len ( storeIDList ) ) + ")"
sqlParams = append ( sqlParams , storeIDList )
}
sql += `
GROUP BY 1,2,3 `
sql += " ORDER BY 1,2,3"
err = GetRows ( db , & saleInfoList , sql , sqlParams ... )
return saleInfoList , err
}