mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-04 12:52:27 +08:00
feat:企业微信-通讯录管理-互联企业 (#688)
This commit is contained in:
230
work/addresslist/linkedcorp.go
Normal file
230
work/addresslist/linkedcorp.go
Normal file
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user