Closed Pepperpotato closed 1 year ago
您好 @Pepperpotato👋,我已收到您的反馈,我将安排时间考虑您提交的信息并进行回复。-- 这条信息是由自动回复的机器人发出的。
Hello @Pepperpotato. I have received your feedback, and I will arrange time to consider the information you submitted and reply. -- This message is sent by an automatic reply robot.
查看源码后不知道是不是这里的问题导致的: GetAllUsers方法中第206行 `
for _, deptid := range deptids {
req := lark.GetUserListReq{
PageSize: &pageSize,
PageToken: &pageToken,
// DepartmentIDType: &deptidtype,
DepartmentID: deptid,
}
for {
res, _, err := InitFeiShuClient().Contact.GetUserList(context.Background(), &req)
if err != nil {
return nil, err
}
for _, user := range res.Items {
ele := make(map[string]interface{})
ele["name"] = user.Name
ele["custom_name_pinyin"] = tools.ConvertToPinYin(user.Name)
ele["union_id"] = user.UnionID
ele["user_id"] = user.UserID
ele["open_id"] = user.OpenID
ele["en_name"] = user.EnName
ele["nickname"] = user.Nickname
if user.Email != "" {
ele["custom_nickname_email"] = strings.Split(user.Email, "@")[0]
}
if user.EnterpriseEmail != "" {
ele["custom_nickname_enterprise_email"] = strings.Split(user.EnterpriseEmail, "@")[0]
}
ele["email"] = user.Email
ele["mobile"] = user.Mobile
ele["gender"] = user.Gender
ele["avatar"] = user.Avatar.AvatarOrigin
ele["city"] = user.City
ele["country"] = user.Country
ele["work_station"] = user.WorkStation
ele["join_time"] = user.JoinTime
ele["employee_no"] = user.EmployeeNo
ele["enterprise_email"] = user.EnterpriseEmail
ele["job_title"] = user.JobTitle
// 部门ids
var sourceDeptIds []string
for _, deptId := range user.DepartmentIDs {
sourceDeptIds = append(sourceDeptIds, fmt.Sprintf("%s_%s", config.Conf.FeiShu.Flag, deptId))
}
ele["department_ids"] = sourceDeptIds
ret = append(ret, ele)
}
if !res.HasMore {
// 如果没有更多消息了,应该将pageToken重新赋值为"", 但是这里直接break出去了,导致没有赋值成功
// 进而导致后边查询下一个部门的时候仍然用的之前的pageToken,导致获取的人员为空
break
}
pageToken = res.PageToken
}
}‘
有两种可能。
1.获取的数据有问题,可通过这个脚本进行验证: https://github.com/eryajf/third-tools/tree/main/feishu
关于第一点: 我本地就是用的这个脚本去验证的。没有问题,能获取到全量的用户数据
关于第二点:多次点击同步了,但还是只同步了一个部门。
我尝试修改源码之后问题解决了
看起来是个bug,是否有兴趣提交一个PR
可以的 我稍后来提交下。
您使用的版本? | Your usage version?
docker-compose在本地快速拉起的测试环境,并修改了config.yml中飞书的相关配置
您使用的场景? | Your usage scenarios?
在用户管理中,点击从飞书同步所有用户的信息
您做了什么操作? | What did you do?
首先按照文档,录入分组字段动态关联和用户字段动态关联。同时也获取了有权限的飞书AppID和AppSecret。 点击从飞书同步到用户信息
您遇到了什么问题? | What are your problems?
点击同步后只同步了一个部门的信息,其他部门的用户没有同步到。使用文档中提供的demo用例是没有这个问题的。
您期望的结果是怎样的? | What is your expected outcome?
希望同步到所有的部门的所有人