From d4d20f4ddfbf83a821692e6eeeb63c335b8fb1e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 6 Dec 2019 15:26:03 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=8E=A8=E8=8D=90=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 01a9b2b94..c2c9164dd 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -707,19 +707,22 @@ func GetTopCategorysByStoreIDs(db *DaoDB, storeIDs []int) (skuCategory []*model. JOIN order_sku b ON a.vendor_order_id = b.vendor_order_id JOIN sku c ON b.sku_id = c.id AND c.deleted_at = ? JOIN sku_name d ON d.id = c.name_id AND d.deleted_at = ? - WHERE 1=1 - AND a.order_created_at BETWEEN ? and NOW() + JOIN store e ON e.id = a.store_id + JOIN (SELECT city_code FROM store WHERE 1=1 ` sqlParams := []interface{}{ utils.DefaultTimeValue, utils.DefaultTimeValue, - time.Now().AddDate(0, -1, 0), } if len(storeIDs) > 0 { - sql += " AND a.store_id in(" + GenQuestionMarks(len(storeIDs)) + ")" + sql += " AND id IN(" + GenQuestionMarks(len(storeIDs)) + ")" sqlParams = append(sqlParams, storeIDs) } + sql += ` + )t6 ON t6.city_code = e.city_code + WHERE 1=1 + AND a.order_created_at BETWEEN ? and NOW() AND b.sale_price > ? GROUP BY d.category_id)t1 JOIN sku_category t3 ON t1.category_id = t3.id @@ -731,7 +734,7 @@ func GetTopCategorysByStoreIDs(db *DaoDB, storeIDs []int) (skuCategory []*model. Order by t4.count DESC)t5 LIMIT ? ` - sqlParams = append(sqlParams, 100, 2, utils.DefaultTimeValue, 1, 10) + sqlParams = append(sqlParams, time.Now().AddDate(0, -1, 0), 100, 2, utils.DefaultTimeValue, 1, 10) err = GetRows(db, &skuCategory, sql, sqlParams...) return skuCategory, err } From f1b01506d355ff7d54b7b89fb7c23329e4b11f80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 6 Dec 2019 15:44:08 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=8E=A8=E8=8D=90=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 0f36ca619..5c8b74d69 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -660,15 +660,14 @@ func GetStoreSkusByNameIDs(db *DaoDB, storeIDs []int, nameID int) (skuList []*St return skuList, err } -func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (skuName []*model.SkuName, err error) { +func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (skuAndName []*model.SkuAndName, err error) { sql := ` - SELECT t3.* + SELECT t3.*, t4.name, t4.unit, t4.prefix FROM( - SELECT SUM(b.count) count,d.id + SELECT SUM(b.count) count,c.id FROM goods_order a JOIN order_sku b ON a.vendor_order_id = b.vendor_order_id JOIN sku c ON b.sku_id = c.id AND c.deleted_at = ? - JOIN sku_name d ON d.id = c.name_id AND d.deleted_at = ? WHERE 1=1 AND a.order_created_at BETWEEN ? and NOW() ` @@ -683,14 +682,15 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (skuName []*model.SkuName, } sql += ` AND b.sale_price > ? - GROUP BY d.id)t1 - JOIN sku_name t3 ON t1.id = t3.id + GROUP BY c.id)t1 + JOIN sku t3 ON t1.id = t3.id + JOIN sku_name t4 ON t3.name_id = t4.id ORDER BY t1.count DESC LIMIT ? ` sqlParams = append(sqlParams, 100, 30) - err = GetRows(db, &skuName, sql, sqlParams...) - return skuName, err + err = GetRows(db, &skuAndName, sql, sqlParams...) + return skuAndName, err } func GetTopCategorysByStoreIDs(db *DaoDB, storeIDs []int) (skuCategory []*model.SkuCategory, err error) { From c3e3be933cd97f1f82de3aa7c712c038ecc8ef30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 6 Dec 2019 15:47:38 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E6=8E=A8=E8=8D=90=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index a9c28e7cf..95e0f9efe 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -2161,16 +2161,16 @@ func ReCalculateJxPrice(ctx *jxcontext.Context, storeIDs []int) (err error) { return err } -func GetTopSkusByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (skuName []*model.SkuName, err error) { +func GetTopSkusByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (skuAndName []*model.SkuAndName, err error) { if len(storeIDs) == 0 { - return skuName, err + return skuAndName, err } db := dao.GetDB() - skuName, err = dao.GetTopSkusByStoreIDs(db, storeIDs) + skuAndName, err = dao.GetTopSkusByStoreIDs(db, storeIDs) if err != nil { return nil, err } - return skuName, err + return skuAndName, err } func GetTopCategorysByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (skuCategory []*model.SkuCategory, err error) { From 5d556203fee4bcebbc728f5ce4e20f3db686ef35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 6 Dec 2019 15:49:48 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E6=8E=A8=E8=8D=90=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 5c8b74d69..685a703f7 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -672,12 +672,11 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (skuAndName []*model.SkuAnd AND a.order_created_at BETWEEN ? and NOW() ` sqlParams := []interface{}{ - utils.DefaultTimeValue, utils.DefaultTimeValue, time.Now().AddDate(0, -1, 0), } if len(storeIDs) > 0 { - sql += " AND a.store_id in(" + GenQuestionMarks(len(storeIDs)) + ")" + sql += " AND a.store_id IN(" + GenQuestionMarks(len(storeIDs)) + ")" sqlParams = append(sqlParams, storeIDs) } sql += ` From 0a6f7d6777e5cd9fe22073feace1480b7d4d79b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 6 Dec 2019 17:21:42 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=97=A8=E5=BA=97?= =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E8=AF=84=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 14 +++++++++ business/model/dao/store_sku.go | 42 ++++++++++++++++++++++++--- controllers/cms_store_sku.go | 37 +++++++++++++++++++++++ routers/commentsRouter_controllers.go | 20 ++++++++++++- 4 files changed, 108 insertions(+), 5 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 95e0f9efe..3da799820 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -2184,3 +2184,17 @@ func GetTopCategorysByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (skuCateg } return skuCategory, err } + +func GetStorePriceScore(ctx *jxcontext.Context, storeIDs []int, snapDate string, offset, pageSize int) (storeTotalScoreEx *model.StoreTotalScoreEx, err error) { + var snapDateParam time.Time + db := dao.GetDB() + if snapDate != "" { + snapDateParam = utils.Str2Time(snapDate) + } + storeTotalScore, totalCount, err := dao.GetStorePriceScore(db, storeIDs, snapDateParam, offset, pageSize) + storeTotalScoreEx = &model.StoreTotalScoreEx{ + StoreTotalScoreList: storeTotalScore, + TotalCount: totalCount, + } + return storeTotalScoreEx, err +} diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 685a703f7..721269180 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -662,16 +662,18 @@ func GetStoreSkusByNameIDs(db *DaoDB, storeIDs []int, nameID int) (skuList []*St func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (skuAndName []*model.SkuAndName, err error) { sql := ` - SELECT t3.*, t4.name, t4.unit, t4.prefix + SELECT t3.* FROM( SELECT SUM(b.count) count,c.id FROM goods_order a JOIN order_sku b ON a.vendor_order_id = b.vendor_order_id JOIN sku c ON b.sku_id = c.id AND c.deleted_at = ? + JOIN sku_name d ON d.id = c.name_id AND d.deleted_at = ? WHERE 1=1 AND a.order_created_at BETWEEN ? and NOW() ` sqlParams := []interface{}{ + utils.DefaultTimeValue, utils.DefaultTimeValue, time.Now().AddDate(0, -1, 0), } @@ -681,9 +683,8 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (skuAndName []*model.SkuAnd } sql += ` AND b.sale_price > ? - GROUP BY c.id)t1 - JOIN sku t3 ON t1.id = t3.id - JOIN sku_name t4 ON t3.name_id = t4.id + GROUP BY d.id)t1 + JOIN sku_name t3 ON t1.id = t3.id ORDER BY t1.count DESC LIMIT ? ` @@ -736,6 +737,39 @@ func GetTopCategorysByStoreIDs(db *DaoDB, storeIDs []int) (skuCategory []*model. return skuCategory, err } +func GetStorePriceScore(db *DaoDB, storeIDs []int, snapDate time.Time, offset, pageSize int) (storeTotalScore []*model.StoreTotalScore, totalCount int, err error) { + sql := ` + SELECT SQL_CALC_FOUND_ROWS + t1.* FROM( + SELECT c.store_id,d.name store_name,e.name city_name,ROUND(count(c.price/100 <= a.mid_price or NULL)/count(*)*100,2) store_score + FROM price_refer_snapshot a + JOIN store_sku_bind c ON c.sku_id = a.sku_id AND c.status = 1 AND c.deleted_at = ? + JOIN store d ON c.store_id = d.id AND d.city_code = a.city_code AND d.deleted_at = ? AND d.status !=-2 + JOIN place e ON e.code = d.city_code + WHERE 1=1 + ` + sqlParams := []interface{}{ + utils.DefaultTimeValue, + utils.DefaultTimeValue, + } + if !utils.IsTimeZero(snapDate) { + sql += " AND a.snapshot_at = ?" + sqlParams = append(sqlParams, snapDate) + } + sql += ` + GROUP BY c.store_id)t1 + ORDER BY t1.store_score + LIMIT ? OFFSET ? + ` + sqlParams = append(sqlParams, pageSize, offset) + Begin(db) + defer Commit(db) + if err = GetRows(db, &storeTotalScore, sql, sqlParams...); err == nil { + totalCount = GetLastTotalRowCount(db) + } + return storeTotalScore, totalCount, err +} + func SetStoreSkuBindVendorPrice(storeSkuBind *model.StoreSkuBind, vendorID int, vendorPrice int) { switch vendorID { case model.VendorIDJD: diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 87beff991..e3a98b18d 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -481,3 +481,40 @@ func (c *StoreSkuController) GetTopCategorysByStoreIDs() { return retVal, "", err }) } + +// @Title 根据门店刷新中位价 +// @Description 根据门店刷新中位价 +// @Param token header string false "认证token" +// @Param storeIDs query string true "门店列表" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /RefershStoreSkusMidPrice [put] +func (c *StoreSkuController) RefershStoreSkusMidPrice() { + var storeIDList []int + c.callRefershStoreSkusMidPrice(func(params *tStoreSkuRefershStoreSkusMidPriceParams) (retVal interface{}, errCode string, err error) { + if jxutils.Strings2Objs(params.StoreIDs, &storeIDList); err == nil { + // cms.RefershStoreSkusMidPrice() + } + return retVal, "", err + }) +} + +// @Title 查询门店价格评分 +// @Description 查询门店价格评分 +// @Param token header string true "认证token" +// @Param storeIDs query string false "门店列表" +// @Param snapDate query string true "时间,默认当天(格式2006-01-02" +// @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" +// @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetStorePriceScore [post] +func (c *StoreSkuController) GetStorePriceScore() { + var storeIDList []int + c.callGetStorePriceScore(func(params *tStoreSkuGetStorePriceScoreParams) (retVal interface{}, errCode string, err error) { + if jxutils.Strings2Objs(params.StoreIDs, &storeIDList); err == nil { + retVal, err = cms.GetStorePriceScore(params.Ctx, storeIDList, params.SnapDate,params.Offset, params.PageSize) + } + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index d969eb1f5..56edc6b6c 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1075,7 +1075,7 @@ func init() { beego.ControllerComments{ Method: "StatisticsReportForStoreSkusPrice", Router: `/StatisticsReportForStoreSkusPrice`, - AllowHTTPMethods: []string{"post"}, + AllowHTTPMethods: []string{"Get"}, MethodParams: param.Make(), Filters: nil, Params: nil}) @@ -1566,6 +1566,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], + beego.ControllerComments{ + Method: "GetStorePriceScore", + Router: `/GetStorePriceScore`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], beego.ControllerComments{ Method: "GetStoreSkus", @@ -1620,6 +1629,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], + beego.ControllerComments{ + Method: "RefershStoreSkusMidPrice", + Router: `/RefershStoreSkusMidPrice`, + AllowHTTPMethods: []string{"put"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], beego.ControllerComments{ Method: "RefreshStoresSkuByVendor", From 06cea8a0474fe8d195d80b59bdac0f756f9b4b44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 6 Dec 2019 18:12:01 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E9=97=A8=E5=BA=97=E4=BB=B7=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 14 ++++++++++ business/jxstore/cms/store_sku.go | 14 +++------- business/model/dao/store.go | 37 +++++++++++++++++++++++++++ business/model/dao/store_sku.go | 35 ++++++++++--------------- controllers/cms_store.go | 20 +++++++++++++++ controllers/cms_store_sku.go | 24 ++--------------- routers/commentsRouter_controllers.go | 18 ++++++------- 7 files changed, 98 insertions(+), 64 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 23e37331c..824a80f65 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -2412,3 +2412,17 @@ func StoreStatus2Chinese(status int) (str string) { return "未知的营业状态" } } + +func GetStorePriceScore(ctx *jxcontext.Context, storeIDs []int, snapDate string, offset, pageSize int) (storeTotalScoreEx *model.StoreTotalScoreEx, err error) { + var snapDateParam time.Time + db := dao.GetDB() + if snapDate != "" { + snapDateParam = utils.Str2Time(snapDate) + } + storeTotalScore, totalCount, err := dao.GetStorePriceScore(db, storeIDs, snapDateParam, offset, pageSize) + storeTotalScoreEx = &model.StoreTotalScoreEx{ + StoreTotalScoreList: storeTotalScore, + TotalCount: totalCount, + } + return storeTotalScoreEx, err +} diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 3da799820..14fcdcb9b 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -2185,16 +2185,8 @@ func GetTopCategorysByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (skuCateg return skuCategory, err } -func GetStorePriceScore(ctx *jxcontext.Context, storeIDs []int, snapDate string, offset, pageSize int) (storeTotalScoreEx *model.StoreTotalScoreEx, err error) { - var snapDateParam time.Time +func RefershStoreSkusMidPrice(ctx *jxcontext.Context, storeIDs []int) (err error) { db := dao.GetDB() - if snapDate != "" { - snapDateParam = utils.Str2Time(snapDate) - } - storeTotalScore, totalCount, err := dao.GetStorePriceScore(db, storeIDs, snapDateParam, offset, pageSize) - storeTotalScoreEx = &model.StoreTotalScoreEx{ - StoreTotalScoreList: storeTotalScore, - TotalCount: totalCount, - } - return storeTotalScoreEx, err + _, err = dao.RefershStoreSkusMidPrice(db, storeIDs) + return err } diff --git a/business/model/dao/store.go b/business/model/dao/store.go index 9398250b3..5f3758c9a 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -462,3 +462,40 @@ func GetStoreMapsListWithoutDisabled(db *DaoDB, vendorIDs []int, status int) (st err = GetRows(db, &storeMapList, sql, sqlParams...) return storeMapList, err } + +func GetStorePriceScore(db *DaoDB, storeIDs []int, snapDate time.Time, offset, pageSize int) (storeTotalScore []*model.StoreTotalScore, totalCount int, err error) { + sql := ` + SELECT SQL_CALC_FOUND_ROWS + t1.* FROM( + SELECT c.store_id,d.name store_name,e.name city_name,ROUND(count(c.price/100 <= a.mid_price or NULL)/count(*)*100,2) store_score + FROM price_refer_snapshot a + JOIN store_sku_bind c ON c.sku_id = a.sku_id AND c.status = 1 AND c.deleted_at = ? + JOIN store d ON c.store_id = d.id AND d.city_code = a.city_code AND d.deleted_at = ? AND d.status !=-2 + JOIN place e ON e.code = d.city_code + WHERE 1=1 + ` + sqlParams := []interface{}{ + utils.DefaultTimeValue, + utils.DefaultTimeValue, + } + if len(storeIDs) > 0 { + sql += " AND c.store_id IN(" + GenQuestionMarks(len(storeIDs)) + ")" + sqlParams = append(sqlParams, storeIDs) + } + if !utils.IsTimeZero(snapDate) { + sql += " AND a.snapshot_at = ?" + sqlParams = append(sqlParams, snapDate) + } + sql += ` + GROUP BY c.store_id)t1 + ORDER BY t1.store_score + LIMIT ? OFFSET ? + ` + sqlParams = append(sqlParams, pageSize, offset) + Begin(db) + defer Commit(db) + if err = GetRows(db, &storeTotalScore, sql, sqlParams...); err == nil { + totalCount = GetLastTotalRowCount(db) + } + return storeTotalScore, totalCount, err +} diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 721269180..861691882 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -737,37 +737,28 @@ func GetTopCategorysByStoreIDs(db *DaoDB, storeIDs []int) (skuCategory []*model. return skuCategory, err } -func GetStorePriceScore(db *DaoDB, storeIDs []int, snapDate time.Time, offset, pageSize int) (storeTotalScore []*model.StoreTotalScore, totalCount int, err error) { +func RefershStoreSkusMidPrice(db *DaoDB, storeIDs []int) (count int64, err error) { sql := ` - SELECT SQL_CALC_FOUND_ROWS - t1.* FROM( - SELECT c.store_id,d.name store_name,e.name city_name,ROUND(count(c.price/100 <= a.mid_price or NULL)/count(*)*100,2) store_score - FROM price_refer_snapshot a - JOIN store_sku_bind c ON c.sku_id = a.sku_id AND c.status = 1 AND c.deleted_at = ? - JOIN store d ON c.store_id = d.id AND d.city_code = a.city_code AND d.deleted_at = ? AND d.status !=-2 - JOIN place e ON e.code = d.city_code + UPDATE store_sku_bind a + JOIN store d ON d.id = a.store_id + JOIN price_refer_snapshot b ON a.sku_id = b.sku_id AND b.snapshot_at = ? AND d.city_code = b.city_code + SET a.price = b.mid_price*100 WHERE 1=1 ` sqlParams := []interface{}{ utils.DefaultTimeValue, - utils.DefaultTimeValue, } - if !utils.IsTimeZero(snapDate) { - sql += " AND a.snapshot_at = ?" - sqlParams = append(sqlParams, snapDate) + if len(storeIDs) > 0 { + sql += " AND a.store_id IN (" + GenQuestionMarks(len(storeIDs)) + ")" + sqlParams = append(sqlParams, storeIDs) } sql += ` - GROUP BY c.store_id)t1 - ORDER BY t1.store_score - LIMIT ? OFFSET ? + AND a.price > b.mid_price*100 + AND a.deleted_at = ? + AND a.status = ? ` - sqlParams = append(sqlParams, pageSize, offset) - Begin(db) - defer Commit(db) - if err = GetRows(db, &storeTotalScore, sql, sqlParams...); err == nil { - totalCount = GetLastTotalRowCount(db) - } - return storeTotalScore, totalCount, err + sqlParams = append(sqlParams, utils.DefaultTimeValue, model.SkuStatusNormal) + return ExecuteSQL(db, sql, sqlParams) } func SetStoreSkuBindVendorPrice(storeSkuBind *model.StoreSkuBind, vendorID int, vendorPrice int) { diff --git a/controllers/cms_store.go b/controllers/cms_store.go index 0275bfffa..f0349d685 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -583,3 +583,23 @@ func (c *StoreController) GetVendorStoreInfo() { return retVal, "", err }) } + +// @Title 查询门店价格评分 +// @Description 查询门店价格评分 +// @Param token header string true "认证token" +// @Param storeIDs query string false "门店列表" +// @Param snapDate query string true "时间,默认当天(格式2006-01-02" +// @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" +// @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetStorePriceScore [post] +func (c *StoreController) GetStorePriceScore() { + var storeIDList []int + c.callGetStorePriceScore(func(params *tStoreGetStorePriceScoreParams) (retVal interface{}, errCode string, err error) { + if jxutils.Strings2Objs(params.StoreIDs, &storeIDList); err == nil { + retVal, err = cms.GetStorePriceScore(params.Ctx, storeIDList, params.SnapDate, params.Offset, params.PageSize) + } + return retVal, "", err + }) +} diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index e3a98b18d..12b1d39db 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -484,7 +484,7 @@ func (c *StoreSkuController) GetTopCategorysByStoreIDs() { // @Title 根据门店刷新中位价 // @Description 根据门店刷新中位价 -// @Param token header string false "认证token" +// @Param token header string true "认证token" // @Param storeIDs query string true "门店列表" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult @@ -493,27 +493,7 @@ func (c *StoreSkuController) RefershStoreSkusMidPrice() { var storeIDList []int c.callRefershStoreSkusMidPrice(func(params *tStoreSkuRefershStoreSkusMidPriceParams) (retVal interface{}, errCode string, err error) { if jxutils.Strings2Objs(params.StoreIDs, &storeIDList); err == nil { - // cms.RefershStoreSkusMidPrice() - } - return retVal, "", err - }) -} - -// @Title 查询门店价格评分 -// @Description 查询门店价格评分 -// @Param token header string true "认证token" -// @Param storeIDs query string false "门店列表" -// @Param snapDate query string true "时间,默认当天(格式2006-01-02" -// @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" -// @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" -// @Success 200 {object} controllers.CallResult -// @Failure 200 {object} controllers.CallResult -// @router /GetStorePriceScore [post] -func (c *StoreSkuController) GetStorePriceScore() { - var storeIDList []int - c.callGetStorePriceScore(func(params *tStoreSkuGetStorePriceScoreParams) (retVal interface{}, errCode string, err error) { - if jxutils.Strings2Objs(params.StoreIDs, &storeIDList); err == nil { - retVal, err = cms.GetStorePriceScore(params.Ctx, storeIDList, params.SnapDate,params.Offset, params.PageSize) + err = cms.RefershStoreSkusMidPrice(params.Ctx, storeIDList) } return retVal, "", err }) diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index d933bbb22..28b60b40c 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1386,6 +1386,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], + beego.ControllerComments{ + Method: "GetStorePriceScore", + Router: `/GetStorePriceScore`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], beego.ControllerComments{ Method: "GetStoreTotalScoreList", @@ -1566,15 +1575,6 @@ func init() { Filters: nil, Params: nil}) - beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], - beego.ControllerComments{ - Method: "GetStorePriceScore", - Router: `/GetStorePriceScore`, - AllowHTTPMethods: []string{"post"}, - MethodParams: param.Make(), - Filters: nil, - Params: nil}) - beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], beego.ControllerComments{ Method: "GetStoreSkus", From 071d30efe7363d9cd5ee85c1cb3c4cdf4fb3561c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 6 Dec 2019 18:33:50 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E9=97=A8=E5=BA=97=E4=BB=B7=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 10 +++++----- business/model/dao/store.go | 18 +++++++++++++++--- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 824a80f65..2260b1726 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -2413,16 +2413,16 @@ func StoreStatus2Chinese(status int) (str string) { } } -func GetStorePriceScore(ctx *jxcontext.Context, storeIDs []int, snapDate string, offset, pageSize int) (storeTotalScoreEx *model.StoreTotalScoreEx, err error) { +func GetStorePriceScore(ctx *jxcontext.Context, storeIDs []int, snapDate string, offset, pageSize int) (storePriceScoreEx *dao.StorePriceScoreEx, err error) { var snapDateParam time.Time db := dao.GetDB() if snapDate != "" { snapDateParam = utils.Str2Time(snapDate) } - storeTotalScore, totalCount, err := dao.GetStorePriceScore(db, storeIDs, snapDateParam, offset, pageSize) - storeTotalScoreEx = &model.StoreTotalScoreEx{ - StoreTotalScoreList: storeTotalScore, + storePriceScore, totalCount, err := dao.GetStorePriceScore(db, storeIDs, snapDateParam, offset, pageSize) + storePriceScoreEx = &dao.StorePriceScoreEx{ + StorePriceScoreList: storePriceScore, TotalCount: totalCount, } - return storeTotalScoreEx, err + return storePriceScoreEx, err } diff --git a/business/model/dao/store.go b/business/model/dao/store.go index 5f3758c9a..ab018cca7 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -56,6 +56,18 @@ type CityBrankBranch struct { PayeeBankCode string `orm:"size(8)" json:"payeeBankCode"` // 开户行代码 } +type StorePriceScore struct { + StoreID int `json:"storeID"` + StoreName string `json:"storeName"` + StoreScore float64 `json:"storeScore"` + CityName string `json:"cityName"` +} + +type StorePriceScoreEx struct { + StorePriceScoreList []*StorePriceScore `json:"storePriceScoreList"` + TotalCount int `json:"totalCount"` +} + func (s *StoreDetail) GetPricePerentage(price int) (pricePercentage int) { return pricePercentage } @@ -463,7 +475,7 @@ func GetStoreMapsListWithoutDisabled(db *DaoDB, vendorIDs []int, status int) (st return storeMapList, err } -func GetStorePriceScore(db *DaoDB, storeIDs []int, snapDate time.Time, offset, pageSize int) (storeTotalScore []*model.StoreTotalScore, totalCount int, err error) { +func GetStorePriceScore(db *DaoDB, storeIDs []int, snapDate time.Time, offset, pageSize int) (StorePriceScore []*StorePriceScore, totalCount int, err error) { sql := ` SELECT SQL_CALC_FOUND_ROWS t1.* FROM( @@ -494,8 +506,8 @@ func GetStorePriceScore(db *DaoDB, storeIDs []int, snapDate time.Time, offset, p sqlParams = append(sqlParams, pageSize, offset) Begin(db) defer Commit(db) - if err = GetRows(db, &storeTotalScore, sql, sqlParams...); err == nil { + if err = GetRows(db, &StorePriceScore, sql, sqlParams...); err == nil { totalCount = GetLastTotalRowCount(db) } - return storeTotalScore, totalCount, err + return StorePriceScore, totalCount, err }