From 8f8419b8c17305239fa2050158331d88ae2dd86f Mon Sep 17 00:00:00 2001 From: laodaming <11058467+laudamine@user.noreply.gitee.com> Date: Wed, 11 Oct 2023 11:26:11 +0800 Subject: [PATCH] fix --- .../internal/logic/gettagproductlistlogic.go | 33 +++++++------------ 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/server/product/internal/logic/gettagproductlistlogic.go b/server/product/internal/logic/gettagproductlistlogic.go index 07ad23ab..afb6c5aa 100644 --- a/server/product/internal/logic/gettagproductlistlogic.go +++ b/server/product/internal/logic/gettagproductlistlogic.go @@ -132,7 +132,7 @@ 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) + rspTagList, TotalCategoryProduct := l.organizationLevelRelation(minLevel, mapTagLevel) return resp.SetStatusWithMessage(basic.CodeOK, "success", types.GetTagProductListRsp{ TotalCategoryProduct: TotalCategoryProduct, TagList: rspTagList, @@ -308,7 +308,7 @@ func (l *GetTagProductListLogic) dealWithTagMenuData(req dealWithTagMenuDataReq) }) //tag中产品 for _, tmpProduct := range productListRsp { - tagTem.TagProductList = append(tagTem.TagProductList, tmpProduct.ProductId) + tagTem.TagProductList = append(tagTem.TagProductList, tmpProduct) } } //加入分类 @@ -318,7 +318,7 @@ func (l *GetTagProductListLogic) dealWithTagMenuData(req dealWithTagMenuDataReq) } // 组织等级从属关系 -func (l *GetTagProductListLogic) organizationLevelRelation(minLevel int, mapTagLevel map[string]*types.TagItem, productList []gmodel.FsProduct) (rspTagList []types.TagItem, productCount int) { +func (l *GetTagProductListLogic) organizationLevelRelation(minLevel int, mapTagLevel map[string]*types.TagItem) (rspTagList []types.TagItem, productCount int) { mapTop := make(map[string]struct{}) //设置归属关系 for prefix, tagItem := range mapTagLevel { @@ -335,33 +335,22 @@ func (l *GetTagProductListLogic) organizationLevelRelation(minLevel int, mapTagL continue } parent.ChildTagList = append(parent.ChildTagList, tagItem) - //排序子菜单 + //排序 sort.SliceStable(parent.ChildTagList, func(i, j int) bool { return parent.ChildTagList[i].Sort < parent.ChildTagList[j].Sort }) mapTagLevel[parentPrefix] = parent } - //父类聚合子类所有产品 + //把子类的产品列表变成产品id列表并且把产品列表都放到最顶级父级中 for _, v := range mapTagLevel { if _, ok := mapTop[v.LevelPrefix]; ok { continue } - //顶部需要初始化 - v.TagProductList = make([]interface{}, 0, 50) - mapTypeId := make(map[int64]struct{}) - for _, v2 := range mapTagLevel { - //包含主路径,则属于该类型 - if strings.Contains(v2.LevelPrefix, v.LevelPrefix) { - mapTypeId[v2.TypeId] = struct{}{} - } - } - //循环产品放入 - for _, p := range productList { - _, ok := mapTypeId[*p.Type] - if !ok { - continue - } - mapTagLevel[v.LevelPrefix].TagProductList = append(mapTagLevel[v.LevelPrefix].TagProductList, p) + topPrefixSlic := strings.Split(v.LevelPrefix, "/")[:minLevel] + topPrefix := strings.Join(topPrefixSlic, "/") + for k, tmpProduct := range v.TagProductList { + v.TagProductList[k] = tmpProduct.(types.TagProduct).ProductId + mapTagLevel[topPrefix].TagProductList = append(mapTagLevel[topPrefix].TagProductList, tmpProduct) } } //最终值提取最高级别那一层出来 @@ -374,7 +363,7 @@ func (l *GetTagProductListLogic) organizationLevelRelation(minLevel int, mapTagL productCount += len(mapTagLevel[prefix].TagProductList) rspList = append(rspList, *mapTagLevel[prefix]) } - //排序主菜单 + //排序 sort.SliceStable(rspList, func(i, j int) bool { return rspList[i].Sort < rspList[j].Sort })