func()

in user-center-wecom/company.go [101:137]


func (c *Company) ListUser() (err error) {
	token, err := c.Work.GetOauth().GetAccessToken()
	if err != nil {
		return fmt.Errorf("get access token failed: %w", err)
	}
	log.Debugf("get access token success")

	for _, department := range c.DepartmentMapping {
		log.Debugf("try to get department user list: %d %s", department.Id, department.Name)
		resp, err := resty.New().R().Get(fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?department_id=%d&access_token=%s",
			department.Id, token))
		if err != nil {
			log.Errorf("get department user list failed: %v", err)
			continue
		}
		if gjson.Get(resp.String(), "errcode").Int() != 0 {
			log.Errorf("get department user list failed: %v", resp.String())
			continue
		}

		userList := gjson.Get(resp.String(), "userlist").String()
		var employees []*Employee
		err = json.Unmarshal([]byte(userList), &employees)
		if err != nil {
			log.Errorf("unmarshal userList failed: %w", err)
			continue
		}
		log.Debugf("get department user list: %d", len(employees))
		for _, employee := range employees {
			c.EmployeeMapping[employee.Userid] = employee
			log.Debugf(employee.Userid)
		}
	}

	log.Debugf("all user amount: %d", len(c.EmployeeMapping))
	return nil
}