diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 1eb5b3e51..7e4cccbe9 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -2132,3 +2132,15 @@ func GetTopSkusByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (skuName []*mo } return skuName, err } + +func GetTopCategorysByStoreIDs(ctx *jxcontext.Context, storeIDs []int) (skuCategory []*model.SkuCategory, err error) { + if len(storeIDs) == 0 { + return skuCategory, err + } + db := dao.GetDB() + skuCategory, err = dao.GetTopCategorysByStoreIDs(db, storeIDs) + if err != nil { + return nil, err + } + return skuCategory, err +} diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index e9a891a5d..e2c0d1686 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -671,11 +671,12 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (skuName []*model.SkuName, 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 + JOIN sku_name d ON d.id = c.name_id AND d.deleted_at = ? WHERE 1=1 ` sqlParams := []interface{}{ utils.DefaultTimeValue, + utils.DefaultTimeValue, } if len(storeIDs) > 0 { sql += " AND a.store_id in(" + GenQuestionMarks(len(storeIDs)) + ")" @@ -693,6 +694,39 @@ func GetTopSkusByStoreIDs(db *DaoDB, storeIDs []int) (skuName []*model.SkuName, return skuName, err } +func GetTopCategorysByStoreIDs(db *DaoDB, storeIDs []int) (skuCategory []*model.SkuCategory, err error) { + sql := ` + SELECT t3.* + FROM( + SELECT SUM(b.count) count,d.category_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 + ` + sqlParams := []interface{}{ + utils.DefaultTimeValue, + utils.DefaultTimeValue, + } + if len(storeIDs) > 0 { + sql += " AND a.store_id in(" + GenQuestionMarks(len(storeIDs)) + ")" + sqlParams = append(sqlParams, storeIDs) + } + sql += ` + AND b.sale_price > ? + GROUP BY d.category_id)t1 + JOIN sku_category t3 ON t1.category_id = t3.id + AND t3.level = ? + AND t3.deleted_at = ? + ORDER BY t1.count DESC + LIMIT ? + ` + sqlParams = append(sqlParams, 100, 10, 2, utils.DefaultTimeValue) + err = GetRows(db, &skuCategory, sql, sqlParams...) + return skuCategory, 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 0a6857dc7..afd4811a7 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -455,3 +455,20 @@ func (c *StoreSkuController) GetTopSkusByStoreIDs() { return retVal, "", err }) } + +// @Title 根据门店信息查找推荐分类(按商品销量) +// @Description 根据门店信息查找推荐分类(按商品销量) +// @Param token header string true "认证token" +// @Param storeIDs query string true "门店列表" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetTopCategorysByStoreIDs [get] +func (c *StoreSkuController) GetTopCategorysByStoreIDs() { + var storeIDList []int + c.callGetTopCategorysByStoreIDs(func(params *tStoreSkuGetTopCategorysByStoreIDsParams) (retVal interface{}, errCode string, err error) { + if jxutils.Strings2Objs(params.StoreIDs, &storeIDList); err == nil { + retVal, err = cms.GetTopCategorysByStoreIDs(params.Ctx, storeIDList) + } + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index efb874ecf..e82a9f5a1 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1584,6 +1584,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: "GetTopCategorysByStoreIDs", + Router: `/GetTopCategorysByStoreIDs`, + AllowHTTPMethods: []string{"get"}, + 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: "GetTopSkusByStoreIDs",