Quellcode durchsuchen

企业微信userid与openid互换 (#676)

* 企业微信-客户联系-统计管理

* 企业微信-客户联系-统计管理

* 企业微信-客户联系-统计管理

* 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 <wangyu@uniondrug.com>
Co-authored-by: markwang <www.wang61@qq.com>
markwang vor 3 Jahren
Ursprung
Commit
9df943df69
1 geänderte Dateien mit 76 neuen und 0 gelöschten Zeilen
  1. 76 0
      work/addresslist/user.go

+ 76 - 0
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
+}