diff --git a/lib/constant/gql.go b/lib/constant/gql.go index a5c7c8b..e164453 100644 --- a/lib/constant/gql.go +++ b/lib/constant/gql.go @@ -261,3 +261,35 @@ const RoleWithUsersDocument = ` } } ` + +const GetUserDepartmentsDocument = ` + query getUserDepartments($id: String!, $orgId: String) { + user(id: $id) { + departments(orgId: $orgId) { + totalCount + list { + department { + id + orgId + name + nameI18n + description + descriptionI18n + order + code + root + depth + path + codePath + namePath + createdAt + updatedAt + children + } + isMainDepartment + joinedAt + } + } + } +} + ` diff --git a/lib/management/organization_management_client_test.go b/lib/management/organization_management_client_test.go index cc0c378..65d15cd 100644 --- a/lib/management/organization_management_client_test.go +++ b/lib/management/organization_management_client_test.go @@ -17,7 +17,7 @@ func TestClient_ExportAll(t *testing.T) { log.Println("==========导出所有组织机构数据==========") resp, _ := client.ExportAll() log.Printf("%+v\n", resp) - /*log.Println("==========获取节点成员==========") + log.Println("==========获取节点成员==========") var req = &model.ListMemberRequest{ NodeId: "60cd9d3a4b96cfff16e7e5f4", Page: 1, @@ -28,7 +28,7 @@ func TestClient_ExportAll(t *testing.T) { log.Printf("%+v\n", resp1) log.Println("==========通过 ID 获取用户信息==========") resp2, _ := client.Detail("60a6f9ad5bcccc51834950c5") - log.Printf("%+v\n", resp2)*/ + log.Printf("%+v\n", resp2) } func TestClient_GetOrganizationList(t *testing.T) { client := NewClient(userPoolId, appSecret) diff --git a/lib/management/user_management_client.go b/lib/management/user_management_client.go index 9fad7a6..f28630d 100644 --- a/lib/management/user_management_client.go +++ b/lib/management/user_management_client.go @@ -5,6 +5,7 @@ import ( "github.com/Authing/authing-go-sdk/lib/constant" "github.com/Authing/authing-go-sdk/lib/model" jsoniter "github.com/json-iterator/go" + "log" ) func (c *Client) Detail(userId string) (*model.User, error) { @@ -32,3 +33,20 @@ func (c *Client) GetUserList(request model.QueryListRequest) (*model.PaginatedUs } return &result.Data.Users, nil } + +func (c *Client) GetUserDepartments(request model.GetUserDepartmentsRequest) (*model.PaginatedDepartments, error) { + data, _ := json.Marshal(&request) + variables := make(map[string]interface{}) + json.Unmarshal(data, &variables) + b, err := c.SendHttpRequest(c.Host+constant.CoreAuthingGraphqlPath, constant.HttpMethodPost, constant.GetUserDepartmentsDocument, variables) + if err != nil { + return nil, err + } + log.Println(string(b)) + result := model.GetUserDepartmentsResponse{} + err = json.Unmarshal(b, &result) + if err != nil { + return nil, err + } + return result.Data.User.Departments, nil +} diff --git a/lib/management/user_management_client_test.go b/lib/management/user_management_client_test.go index f392a0a..392a87a 100644 --- a/lib/management/user_management_client_test.go +++ b/lib/management/user_management_client_test.go @@ -18,3 +18,14 @@ func TestClient_GetUserList(t *testing.T) { resp, _ := client.GetUserList(req) log.Printf("%+v\n", resp) } + +func TestClient_GetUserDepartments(t *testing.T) { + client := NewClient(userPoolId, appSecret) + log.Println("==========获取用户部门列表==========") + req := model.GetUserDepartmentsRequest{ + Id: "60e400c1701ea5b98dae628d", + OrgId: nil, + } + resp, _ := client.GetUserDepartments(req) + log.Printf("%+v\n", resp) +} diff --git a/lib/model/vo_model.go b/lib/model/vo_model.go index 2817cdb..af36c90 100644 --- a/lib/model/vo_model.go +++ b/lib/model/vo_model.go @@ -144,3 +144,19 @@ type OrgNode struct { Members []User `json:"members"` Children []OrgNode `json:"children"` } + +type GetUserDepartmentsRequest struct { + Id string `json:"id"` + OrgId *string `json:"orgId"` +} + +type UserDepartments struct { + Departments *PaginatedDepartments `json:"departments"` +} + +type UserDepartmentsData struct { + User UserDepartments `json:"user"` +} +type GetUserDepartmentsResponse struct { + Data UserDepartmentsData `json:"data"` +}