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",