修复好友获取不全的问题 (#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 获取所有的联系人
func (c *Caller) WebWxGetContact(info *LoginInfo) (Members, error) {
resp, err := c.Client.WebWxGetContact(info)
if err != nil {
return nil, err
var members Members
var reqs int64
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() }()
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
return members, nil
}
// WebWxBatchGetContact 获取联系人的详情

View File

@ -214,12 +214,12 @@ func (c *Client) SyncCheck(request *BaseRequest, info *LoginInfo, response *WebI
}
// 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)
params := url.Values{}
params.Add("r", strconv.FormatInt(time.Now().UnixNano()/1e6, 10))
params.Add("skey", info.SKey)
params.Add("req", "0")
params.Add("seq", strconv.FormatInt(reqs, 10))
path.RawQuery = params.Encode()
req, _ := http.NewRequest(http.MethodGet, path.String(), nil)
return c.Do(req)

View File

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