2022-06-21 20:50:38 +08:00
|
|
|
package feishu
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
|
|
|
|
"github.com/chyroc/lark"
|
|
|
|
)
|
|
|
|
|
2022-06-22 10:27:52 +08:00
|
|
|
// 官方文档: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/department/children
|
2022-06-21 20:50:38 +08:00
|
|
|
// 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
|
|
|
|
}
|
|
|
|
|
2022-06-22 10:27:52 +08:00
|
|
|
// 官方文档: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/find_by_department
|
2022-06-21 20:50:38 +08:00
|
|
|
// 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
|
|
|
|
}
|
|
|
|
|
2022-06-22 10:27:52 +08:00
|
|
|
// 官方文档: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/ehr/ehr-v1/employee/list
|
2022-06-21 20:50:38 +08:00
|
|
|
// 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
|
|
|
|
}
|