|
@@ -0,0 +1,230 @@
|
|
|
|
|
+package addresslist
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "fmt"
|
|
|
|
|
+
|
|
|
|
|
+ "github.com/silenceper/wechat/v2/util"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+const (
|
|
|
|
|
+ // getPermListURL 获取应用的可见范围
|
|
|
|
|
+ getPermListURL = "https://qyapi.weixin.qq.com/cgi-bin/linkedcorp/agent/get_perm_list?access_token=%s"
|
|
|
|
|
+ // getLinkedCorpUserURL 获取互联企业成员详细信息
|
|
|
|
|
+ getLinkedCorpUserURL = "https://qyapi.weixin.qq.com/cgi-bin/linkedcorp/user/get?access_token=%s"
|
|
|
|
|
+ // linkedCorpSimpleListURL 获取互联企业部门成员
|
|
|
|
|
+ linkedCorpSimpleListURL = "https://qyapi.weixin.qq.com/cgi-bin/linkedcorp/user/simplelist?access_token=%s"
|
|
|
|
|
+ // linkedCorpUserListURL 获取互联企业部门成员详情
|
|
|
|
|
+ linkedCorpUserListURL = "https://qyapi.weixin.qq.com/cgi-bin/linkedcorp/user/list?access_token=%s"
|
|
|
|
|
+ // linkedCorpDepartmentListURL 获取互联企业部门列表
|
|
|
|
|
+ linkedCorpDepartmentListURL = "https://qyapi.weixin.qq.com/cgi-bin/linkedcorp/department/list?access_token=%s"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+// GetPermListResponse 获取应用的可见范围响应
|
|
|
|
|
+type GetPermListResponse struct {
|
|
|
|
|
+ util.CommonError
|
|
|
|
|
+ UserIDs []string `json:"userids"`
|
|
|
|
|
+ DepartmentIDs []string `json:"department_ids"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// GetPermList 获取应用的可见范围
|
|
|
|
|
+// see https://developer.work.weixin.qq.com/document/path/93172
|
|
|
|
|
+func (r *Client) GetPermList() (*GetPermListResponse, error) {
|
|
|
|
|
+ var (
|
|
|
|
|
+ accessToken string
|
|
|
|
|
+ err error
|
|
|
|
|
+ )
|
|
|
|
|
+ if accessToken, err = r.GetAccessToken(); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ var response []byte
|
|
|
|
|
+ if response, err = util.HTTPPost(fmt.Sprintf(getPermListURL, accessToken), ""); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ result := &GetPermListResponse{}
|
|
|
|
|
+ if err = util.DecodeWithError(response, result, "GetPermList"); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ return result, nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// GetLinkedCorpUserRequest 获取互联企业成员详细信息请求
|
|
|
|
|
+type GetLinkedCorpUserRequest struct {
|
|
|
|
|
+ UserID string `json:"userid"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// GetLinkedCorpUserResponse 获取互联企业成员详细信息响应
|
|
|
|
|
+type GetLinkedCorpUserResponse struct {
|
|
|
|
|
+ util.CommonError
|
|
|
|
|
+ UserInfo LinkedCorpUserInfo `json:"user_info"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// LinkedCorpUserInfo 互联企业成员详细信息
|
|
|
|
|
+type LinkedCorpUserInfo struct {
|
|
|
|
|
+ UserID string `json:"userid"`
|
|
|
|
|
+ Name string `json:"name"`
|
|
|
|
|
+ Department []string `json:"department"`
|
|
|
|
|
+ Mobile string `json:"mobile"`
|
|
|
|
|
+ Telephone string `json:"telephone"`
|
|
|
|
|
+ Email string `json:"email"`
|
|
|
|
|
+ Position string `json:"position"`
|
|
|
|
|
+ CorpID string `json:"corpid"`
|
|
|
|
|
+ Extattr Extattr `json:"extattr"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Extattr 互联企业成员详细信息扩展属性
|
|
|
|
|
+type Extattr struct {
|
|
|
|
|
+ Attrs []ExtattrItem `json:"attrs"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// ExtattrItem 互联企业成员详细信息扩展属性条目
|
|
|
|
|
+type ExtattrItem struct {
|
|
|
|
|
+ Name string `json:"name"`
|
|
|
|
|
+ Value string `json:"value,omitempty"`
|
|
|
|
|
+ Type int `json:"type"`
|
|
|
|
|
+ Text ExtattrItemText `json:"text,omitempty"`
|
|
|
|
|
+ Web ExtattrItemWeb `json:"web,omitempty"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// ExtattrItemText 互联企业成员详细信息自定义属性(文本)
|
|
|
|
|
+type ExtattrItemText struct {
|
|
|
|
|
+ Value string `json:"value"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// ExtattrItemWeb 互联企业成员详细信息自定义属性(网页)
|
|
|
|
|
+type ExtattrItemWeb struct {
|
|
|
|
|
+ URL string `json:"url"`
|
|
|
|
|
+ Title string `json:"title"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// GetLinkedCorpUser 获取互联企业成员详细信息
|
|
|
|
|
+// see https://developer.work.weixin.qq.com/document/path/93171
|
|
|
|
|
+func (r *Client) GetLinkedCorpUser(req *GetLinkedCorpUserRequest) (*GetLinkedCorpUserResponse, error) {
|
|
|
|
|
+ var (
|
|
|
|
|
+ accessToken string
|
|
|
|
|
+ err error
|
|
|
|
|
+ )
|
|
|
|
|
+ if accessToken, err = r.GetAccessToken(); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ var response []byte
|
|
|
|
|
+ if response, err = util.PostJSON(fmt.Sprintf(getLinkedCorpUserURL, accessToken), req); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ result := &GetLinkedCorpUserResponse{}
|
|
|
|
|
+ if err = util.DecodeWithError(response, result, "GetLinkedCorpUser"); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ return result, nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// LinkedCorpSimpleListRequest 获取互联企业部门成员请求
|
|
|
|
|
+type LinkedCorpSimpleListRequest struct {
|
|
|
|
|
+ DepartmentID string `json:"department_id"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// LinkedCorpSimpleListResponse 获取互联企业部门成员响应
|
|
|
|
|
+type LinkedCorpSimpleListResponse struct {
|
|
|
|
|
+ util.CommonError
|
|
|
|
|
+ Userlist []LinkedCorpUser `json:"userlist"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// LinkedCorpUser 企业部门成员
|
|
|
|
|
+type LinkedCorpUser struct {
|
|
|
|
|
+ UserID string `json:"userid"`
|
|
|
|
|
+ Name string `json:"name"`
|
|
|
|
|
+ Department []string `json:"department"`
|
|
|
|
|
+ CorpID string `json:"corpid"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// LinkedCorpSimpleList 获取互联企业部门成员
|
|
|
|
|
+// see https://developer.work.weixin.qq.com/document/path/93168
|
|
|
|
|
+func (r *Client) LinkedCorpSimpleList(req *LinkedCorpSimpleListRequest) (*LinkedCorpSimpleListResponse, error) {
|
|
|
|
|
+ var (
|
|
|
|
|
+ accessToken string
|
|
|
|
|
+ err error
|
|
|
|
|
+ )
|
|
|
|
|
+ if accessToken, err = r.GetAccessToken(); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ var response []byte
|
|
|
|
|
+ if response, err = util.PostJSON(fmt.Sprintf(linkedCorpSimpleListURL, accessToken), req); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ result := &LinkedCorpSimpleListResponse{}
|
|
|
|
|
+ if err = util.DecodeWithError(response, result, "LinkedCorpSimpleList"); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ return result, nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// LinkedCorpUserListRequest 获取互联企业部门成员详情请求
|
|
|
|
|
+type LinkedCorpUserListRequest struct {
|
|
|
|
|
+ DepartmentID string `json:"department_id"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// LinkedCorpUserListResponse 获取互联企业部门成员详情响应
|
|
|
|
|
+type LinkedCorpUserListResponse struct {
|
|
|
|
|
+ util.CommonError
|
|
|
|
|
+ UserList []LinkedCorpUserInfo `json:"userlist"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// LinkedCorpUserList 获取互联企业部门成员详情
|
|
|
|
|
+// see https://developer.work.weixin.qq.com/document/path/93169
|
|
|
|
|
+func (r *Client) LinkedCorpUserList(req *LinkedCorpUserListRequest) (*LinkedCorpUserListResponse, error) {
|
|
|
|
|
+ var (
|
|
|
|
|
+ accessToken string
|
|
|
|
|
+ err error
|
|
|
|
|
+ )
|
|
|
|
|
+ if accessToken, err = r.GetAccessToken(); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ var response []byte
|
|
|
|
|
+ if response, err = util.PostJSON(fmt.Sprintf(linkedCorpUserListURL, accessToken), req); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ result := &LinkedCorpUserListResponse{}
|
|
|
|
|
+ if err = util.DecodeWithError(response, result, "LinkedCorpUserList"); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ return result, nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// LinkedCorpDepartmentListRequest 获取互联企业部门列表请求
|
|
|
|
|
+type LinkedCorpDepartmentListRequest struct {
|
|
|
|
|
+ DepartmentID string `json:"department_id"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// LinkedCorpDepartmentListResponse 获取互联企业部门列表响应
|
|
|
|
|
+type LinkedCorpDepartmentListResponse struct {
|
|
|
|
|
+ util.CommonError
|
|
|
|
|
+ DepartmentList []LinkedCorpDepartment `json:"department_list"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// LinkedCorpDepartment 互联企业部门
|
|
|
|
|
+type LinkedCorpDepartment struct {
|
|
|
|
|
+ DepartmentID string `json:"department_id"`
|
|
|
|
|
+ DepartmentName string `json:"department_name"`
|
|
|
|
|
+ ParentID string `json:"parentid"`
|
|
|
|
|
+ Order int `json:"order"`
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// LinkedCorpDepartmentList 获取互联企业部门列表
|
|
|
|
|
+// see https://developer.work.weixin.qq.com/document/path/93170
|
|
|
|
|
+func (r *Client) LinkedCorpDepartmentList(req *LinkedCorpDepartmentListRequest) (*LinkedCorpDepartmentListResponse, error) {
|
|
|
|
|
+ var (
|
|
|
|
|
+ accessToken string
|
|
|
|
|
+ err error
|
|
|
|
|
+ )
|
|
|
|
|
+ if accessToken, err = r.GetAccessToken(); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ var response []byte
|
|
|
|
|
+ if response, err = util.PostJSON(fmt.Sprintf(linkedCorpDepartmentListURL, accessToken), req); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ result := &LinkedCorpDepartmentListResponse{}
|
|
|
|
|
+ if err = util.DecodeWithError(response, result, "LinkedCorpDepartmentList"); err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ return result, nil
|
|
|
|
|
+}
|