更新底层代码复用
This commit is contained in:
parent
63dcbae8ec
commit
8b525a0934
14
relations.go
14
relations.go
@ -3,7 +3,6 @@ package openwechat
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -336,17 +335,4 @@ func (m Mps) Search(limit int, condFuncList ...func(group *Mp) bool) (results Mp
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断是否为好友
|
|
||||||
func isFriend(user User) bool {
|
|
||||||
return !isGroup(user) && strings.HasPrefix(user.UserName, "@") && user.VerifyFlag == 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// 判断是否为群组
|
|
||||||
func isGroup(user User) bool {
|
|
||||||
return strings.HasPrefix(user.UserName, "@@") && user.VerifyFlag == 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// 判断是否为公众号
|
|
||||||
func isMP(user User) bool {
|
|
||||||
return user.VerifyFlag == 8 || user.VerifyFlag == 24 || user.VerifyFlag == 136
|
|
||||||
}
|
|
||||||
|
109
user.go
109
user.go
@ -6,6 +6,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
type User struct {
|
type User struct {
|
||||||
@ -118,6 +119,21 @@ func (u *User) Detail() (*User, error) {
|
|||||||
return user, nil
|
return user, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 判断是否为好友
|
||||||
|
func (u *User) IsFriend() bool {
|
||||||
|
return !u.IsGroup() && strings.HasPrefix(u.UserName, "@") && u.VerifyFlag == 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// 判断是否为群组
|
||||||
|
func (u *User) IsGroup() bool {
|
||||||
|
return strings.HasPrefix(u.UserName, "@@") && u.VerifyFlag == 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// 判断是否为公众号
|
||||||
|
func (u *User) IsMP() bool {
|
||||||
|
return u.VerifyFlag == 8 || u.VerifyFlag == 24 || u.VerifyFlag == 136
|
||||||
|
}
|
||||||
|
|
||||||
// 自己,当前登录用户对象
|
// 自己,当前登录用户对象
|
||||||
type Self struct {
|
type Self struct {
|
||||||
*User
|
*User
|
||||||
@ -214,70 +230,28 @@ func (s *Self) Mps(update ...bool) (Mps, error) {
|
|||||||
|
|
||||||
// 更新好友处理
|
// 更新好友处理
|
||||||
func (s *Self) updateFriends(update ...bool) error {
|
func (s *Self) updateFriends(update ...bool) error {
|
||||||
var isUpdate bool
|
if _, err := s.Members(update...); err != nil {
|
||||||
if len(update) > 0 {
|
return err
|
||||||
isUpdate = update[len(update)-1]
|
|
||||||
}
|
}
|
||||||
if isUpdate || s.members == nil {
|
s.friends = s.members.Friends()
|
||||||
if err := s.updateMembers(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var friends Friends
|
|
||||||
for _, member := range s.members {
|
|
||||||
if isFriend(*member) {
|
|
||||||
friend := &Friend{member}
|
|
||||||
friend.Self = s
|
|
||||||
friends = append(friends, friend)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s.friends = friends
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新群组处理
|
// 更新群组处理
|
||||||
func (s *Self) updateGroups(update ...bool) error {
|
func (s *Self) updateGroups(update ...bool) error {
|
||||||
var isUpdate bool
|
if _, err := s.Members(update...); err != nil {
|
||||||
if len(update) > 0 {
|
return err
|
||||||
isUpdate = update[len(update)-1]
|
|
||||||
}
|
}
|
||||||
if isUpdate || s.members == nil {
|
s.groups = s.members.Groups()
|
||||||
if err := s.updateMembers(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var groups Groups
|
|
||||||
for _, member := range s.members {
|
|
||||||
if isGroup(*member) {
|
|
||||||
group := &Group{member}
|
|
||||||
group.Self = s
|
|
||||||
groups = append(groups, group)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s.groups = groups
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新公众号处理
|
// 更新公众号处理
|
||||||
func (s *Self) updateMps(update ...bool) error {
|
func (s *Self) updateMps(update ...bool) error {
|
||||||
var isUpdate bool
|
if _, err := s.Members(update...); err != nil {
|
||||||
if len(update) > 0 {
|
return err
|
||||||
isUpdate = update[len(update)-1]
|
|
||||||
}
|
}
|
||||||
if isUpdate || s.members == nil {
|
s.mps = s.members.MPs()
|
||||||
if err := s.updateMembers(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var mps Mps
|
|
||||||
for _, member := range s.members {
|
|
||||||
if isMP(*member) {
|
|
||||||
mp := &Mp{member}
|
|
||||||
mp.Self = s
|
|
||||||
mps = append(mps, mp)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s.mps = mps
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -527,6 +501,39 @@ func (m Members) Search(limit int, condFuncList ...func(user *User) bool) (resul
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m Members) Friends() Friends {
|
||||||
|
friends := make(Friends, 0)
|
||||||
|
for _, mb := range m {
|
||||||
|
if mb.IsFriend() {
|
||||||
|
friend := &Friend{mb}
|
||||||
|
friends = append(friends, friend)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return friends
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m Members) Groups() Groups {
|
||||||
|
groups := make(Groups, 0)
|
||||||
|
for _, mb := range m {
|
||||||
|
if mb.IsGroup() {
|
||||||
|
group := &Group{mb}
|
||||||
|
groups = append(groups, group)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return groups
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m Members) MPs() Mps {
|
||||||
|
mps := make(Mps, 0)
|
||||||
|
for _, mb := range m {
|
||||||
|
if mb.IsMP() {
|
||||||
|
mp := &Mp{mb}
|
||||||
|
mps = append(mps, mp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return mps
|
||||||
|
}
|
||||||
|
|
||||||
// 这里为了兼容Desktop版本找不到文件传输助手的问题
|
// 这里为了兼容Desktop版本找不到文件传输助手的问题
|
||||||
// 文件传输助手的微信身份标识符永远是filehelper
|
// 文件传输助手的微信身份标识符永远是filehelper
|
||||||
// 这种形式的对象可能缺少一些其他属性
|
// 这种形式的对象可能缺少一些其他属性
|
||||||
|
Loading…
x
Reference in New Issue
Block a user