From 5d1f128e1d2705f8a83e520d1bc768eb18e8130f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 9 Dec 2019 09:31:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 10 +++++----- business/jxstore/report/report.go | 13 +++++++++++-- business/model/dao/report.go | 20 ++++++++++++++------ controllers/jx_report.go | 7 +++++-- 4 files changed, 35 insertions(+), 15 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 1fe0be060..42cc2abbc 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -2413,18 +2413,18 @@ func StoreStatus2Chinese(status int) (str string) { } } -func GetStorePriceScore(ctx *jxcontext.Context, storeIDs []int, fromScore, toScore, sort int, snapDate string, offset, pageSize int) (storePriceScoreEx *dao.StorePriceScoreEx, err error) { +func GetStorePriceScore(ctx *jxcontext.Context, storeIDs []int, fromScore, toScore, sort int, snapDate string, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) { var snapDateParam time.Time db := dao.GetDB() if snapDate != "" { snapDateParam = utils.Str2Time(snapDate) } storePriceScore, totalCount, err := dao.GetStorePriceScore(db, storeIDs, fromScore, toScore, sort, snapDateParam, offset, pageSize) - storePriceScoreEx = &dao.StorePriceScoreEx{ - StorePriceScoreList: storePriceScore, - TotalCount: totalCount, + pagedInfo = &model.PagedInfo{ + Data: storePriceScore, + TotalCount: totalCount, } - return storePriceScoreEx, err + return pagedInfo, err } func CreateStorePriceScore(ctx *jxcontext.Context) (err error) { diff --git a/business/jxstore/report/report.go b/business/jxstore/report/report.go index 99a35c526..5032713c4 100644 --- a/business/jxstore/report/report.go +++ b/business/jxstore/report/report.go @@ -36,9 +36,18 @@ func GetStatisticsReportForAfsOrders(ctx *jxcontext.Context, storeIDs []int, fro return statisticsReportForOrdersList, err } -func StatisticsReportForStoreSkusPrice(ctx *jxcontext.Context, cityCodes, skuIDs []int) (priceRefer []*model.PriceReferSnapshot, err error) { +func StatisticsReportForStoreSkusPrice(ctx *jxcontext.Context, cityCodes, skuIDs []int, snapDate string, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) { + var snapDateParam time.Time db := dao.GetDB() - return dao.GetPriceReferSnapshot(db, cityCodes, skuIDs) + if snapDate != "" { + snapDateParam = utils.Str2Time(snapDate) + } + priceReferSnapshot, totalCount, err := dao.GetPriceReferSnapshot(db, cityCodes, skuIDs, snapDateParam, offset, pageSize) + pagedInfo = &model.PagedInfo{ + Data: priceReferSnapshot, + TotalCount: totalCount, + } + return } func BeginSavePriceRefer(ctx *jxcontext.Context, cityCodes, skuIDs []int) (err error) { diff --git a/business/model/dao/report.go b/business/model/dao/report.go index 00552e06a..e0b4b2cab 100644 --- a/business/model/dao/report.go +++ b/business/model/dao/report.go @@ -234,12 +234,12 @@ func GetStatisticsReportForStoreSkusPrice(db *DaoDB, cityCodes, skuIDs []int) (p return nil, err } -func GetPriceReferSnapshot(db *DaoDB, cityCodes, skuIDs []int) (priceReferSnapshot []*model.PriceReferSnapshot, err error) { +func GetPriceReferSnapshot(db *DaoDB, cityCodes, skuIDs []int, snapDate time.Time, offset, pageSize int) (priceReferSnapshot []*model.PriceReferSnapshot, totalCount int, err error) { sql := ` - SELECT * + SELECT SQL_CALC_FOUND_ROWS * FROM price_refer_snapshot WHERE 1=1 - AND delete_at = ? + AND deleted_at = ? ` sqlParams := []interface{}{ utils.DefaultTimeValue, @@ -252,8 +252,16 @@ func GetPriceReferSnapshot(db *DaoDB, cityCodes, skuIDs []int) (priceReferSnapsh sql += " AND city_code IN (" + GenQuestionMarks(len(cityCodes)) + ")" sqlParams = append(sqlParams, cityCodes) } - if err = GetRows(db, &priceReferSnapshot, sql, sqlParams...); err == nil { - return priceReferSnapshot, nil + if !utils.IsTimeZero(snapDate) { + sql += " AND snapshot_at = ?" + sqlParams = append(sqlParams, snapDate) } - return nil, err + sql += " LIMIT ? OFFSET ?" + sqlParams = append(sqlParams, pageSize, offset) + Begin(db) + defer Commit(db) + if err = GetRows(db, &priceReferSnapshot, sql, sqlParams...); err == nil { + totalCount = GetLastTotalRowCount(db) + } + return priceReferSnapshot, totalCount, err } diff --git a/controllers/jx_report.go b/controllers/jx_report.go index 7d81093c4..f604dbfc9 100644 --- a/controllers/jx_report.go +++ b/controllers/jx_report.go @@ -53,7 +53,10 @@ func (c *ReportController) StatisticsReportForAfsOrders() { // @Description 查询京西门店商品价格统计相关信息 // @Param token header string true "认证token" // @Param cityCodes formData string true "城市ID列表[1,2,3]" -// @Param skuIDs formData string true "skuID列表[1,2,3]" +// @Param skuIDs formData string false "skuID列表[1,2,3]" +// @Param snapDate formData string true "某天的参考价格 格式:2006-01-02,默认前一天" +// @Param offset formData int false "门店列表起始序号(以0开始,缺省为0)" +// @Param pageSize formData int false "门店列表页大小(缺省为50,-1表示全部)" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /StatisticsReportForStoreSkusPrice [post] @@ -61,7 +64,7 @@ func (c *ReportController) StatisticsReportForStoreSkusPrice() { c.callStatisticsReportForStoreSkusPrice(func(params *tReportStatisticsReportForStoreSkusPriceParams) (retVal interface{}, errCode string, err error) { var cityCodeList, skuIDList []int if err = jxutils.Strings2Objs(params.CityCodes, &cityCodeList, params.SkuIDs, &skuIDList); err == nil { - retVal, err = report.StatisticsReportForStoreSkusPrice(params.Ctx, cityCodeList, skuIDList) + retVal, err = report.StatisticsReportForStoreSkusPrice(params.Ctx, cityCodeList, skuIDList, params.SnapDate, params.Offset, params.PageSize) } return retVal, "", err })