72 lines
2.5 KiB
Go
72 lines
2.5 KiB
Go
package report
|
||
|
||
import (
|
||
"errors"
|
||
"fmt"
|
||
"math"
|
||
|
||
"git.rosy.net.cn/baseapi/utils"
|
||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||
)
|
||
|
||
var (
|
||
storeIDsExist []int
|
||
storeIDsNotExist []int
|
||
StatisticsForOrdersExists *dao.StatisticsForOrdersExists
|
||
StatisticsForOrdersExistsStore *dao.StatisticsForOrdersExists
|
||
)
|
||
|
||
func GetStatisticsReportForOrders(ctx *jxcontext.Context, storeIDs []int, fromDate string, toDate string) (statisticsReportForOrdersList []*dao.StatisticsReportForOrdersList, err error) {
|
||
storeIDsExist = storeIDsExist[0:0]
|
||
storeIDsNotExist = storeIDsNotExist[0:0]
|
||
db := dao.GetDB()
|
||
fromDateParm := utils.Str2Time(fromDate)
|
||
toDateParm := utils.Str2Time(toDate)
|
||
//若时间间隔大于3个月则不允许查询
|
||
if math.Ceil(toDateParm.Sub(fromDateParm).Hours()/24) > 92 {
|
||
return nil, errors.New(fmt.Sprintf("查询间隔时间不允许大于3个月!: 时间范围:[%v] 至 [%v]", fromDate, toDate))
|
||
}
|
||
//若入参中,不存在的店则不显示,存在的店但无订单的显示0
|
||
for _, id := range storeIDs {
|
||
StatisticsForOrdersExistsStore, err = dao.IsStoreExist(db, id)
|
||
if StatisticsForOrdersExistsStore == nil {
|
||
continue
|
||
}
|
||
StatisticsForOrdersExists, err = dao.GetStatisticsForOrdersExist(db, id, fromDateParm, toDateParm)
|
||
//若该门店存在此查询条件范围内的订单
|
||
if StatisticsForOrdersExists != nil {
|
||
storeIDsExist = append(storeIDsExist, id)
|
||
} else {
|
||
storeIDsNotExist = append(storeIDsNotExist, id)
|
||
}
|
||
}
|
||
statisticsReportForOrdersList, err = dao.GetStatisticsReportForOrders(db, storeIDsExist, fromDateParm, toDateParm)
|
||
if storeIDsNotExist != nil {
|
||
for _, v := range storeIDsNotExist {
|
||
tempStruct1 := &dao.StatisticsForOrdersExists{
|
||
StoreID: v,
|
||
}
|
||
tempStruct2 := &dao.StatisticsReportForOrdersList{
|
||
StatisticsForOrdersExists: *tempStruct1,
|
||
OrderCounts: 0,
|
||
SalePrice: 0,
|
||
ActualPayPrice: 0,
|
||
ShopPrice: 0,
|
||
DiscountMoney: 0,
|
||
DesiredFee: 0,
|
||
DistanceFreightMoney: 0,
|
||
WaybillTipMoney: 0,
|
||
TotalShopMoney: 0,
|
||
PmSubsidyMoney: 0,
|
||
EarningPrice: 0,
|
||
TotalGrossProfit: 0,
|
||
ComGrossProfit: 0,
|
||
CityManagerGrossProfit: 0,
|
||
}
|
||
statisticsReportForOrdersList = append(statisticsReportForOrdersList, tempStruct2)
|
||
}
|
||
}
|
||
return statisticsReportForOrdersList, err
|
||
}
|