From 0ad4d82d9c4a8a22429d84259db72260586f3743 Mon Sep 17 00:00:00 2001 From: DacongDA Date: Wed, 28 May 2025 18:31:52 +0800 Subject: [PATCH] feat: fix GetGroups() API bug when parentGroup is in next page (#3843) --- controllers/group.go | 5 +++-- object/group.go | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/controllers/group.go b/controllers/group.go index 6fedaeea..2651f770 100644 --- a/controllers/group.go +++ b/controllers/group.go @@ -15,6 +15,7 @@ package controllers import ( "encoding/json" + "fmt" "github.com/beego/beego/utils/pagination" "github.com/casdoor/casdoor/object" @@ -78,12 +79,12 @@ func (c *ApiController) GetGroups() { } for _, group := range groups { - _, ok := groupsHaveChildrenMap[group.Name] + _, ok := groupsHaveChildrenMap[group.GetId()] if ok { group.HaveChildren = true } - parent, ok := groupsHaveChildrenMap[group.ParentId] + parent, ok := groupsHaveChildrenMap[fmt.Sprintf("%s/%s", group.Owner, group.ParentId)] if ok { group.ParentName = parent.DisplayName } diff --git a/object/group.go b/object/group.go index 35f6f206..22992433 100644 --- a/object/group.go +++ b/object/group.go @@ -95,12 +95,13 @@ func GetGroupsHaveChildrenMap(groups []*Group) (map[string]*Group, error) { } } - err := ormer.Engine.Cols("owner", "name", "parent_id", "display_name").Distinct("parent_id").In("parent_id", groupIds).Find(&groupsHaveChildren) + err := ormer.Engine.Cols("owner", "name", "parent_id", "display_name").Distinct("name").In("name", groupIds).Find(&groupsHaveChildren) if err != nil { return nil, err } + for _, group := range groupsHaveChildren { - resultMap[group.ParentId] = groupMap[group.ParentId] + resultMap[group.GetId()] = group } return resultMap, nil }