修复好友获取不全的问题 (#118)

This commit is contained in:
多吃点苹果 2022-12-10 16:46:34 +08:00 committed by GitHub
parent 03aa3c1633
commit efdac13d91
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 15 deletions

View File

@ -155,19 +155,32 @@ func (c *Caller) SyncCheck(request *BaseRequest, info *LoginInfo, response *WebI
// WebWxGetContact 获取所有的联系人 // WebWxGetContact 获取所有的联系人
func (c *Caller) WebWxGetContact(info *LoginInfo) (Members, error) { func (c *Caller) WebWxGetContact(info *LoginInfo) (Members, error) {
resp, err := c.Client.WebWxGetContact(info) var members Members
if err != nil { var reqs int64
return nil, err for {
resp, err := c.Client.WebWxGetContact(info, reqs)
if err != nil {
return nil, err
}
var item WebWxContactResponse
if err = scanJson(resp.Body, &item); err != nil {
_ = resp.Body.Close()
return nil, err
}
if err = resp.Body.Close(); err != nil {
return nil, err
}
if !item.BaseResponse.Ok() {
return nil, item.BaseResponse.Err()
}
members = append(members, item.MemberList...)
if item.Seq == 0 || item.Seq == reqs {
break
}
reqs = item.Seq
} }
defer func() { _ = resp.Body.Close() }() return members, nil
var item WebWxContactResponse
if err := scanJson(resp.Body, &item); err != nil {
return nil, err
}
if !item.BaseResponse.Ok() {
return nil, item.BaseResponse.Err()
}
return item.MemberList, nil
} }
// WebWxBatchGetContact 获取联系人的详情 // WebWxBatchGetContact 获取联系人的详情

View File

@ -214,12 +214,12 @@ func (c *Client) SyncCheck(request *BaseRequest, info *LoginInfo, response *WebI
} }
// WebWxGetContact 获取联系人信息 // WebWxGetContact 获取联系人信息
func (c *Client) WebWxGetContact(info *LoginInfo) (*http.Response, error) { func (c *Client) WebWxGetContact(info *LoginInfo, reqs int64) (*http.Response, error) {
path, _ := url.Parse(c.Domain.BaseHost() + webwxgetcontact) path, _ := url.Parse(c.Domain.BaseHost() + webwxgetcontact)
params := url.Values{} params := url.Values{}
params.Add("r", strconv.FormatInt(time.Now().UnixNano()/1e6, 10)) params.Add("r", strconv.FormatInt(time.Now().UnixNano()/1e6, 10))
params.Add("skey", info.SKey) params.Add("skey", info.SKey)
params.Add("req", "0") params.Add("seq", strconv.FormatInt(reqs, 10))
path.RawQuery = params.Encode() path.RawQuery = params.Encode()
req, _ := http.NewRequest(http.MethodGet, path.String(), nil) req, _ := http.NewRequest(http.MethodGet, path.String(), nil)
return c.Do(req) return c.Do(req)

View File

@ -131,7 +131,7 @@ type WebWxSyncResponse struct {
type WebWxContactResponse struct { type WebWxContactResponse struct {
MemberCount int MemberCount int
Seq int Seq int64
BaseResponse BaseResponse BaseResponse BaseResponse
MemberList []*User MemberList []*User
} }