diff --git a/server/product/internal/logic/gettagproductlistlogic.go b/server/product/internal/logic/gettagproductlistlogic.go index 1dc76dd1..fe68de25 100644 --- a/server/product/internal/logic/gettagproductlistlogic.go +++ b/server/product/internal/logic/gettagproductlistlogic.go @@ -129,10 +129,11 @@ func (l *GetTagProductListLogic) GetTagProductList(req *types.GetTagProductListR return resp.SetStatusAddMessage(basic.CodeServiceErr, "failed to deal with tag data") } //组装等级从属关系 - rspTagList, TotalCategoryProduct := l.organizationLevelRelation(minLevel, mapTagLevel, productList, mapTagProduct) + rspTagList, mapTagList, TotalCategoryProduct := l.organizationLevelRelation(minLevel, mapTagLevel, productList, mapTagProduct) return resp.SetStatusWithMessage(basic.CodeOK, "success", types.GetTagProductListRsp{ TotalCategoryProduct: TotalCategoryProduct, TagList: rspTagList, + TagMap: mapTagList, }) } @@ -320,8 +321,9 @@ func (l *GetTagProductListLogic) dealWithTagMenuData(req dealWithTagMenuDataReq) } // 组织等级从属关系 -func (l *GetTagProductListLogic) organizationLevelRelation(minLevel int, mapTagLevel map[string]*types.TagItem, productList []gmodel.FsProduct, mapTagProduct map[int64]types.TagProduct) (rspTagList []types.TagItem, productCount int) { +func (l *GetTagProductListLogic) organizationLevelRelation(minLevel int, mapTagLevel map[string]*types.TagItem, productList []gmodel.FsProduct, mapTagProduct map[int64]types.TagProduct) (rspTagList []types.TagItem, mapTagList map[int64]types.TagItem, productCount int) { mapTop := make(map[string]struct{}) + mapTagList = make(map[int64]types.TagItem) //设置归属关系 for prefix, tagItem := range mapTagLevel { prefixSlice := strings.Split(prefix, "/") @@ -377,12 +379,13 @@ func (l *GetTagProductListLogic) organizationLevelRelation(minLevel int, mapTagL } productCount += len(mapTagLevel[prefix].TagProductList) rspList = append(rspList, *mapTagLevel[prefix]) + mapTagList[mapTagLevel[prefix].TypeId] = *mapTagLevel[prefix] } //排序 sort.SliceStable(rspList, func(i, j int) bool { return rspList[i].Sort < rspList[j].Sort }) - return rspList, productCount + return rspList, mapTagList, productCount } // 获取某个tag的直属产品 diff --git a/server/product/internal/types/types.go b/server/product/internal/types/types.go index ff998d33..fa2a8e91 100644 --- a/server/product/internal/types/types.go +++ b/server/product/internal/types/types.go @@ -35,8 +35,9 @@ type GetTagProductListReq struct { } type GetTagProductListRsp struct { - TotalCategoryProduct int `json:"total_category_product"` - TagList []TagItem `json:"tag_list"` + TotalCategoryProduct int `json:"total_category_product"` + TagList []TagItem `json:"tag_list"` + TagMap interface{} `json:"tag_map"` } type TagItem struct { diff --git a/server_api/product.api b/server_api/product.api index 899f8b21..9b61723b 100644 --- a/server_api/product.api +++ b/server_api/product.api @@ -77,8 +77,9 @@ type GetTagProductListReq { WithProduct bool `form:"with_product,optional"` //是否携带分类下的产品 } type GetTagProductListRsp { - TotalCategoryProduct int `json:"total_category_product"` - TagList []TagItem `json:"tag_list"` + TotalCategoryProduct int `json:"total_category_product"` + TagList []TagItem `json:"tag_list"` + TagMap interface{} `json:"tag_map"` } type TagItem { TypeName string `json:"type_name"`