func()

in user-center-wecom/company.go [67:99]


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

	resp, err := resty.New().R().Get("https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=" + token)
	if err != nil {
		return fmt.Errorf("get department list failed: %w", err)
	}
	if resp.StatusCode() != 200 {
		return fmt.Errorf("get department list failed: %s", resp.String())
	}

	log.Debugf("get department success: %s", resp.String())

	department := gjson.Get(resp.String(), "department").String()
	var departments []*Department
	err = json.Unmarshal([]byte(department), &departments)
	if err != nil {
		return fmt.Errorf("unmarshal department failed: %w", err)
	}

	departmentMapping := make(map[int]*Department)
	for _, d := range departments {
		departmentMapping[d.Id] = d
	}
	c.DepartmentMapping = departmentMapping
	log.Debugf("get department list: %d", len(departments))
	return nil
}