From 9df943df69f0d33a5f1ecaf5e8fd1ecaa3288aa1 Mon Sep 17 00:00:00 2001 From: markwang <2951177317@qq.com> Date: Tue, 16 May 2023 19:22:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=81=E4=B8=9A=E5=BE=AE=E4=BF=A1userid?= =?UTF-8?q?=E4=B8=8Eopenid=E4=BA=92=E6=8D=A2=20(#676)?= 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不导出 * 企业微信-通讯录管理-标签管理-获取/增加/删除标签成员、获取标签列表 * feat:企业微信userid与openid互换 --------- Co-authored-by: wang.yu Co-authored-by: markwang --- work/addresslist/user.go | 76 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/work/addresslist/user.go b/work/addresslist/user.go index 4b6a88c..d5b2a63 100644 --- a/work/addresslist/user.go +++ b/work/addresslist/user.go @@ -13,6 +13,10 @@ const ( userGetURL = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=%s&userid=%s" // userListIDURL 获取成员ID列表 userListIDURL = "https://qyapi.weixin.qq.com/cgi-bin/user/list_id?access_token=%s" + // convertToOpenIDURL userID转openID + convertToOpenIDURL = "https://qyapi.weixin.qq.com/cgi-bin/user/convert_to_openid?access_token=%s" + // convertToUserIDURL openID转userID + convertToUserIDURL = "https://qyapi.weixin.qq.com/cgi-bin/user/convert_to_userid?access_token=%s" ) type ( @@ -175,3 +179,75 @@ func (r *Client) UserListID(req *UserListIDRequest) (*UserListIDResponse, error) } return result, nil } + +type ( + // convertToOpenIDRequest userID转openID请求 + convertToOpenIDRequest struct { + UserID string `json:"userid"` + } + + // convertToOpenIDResponse userID转openID响应 + convertToOpenIDResponse struct { + util.CommonError + OpenID string `json:"openid"` + } +) + +// ConvertToOpenID userID转openID +// see https://developer.work.weixin.qq.com/document/path/90202 +func (r *Client) ConvertToOpenID(userID string) (string, error) { + var ( + accessToken string + err error + ) + if accessToken, err = r.GetAccessToken(); err != nil { + return "", err + } + var response []byte + if response, err = util.PostJSON(fmt.Sprintf(convertToOpenIDURL, accessToken), &convertToOpenIDRequest{ + UserID: userID, + }); err != nil { + return "", err + } + result := &convertToOpenIDResponse{} + if err = util.DecodeWithError(response, result, "ConvertToOpenID"); err != nil { + return "", err + } + return result.OpenID, nil +} + +type ( + // convertToUserIDRequest openID转userID请求 + convertToUserIDRequest struct { + OpenID string `json:"openid"` + } + + // convertToUserIDResponse openID转userID响应 + convertToUserIDResponse struct { + util.CommonError + UserID string `json:"userid"` + } +) + +// ConvertToUserID openID转userID +// see https://developer.work.weixin.qq.com/document/path/90202 +func (r *Client) ConvertToUserID(openID string) (string, error) { + var ( + accessToken string + err error + ) + if accessToken, err = r.GetAccessToken(); err != nil { + return "", err + } + var response []byte + if response, err = util.PostJSON(fmt.Sprintf(convertToUserIDURL, accessToken), &convertToUserIDRequest{ + OpenID: openID, + }); err != nil { + return "", err + } + result := &convertToUserIDResponse{} + if err = util.DecodeWithError(response, result, "ConvertToUserID"); err != nil { + return "", err + } + return result.UserID, nil +}