统计订单信息接口

This commit is contained in:
苏尹岚
2019-10-30 17:56:50 +08:00
parent 510a1b11af
commit 186a543ce0
5 changed files with 134 additions and 1 deletions

View File

@@ -0,0 +1,12 @@
package report
import (
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/model/dao"
)
func GetStatisticsReportForOrders(ctx *jxcontext.Context, storeIDs []int, fromDate string, toDate string) (statisticsReportForOrdersList []*dao.StatisticsReportForOrdersList, err error) {
db := dao.GetDB()
statisticsReportForOrdersList, err = dao.GetStatisticsReportForOrders(db, storeIDs, fromDate, toDate)
return statisticsReportForOrdersList, err
}

View File

@@ -0,0 +1,77 @@
package dao
import (
"fmt"
"strconv"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
)
type StatisticsReportForOrdersList struct {
StoreID int
orderCounts int
salePrice int64
actualPayPrice int64
shopPrice int64
discountMoney int64
desiredFee int64
distanceFreightMoney int64
waybillTipMoney int64
totalShopMoney int64
pmSubsidyMoney int64
EarningPrice int64
totalGrossProfit int64
comGrossProfit float32
cityManagerGrossProfit float32
}
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
}

31
controllers/jx_report.go Normal file
View File

@@ -0,0 +1,31 @@
package controllers
import (
"git.rosy.net.cn/jx-callback/business/jxstore/report"
"git.rosy.net.cn/jx-callback/business/jxutils"
"github.com/astaxie/beego"
)
// 统计相关API
type ReportController struct {
beego.Controller
}
// @Title 查询订单统计信息
// @Description 根据门店idlist和时间范围查询
// @Param token header string true "认证token"
// @Param storeIDs formData string true "京西门店ID列表[1,2,3]"
// @Param FromDate formData string false "开始日期包含格式2006-01-02 00:00:00)"
// @Param ToDate formData string false "结束日期包含格式2006-01-02 00:00:00)"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /StatisticsReportForOrders [post]
func (c *ReportController) StatisticsReportForOrders() {
c.callStatisticsReportForOrders(func(params *tReportStatisticsReportForOrdersParams) (retVal interface{}, errCode string, err error) {
var storeIDList []int
if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDList); err == nil {
retVal, err = report.GetStatisticsReportForOrders(params.Ctx, storeIDList, params.FromDate, params.ToDate)
}
return retVal, "", err
})
}

View File

@@ -1934,5 +1934,13 @@ func init() {
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:ReportController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:ReportController"],
beego.ControllerComments{
Method: "StatisticsReportForOrders",
Router: `/StatisticsReportForOrders`,
AllowHTTPMethods: []string{"post"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
}

View File

@@ -121,6 +121,11 @@ func init() {
&controllers.FoodRecipeController{},
),
),
beego.NSNamespace("/report",
beego.NSInclude(
&controllers.ReportController{},
),
),
)
beego.AddNamespace(ns)