ldap-1-backend/public/client/feishu/feishu.go

80 lines
1.6 KiB
Go
Raw Normal View History

2022-06-21 20:50:38 +08:00
package feishu
import (
"context"
"github.com/chyroc/lark"
)
// GetAllDepts 获取所有部门
func GetAllDepts() (depts []*lark.GetDepartmentListRespItem, err error) {
var (
fetchChild bool = true
pageSize int64 = 50
)
req := lark.GetDepartmentListReq{
FetchChild: &fetchChild,
PageSize: &pageSize,
DepartmentID: "0"}
for {
res, _, err := InitFeiShuClient().Contact.GetDepartmentList(context.TODO(), &req)
if err != nil {
return nil, err
}
depts = append(depts, res.Items...)
if !res.HasMore {
break
}
req.PageToken = &res.PageToken
}
return
}
// GetAllUsers 获取所有员工信息
func GetAllUsers() (users []*lark.GetUserListRespItem, err error) {
var (
pageSize int64 = 50
)
depts, err := GetAllDepts()
if err != nil {
return nil, err
}
for _, dept := range depts {
req := lark.GetUserListReq{
PageSize: &pageSize,
PageToken: new(string),
DepartmentID: dept.OpenDepartmentID,
}
for {
res, _, err := InitFeiShuClient().Contact.GetUserList(context.Background(), &req)
if err != nil {
return nil, err
}
users = append(users, res.Items...)
if !res.HasMore {
break
}
req.PageToken = &res.PageToken
}
}
return
}
// GetLeaveUserIds 获取离职人员ID列表
func GetLeaveUserIds() ([]string, error) {
var ids []string
users, _, err := InitFeiShuClient().EHR.GetEHREmployeeList(context.TODO(), &lark.GetEHREmployeeListReq{
Status: []int64{5},
UserIDType: lark.IDTypePtr(lark.IDTypeUnionID), // 只查询unionID
})
if err != nil {
return nil, err
}
for _, user := range users.Items {
ids = append(ids, user.UserID)
}
return ids, nil
}