From d92cd355330cf77ab54b518a156e3c8082975367 Mon Sep 17 00:00:00 2001 From: markwang <2951177317@qq.com> Date: Mon, 8 May 2023 11:56:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=81=E4=B8=9A=E5=BE=AE=E4=BF=A1-=E9=80=9A?= =?UTF-8?q?=E8=AE=AF=E5=BD=95=E7=AE=A1=E7=90=86-=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E7=AE=A1=E7=90=86-=E8=8E=B7=E5=8F=96/=E5=A2=9E=E5=8A=A0/?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=A0=87=E7=AD=BE=E6=88=90=E5=91=98=E3=80=81?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=A0=87=E7=AD=BE=E5=88=97=E8=A1=A8=20(#674)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 企业微信-客户联系-统计管理 * 企业微信-客户联系-统计管理 * 企业微信-客户联系-统计管理 * debug * rollback * debug * debug * 获取用户信息 * token * json.Marshal错误输出 * debug * bugfix * 企业微信-通讯录管理相关接口 * 企业微信-通讯录管理 * 企业微信-通讯录管理 * 企业微信-通讯录管理 * 企业微信-[联系我]方式新增和查询 * 企业微信-[联系我]方式新增和获取 * 企业微信-[联系我]方式更新 * 企业微信-[联系我]方式列表、删除 * json.Marshal错误输出 * 已实现接口bug修改 * 历史接口bugfix * 历史接口bugfix * comment * 企业微信:客户联系-消息推送;素材管理-上传图片 * fix * 企业微信-获取群发记录列表 * 历史接口bugfix * 1.企业微信-客户联系-消息推送-入群欢迎语素材管理 2.企业微信-通讯录管理-成员管理-获取成员ID列表 * golangci-lint * gofmt * 方法访问命名 * 企业微信-批量获取客户详情入参优化 * 企业微信-通讯录管理-标签管理-创建/更新/删除标签 * 请求地址常量无需导出 * 企业微信保持代码风格统一,接口URL不导出 * 企业微信-通讯录管理-标签管理-获取/增加/删除标签成员、获取标签列表 --------- Co-authored-by: wang.yu Co-authored-by: markwang --- work/addresslist/tag.go | 150 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) diff --git a/work/addresslist/tag.go b/work/addresslist/tag.go index fe12acd..3e976e3 100644 --- a/work/addresslist/tag.go +++ b/work/addresslist/tag.go @@ -13,6 +13,14 @@ const ( updateTagURL = "https://qyapi.weixin.qq.com/cgi-bin/tag/update?access_token=%s" // deleteTagURL 删除标签 deleteTagURL = "https://qyapi.weixin.qq.com/cgi-bin/tag/delete?access_token=%s&tagid=%d" + // getTagURL 获取标签成员 + getTagURL = "https://qyapi.weixin.qq.com/cgi-bin/tag/get?access_token=%s&tagid=%d" + // addTagUsersURL 增加标签成员 + addTagUsersURL = "https://qyapi.weixin.qq.com/cgi-bin/tag/addtagusers?access_token=%s" + // delTagUsersURL 删除标签成员 + delTagUsersURL = "https://qyapi.weixin.qq.com/cgi-bin/tag/deltagusers?access_token=%s" + // listTagURL 获取标签列表 + listTagURL = "https://qyapi.weixin.qq.com/cgi-bin/tag/list?access_token=%s" ) type ( @@ -90,3 +98,145 @@ func (r *Client) DeleteTag(tagID int) error { } return util.DecodeWithCommonError(response, "DeleteTag") } + +type ( + // GetTagResponse 获取标签成员响应 + GetTagResponse struct { + util.CommonError + TagName string `json:"tagname"` + UserList []GetTagUserList `json:"userlist"` + PartyList []int `json:"partylist"` + } + // GetTagUserList 标签中包含的成员列表 + GetTagUserList struct { + UserID string `json:"userid"` + Name string `json:"name"` + } +) + +// GetTag 获取标签成员 +// @see https://developer.work.weixin.qq.com/document/path/90213 +func (r *Client) GetTag(tagID int) (*GetTagResponse, error) { + var ( + accessToken string + err error + ) + if accessToken, err = r.GetAccessToken(); err != nil { + return nil, err + } + var response []byte + if response, err = util.HTTPGet(fmt.Sprintf(getTagURL, accessToken, tagID)); err != nil { + return nil, err + } + result := &GetTagResponse{} + if err = util.DecodeWithError(response, result, "GetTag"); err != nil { + return nil, err + } + return result, nil +} + +type ( + // AddTagUsersRequest 增加标签成员请求 + AddTagUsersRequest struct { + TagID int `json:"tagid"` + UserList []string `json:"userlist"` + PartyList []int `json:"partylist"` + } + // AddTagUsersResponse 增加标签成员响应 + AddTagUsersResponse struct { + util.CommonError + InvalidList string `json:"invalidlist"` + InvalidParty []int `json:"invalidparty"` + } +) + +// AddTagUsers 增加标签成员 +// see https://developer.work.weixin.qq.com/document/path/90214 +func (r *Client) AddTagUsers(req *AddTagUsersRequest) (*AddTagUsersResponse, 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(addTagUsersURL, accessToken), req); err != nil { + return nil, err + } + result := &AddTagUsersResponse{} + if err = util.DecodeWithError(response, result, "AddTagUsers"); err != nil { + return nil, err + } + return result, nil +} + +type ( + // DelTagUsersRequest 删除标签成员请求 + DelTagUsersRequest struct { + TagID int `json:"tagid"` + UserList []string `json:"userlist"` + PartyList []int `json:"partylist"` + } + // DelTagUsersResponse 删除标签成员响应 + DelTagUsersResponse struct { + util.CommonError + InvalidList string `json:"invalidlist"` + InvalidParty []int `json:"invalidparty"` + } +) + +// DelTagUsers 删除标签成员 +// see https://developer.work.weixin.qq.com/document/path/90215 +func (r *Client) DelTagUsers(req *DelTagUsersRequest) (*DelTagUsersResponse, 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(delTagUsersURL, accessToken), req); err != nil { + return nil, err + } + result := &DelTagUsersResponse{} + if err = util.DecodeWithError(response, result, "DelTagUsers"); err != nil { + return nil, err + } + return result, nil +} + +type ( + // ListTagResponse 获取标签列表响应 + ListTagResponse struct { + util.CommonError + TagList []Tag `json:"taglist"` + } + // Tag 标签 + Tag struct { + TagID int `json:"tagid"` + TagName string `json:"tagname"` + } +) + +// ListTag 获取标签列表 +// @see https://developer.work.weixin.qq.com/document/path/90216 +func (r *Client) ListTag() (*ListTagResponse, error) { + var ( + accessToken string + err error + ) + if accessToken, err = r.GetAccessToken(); err != nil { + return nil, err + } + var response []byte + if response, err = util.HTTPGet(fmt.Sprintf(listTagURL, accessToken)); err != nil { + return nil, err + } + result := &ListTagResponse{} + if err = util.DecodeWithError(response, result, "ListTag"); err != nil { + return nil, err + } + return result, nil +}