统计订单接口修改

This commit is contained in:
苏尹岚
2019-10-31 13:33:38 +08:00
parent 5431abaddf
commit d066a13b65
2 changed files with 90 additions and 3 deletions

View File

@@ -10,13 +10,62 @@ import (
"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))
}
statisticsReportForOrdersList, err = dao.GetStatisticsReportForOrders(db, storeIDs, fromDateParm, toDateParm)
//若入参中不存在的店则不显示存在的店但无订单的显示0
for _, id := range storeIDs {
StatisticsForOrdersExistsStore, err = dao.IsStoreExist(db, id)
if StatisticsForOrdersExistsStore == nil {
continue
}
StatisticsForOrdersExists, err = dao.GetStatisticsForOrdersExist(db, id)
//若该门店存在此查询条件范围内的订单
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
}

View File

@@ -8,9 +8,13 @@ import (
"git.rosy.net.cn/jx-callback/business/model"
)
type StatisticsForOrdersExists struct {
StoreID int `orm:"column(storeID)" json:"storeID"`
}
type StatisticsReportForOrdersList struct {
StoreID int `orm:"column(storeID)" json:"storeID"`
OrderCounts int `orm:"column(orderCounts)" json:"orderCounts"` //单数
StatisticsForOrdersExists
OrderCounts int `orm:"column(orderCounts)" json:"orderCounts"` //单数
SalePrice int `orm:"column(salePrice)" json:"salePrice"` //GMV售卖价
ActualPayPrice int `orm:"column(actualPayPrice)" json:"actualPayPrice"` //实付
ShopPrice int `orm:"column(shopPrice)" json:"shopPrice"` //京西
@@ -26,6 +30,40 @@ type StatisticsReportForOrdersList struct {
CityManagerGrossProfit float32 `orm:"column(cityManagerGrossProfit)" json:"cityManagerGrossProfit"`
}
//是否存在这个门店
func IsStoreExist(db *DaoDB, storeID int) (StatisticsForOrdersExists *StatisticsForOrdersExists, err error) {
sql := `
SELECT *
FROM store
WHERE id = ?
`
sqlParams := []interface{}{}
sqlParams = append(sqlParams, storeID)
if err = GetRow(db, &StatisticsForOrdersExists, sql, sqlParams...); err == nil {
return StatisticsForOrdersExists, nil
}
return nil, err
}
//查询条件内是否存在订单
func GetStatisticsForOrdersExist(db *DaoDB, storeID int) (StatisticsForOrdersExists *StatisticsForOrdersExists, err error) {
sql := `
SELECT store_id
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.store_id = ?
GROUP BY a.store_id
`
sqlParams := []interface{}{}
sqlParams = append(sqlParams, storeID)
if err = GetRow(db, &StatisticsForOrdersExists, sql, sqlParams...); err == nil {
return StatisticsForOrdersExists, nil
}
return nil, err
}
//查询统计订单信息
func GetStatisticsReportForOrders(db *DaoDB, storeIDs []int, fromDate time.Time, toDate time.Time) (statisticsReportForOrdersList []*StatisticsReportForOrdersList, err error) {
//排除已取消的订单
status := strconv.Itoa(model.OrderStatusCanceled)