Skip to content

Commit

Permalink
修复好友获取不全的问题 (#118)
Browse files Browse the repository at this point in the history
  • Loading branch information
eatmoreapple authored Dec 10, 2022
1 parent 03aa3c1 commit efdac13
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 15 deletions.
37 changes: 25 additions & 12 deletions caller.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
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()
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
}
return item.MemberList, nil
return members, nil
}

// WebWxBatchGetContact 获取联系人的详情
Expand Down
4 changes: 2 additions & 2 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion items.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ type WebWxSyncResponse struct {

type WebWxContactResponse struct {
MemberCount int
Seq int
Seq int64
BaseResponse BaseResponse
MemberList []*User
}
Expand Down

0 comments on commit efdac13

Please sign in to comment.