From 9b028e5368577d3b7d8660f613a2e2a827268ec2 Mon Sep 17 00:00:00 2001 From: markwang <617514823@qq.com> Date: Tue, 20 Jan 2026 16:15:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=81=E4=B8=9A=E5=BE=AE=E4=BF=A1-?= =?UTF-8?q?=E9=80=9A=E8=AE=AF=E5=BD=95=E7=AE=A1=E7=90=86-=E6=88=90?= =?UTF-8?q?=E5=91=98=E7=AE=A1=E7=90=86=E6=96=B0=E5=A2=9E=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=20(#874)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 企业微信-通讯录管理-成员管理新增接口 * feat: 企业微信-通讯录管理-成员管理新增接口 --- work/addresslist/user.go | 74 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/work/addresslist/user.go b/work/addresslist/user.go index 06abb2c..dd9d43f 100644 --- a/work/addresslist/user.go +++ b/work/addresslist/user.go @@ -28,6 +28,10 @@ const ( userBatchDeleteURL = "https://qyapi.weixin.qq.com/cgi-bin/user/batchdelete?access_token=%s" // userAuthSuccURL 登录二次验证 userAuthSuccURL = "https://qyapi.weixin.qq.com/cgi-bin/user/authsucc?access_token=%s&userid=%s" + // batchInviteURL 邀请成员 + batchInviteURL = "https://qyapi.weixin.qq.com/cgi-bin/batch/invite?access_token=%s" + // getJoinQrcodeURL 获取加入企业二维码 + getJoinQrcodeURL = "https://qyapi.weixin.qq.com/cgi-bin/corp/get_join_qrcode" ) type ( @@ -490,3 +494,73 @@ func (r *Client) UserAuthSucc(userID string) error { } return util.DecodeWithCommonError(response, "UserAuthSucc") } + +// BatchInviteRequest 邀请成员请求 +type BatchInviteRequest struct { + User []string `json:"user"` + Party []int `json:"party"` + Tag []int `json:"tag"` +} + +// BatchInviteResponse 邀请成员响应 +type BatchInviteResponse struct { + util.CommonError + InvalidUser []string `json:"invaliduser"` + InvalidParty []int `json:"invalidparty"` + InvalidTag []int `json:"invalidtag"` +} + +// BatchInvite 邀请成员 +// see https://developer.work.weixin.qq.com/document/path/90975 +func (r *Client) BatchInvite(req *BatchInviteRequest) (*BatchInviteResponse, 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(batchInviteURL, accessToken), req); err != nil { + return nil, err + } + result := &BatchInviteResponse{} + err = util.DecodeWithError(response, result, "BatchInvite") + return result, err +} + +// GetJoinQrcodeRequest 获取加入企业二维码请求 +type GetJoinQrcodeRequest struct { + SizeType int `json:"size_type"` +} + +// GetJoinQrcodeResponse 获取加入企业二维码响应 +type GetJoinQrcodeResponse struct { + util.CommonError + JoinQrcode string `json:"join_qrcode"` +} + +// GetJoinQrcode 获取加入企业二维码 +// see https://developer.work.weixin.qq.com/document/path/91714 +func (r *Client) GetJoinQrcode(req *GetJoinQrcodeRequest) (*GetJoinQrcodeResponse, error) { + var ( + accessToken string + err error + apiURL string + ) + if accessToken, err = r.GetAccessToken(); err != nil { + return nil, err + } + if req.SizeType > 0 { + apiURL = fmt.Sprintf("%s?access_token=%s&size_type=%d", getJoinQrcodeURL, accessToken, req.SizeType) + } else { + apiURL = fmt.Sprintf("%s?access_token=%s", getJoinQrcodeURL, accessToken) + } + var response []byte + if response, err = util.HTTPGet(apiURL); err != nil { + return nil, err + } + result := &GetJoinQrcodeResponse{} + err = util.DecodeWithError(response, result, "GetJoinQrcode") + return result, err +}