Files
jx-callback/business/model/dao/report.go
2019-10-30 18:27:34 +08:00

78 lines
3.1 KiB
Go

package dao
import (
"fmt"
"strconv"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
)
type StatisticsReportForOrdersList struct {
storeID int `orm:"size(255)" json:"storeID"`
orderCounts int `orm:"size(255)" json:"orderCounts"`
salePrice int64 `orm:"size(255)" json:"salePrice"`
actualPayPrice int64 `orm:"size(255)" json:"actualPayPrice"`
shopPrice int64 `orm:"size(255)" json:"shopPrice"`
discountMoney int64 `orm:"size(255)" json:"discountMoney"`
desiredFee int64 `orm:"size(255)" json:"desiredFee"`
distanceFreightMoney int64 `orm:"size(255)" json:"distanceFreightMoney"`
waybillTipMoney int64 `orm:"size(255)" json:"waybillTipMoney"`
totalShopMoney int64 `orm:"size(255)" json:"totalShopMoney"`
pmSubsidyMoney int64 `orm:"size(255)" json:"pmSubsidyMoney"`
earningPrice int64 `orm:"size(255)" json:"earningPrice"`
totalGrossProfit int64 `orm:"size(255)" json:"totalGrossProfit"`
comGrossProfit float32 `orm:"size(255)" json:"comGrossProfit"`
cityManagerGrossProfit float32 `orm:"size(255)" json:"cityManagerGrossProfit"`
}
func GetStatisticsReportForOrders(db *DaoDB, storeIDs []int, fromDate string, toDate string) (statisticsReportForOrdersList []*StatisticsReportForOrdersList, err error) {
//排除已取消的订单
status := strconv.Itoa(model.OrderStatusCanceled)
sql := `
SELECT s.*,
(totalGrossProfit*c.jx_brand_fee_factor)/(c.jx_brand_fee_factor+market_add_fee_factor) comGrossProfit,
(totalGrossProfit*c.market_add_fee_factor)/(c.jx_brand_fee_factor+market_add_fee_factor) cityManagerGrossProfit
FROM store c,(
SELECT
a.store_id storeID,
count(*) orderCounts,
sum(sale_price) salePrice,
sum(actual_pay_price) actualPayPrice,
sum(shop_price) shopPrice,
sum(discount_money) discountMoney,
sum(desired_fee) desiredFee,
sum(distance_freight_money) distanceFreightMoney,
sum(waybill_tip_money) waybillTipMoney,
sum(total_shop_money) totalShopMoney,
sum(pm_subsidy_money) pmSubsidyMoney,
sum(earning_price) EarningPrice,
sum(total_shop_money-earning_price-desired_fee-distance_freight_money-waybill_tip_money-80) totalGrossProfit
FROM goods_order a LEFT JOIN waybill b on if(a.waybill_vendor_id = -1,a.vendor_order_id,a.vendor_waybill_id) = b.vendor_waybill_id
WHERE a.status != ` + status + `
`
sqlParams := []interface{}{}
if fromDate != "" {
sql += "AND a.order_created_at >= date_format(?,'YYYY-MM-DD HH:MM:SS')"
sqlParams = append(sqlParams, utils.Str2Time(fromDate))
}
if toDate != "" {
sql += "AND a.order_created_at <= date_format(?,'YYYY-MM-DD HH:MM:SS')"
sqlParams = append(sqlParams, utils.Str2Time(toDate))
}
if len(storeIDs) > 0 {
sql += "AND a.store_id in(" + GenQuestionMarks(len(storeIDs)) + ")"
sqlParams = append(sqlParams, storeIDs)
}
sql += `
GROUP BY a.store_id
)s
WHERE s.storeID = c.id
`
fmt.Println(sql)
if err = GetRows(db, &statisticsReportForOrdersList, sql, sqlParams...); err == nil {
return statisticsReportForOrdersList, nil
}
return nil, err
}