Explorar el Código

fix code format

song kang hace 7 años
padre
commit
b0f1f71f37
Se han modificado 1 ficheros con 39 adiciones y 0 borrados
  1. 39 0
      user/user.go

+ 39 - 0
user/user.go

@@ -2,6 +2,7 @@ package user
 
 import (
 	"encoding/json"
+	"errors"
 	"fmt"
 
 	"github.com/silenceper/wechat/context"
@@ -11,6 +12,7 @@ import (
 const (
 	userInfoURL     = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=zh_CN"
 	updateRemarkURL = "https://api.weixin.qq.com/cgi-bin/user/info/updateremark?access_token=%s"
+	batchGetUserInfoURL = "https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=%s"
 )
 
 //User 用户管理
@@ -45,6 +47,13 @@ type Info struct {
 	TagidList     []int32 `json:"tagid_list"`
 }
 
+// BatchUserQuery 待查询的用户列表
+type BatchUserQuery struct {
+	OpenID 		string		`json:"openid"`
+	Lang 		string		`json:"lang"`
+}
+
+
 //GetUserInfo 获取用户基本信息
 func (user *User) GetUserInfo(openID string) (userInfo *Info, err error) {
 	var accessToken string
@@ -88,3 +97,33 @@ func (user *User) UpdateRemark(openID, remark string) (err error) {
 
 	return util.DecodeWithCommonError(response, "UpdateRemark")
 }
+
+// BatchGetUser 批量获取用户基本信息
+func (user *User) BatchGetUser(batchUserQuery ... *BatchUserQuery)([]*Info, error){
+	if len(batchUserQuery)>100{
+		return nil, errors.New("最多支持一次拉取100条")
+	}
+	var accessToken string
+	accessToken, err := user.GetAccessToken()
+	if err != nil {
+		return nil, err
+	}
+
+	requestMap := make(map[string]interface{})
+	requestMap["user_list"] = batchUserQuery
+	uri := fmt.Sprintf(batchGetUserInfoURL, accessToken)
+	response, err := util.PostJSON(uri, requestMap)
+	if err != nil {
+		return nil, err
+	}
+	//	batchUserQueryResponse 批量查询返回值
+	type batchUserQueryResponse struct {
+		List    []*Info		`json:"user_info_list"`
+	}
+	userList := &batchUserQueryResponse{}
+	err = json.Unmarshal(response, userList)
+	if err != nil {
+		return nil, err
+	}
+	return userList.List, nil
+}