152 lines
4.1 KiB
Go
152 lines
4.1 KiB
Go
package table
|
|
|
|
import (
|
|
"xiawan/wx/clientsdk/baseinfo"
|
|
pb "xiawan/wx/protobuf/wechat"
|
|
|
|
"github.com/gogo/protobuf/proto"
|
|
)
|
|
|
|
type SubMessageCheckLoginQrCode struct {
|
|
Type int
|
|
TargetIp string
|
|
UUID string
|
|
CheckLoginResult *baseinfo.CheckLoginQrCodeResult
|
|
}
|
|
|
|
type SyncMessageResponse struct {
|
|
Type int
|
|
TargetIp string
|
|
UUID string
|
|
UserName string `json:"userName"`
|
|
LoginState uint32 `json:"loginState"`
|
|
ModUserInfos []*pb.ModUserInfo
|
|
ModContacts []*pb.ModContact
|
|
AddMsgs []*pb.AddMsg
|
|
ModUserImgs []*pb.ModUserImg
|
|
UserInfoExts []*pb.UserInfoExt
|
|
SnsObjects []*pb.SnsObject
|
|
SnsActionGroups []*pb.SnsActionGroup
|
|
FavItem *baseinfo.FavItem
|
|
Key *pb.SKBuiltinString_
|
|
}
|
|
|
|
func (sync *SyncMessageResponse) GetContacts() []*pb.ModContact {
|
|
return sync.ModContacts
|
|
}
|
|
|
|
// 根据 UserName 查询 Contacts
|
|
func (sync *SyncMessageResponse) GetModContacts(UserName string) *pb.ModContact {
|
|
for _, userInfo := range sync.ModContacts {
|
|
if userInfo.UserName.GetStr() == UserName {
|
|
return userInfo
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 根据 UserName 更新或新增 Contacts
|
|
func (sync *SyncMessageResponse) SetModContacts(userInfo *pb.ModContact) {
|
|
for i, u := range sync.ModContacts {
|
|
if u.UserName.GetStr() == userInfo.UserName.GetStr() {
|
|
sync.ModContacts[i] = userInfo
|
|
return
|
|
}
|
|
}
|
|
sync.ModContacts = append(sync.ModContacts, userInfo)
|
|
}
|
|
|
|
func (sync *SyncMessageResponse) GetAddMsgs() []*pb.AddMsg {
|
|
return sync.AddMsgs
|
|
}
|
|
|
|
func (sync *SyncMessageResponse) SetMessage(data []byte, cmdId int32) {
|
|
switch cmdId {
|
|
case 1:
|
|
userInfo := new(pb.ModUserInfo)
|
|
if err := proto.Unmarshal(data, userInfo); err != nil {
|
|
//z.Errorf(err.Error())
|
|
return
|
|
}
|
|
/*fmt.Printf("登录微信:[%s] 昵称 [%s] 手机 [%s] 别名 [%s]\n",
|
|
userInfo.UserName.GetStr(),
|
|
userInfo.NickName.GetStr(),
|
|
userInfo.BindMobile.GetStr(),
|
|
userInfo.GetAlias())*/
|
|
sync.ModUserInfos = append(sync.ModUserInfos, userInfo)
|
|
// 限制长度
|
|
if len(sync.ModUserInfos) > 5000 {
|
|
sync.ModUserInfos = sync.ModUserInfos[len(sync.ModUserInfos)-5000:]
|
|
}
|
|
case 2:
|
|
contact := new(pb.ModContact)
|
|
if err := proto.Unmarshal(data, contact); err != nil {
|
|
//z.Errorf(err.Error())
|
|
return
|
|
}
|
|
sync.ModContacts = append(sync.ModContacts, contact)
|
|
case 5:
|
|
addMsg := new(pb.AddMsg)
|
|
if err := proto.Unmarshal(data, addMsg); err != nil {
|
|
//z.Println(err)
|
|
return
|
|
}
|
|
sync.AddMsgs = append(sync.AddMsgs, addMsg)
|
|
// 限制长度
|
|
if len(sync.AddMsgs) > 5000 {
|
|
sync.AddMsgs = sync.AddMsgs[len(sync.AddMsgs)-5000:]
|
|
}
|
|
case 35:
|
|
userImg := new(pb.ModUserImg)
|
|
if err := proto.Unmarshal(data, userImg); err != nil {
|
|
//z.Println(err)
|
|
return
|
|
}
|
|
sync.ModUserImgs = append(sync.ModUserImgs, userImg)
|
|
// 限制长度
|
|
if len(sync.ModUserImgs) > 5000 {
|
|
sync.ModUserImgs = sync.ModUserImgs[len(sync.ModUserImgs)-5000:]
|
|
}
|
|
case 44:
|
|
userInfoExt := new(pb.UserInfoExt)
|
|
if err := proto.Unmarshal(data, userInfoExt); err != nil {
|
|
//z.Println(err)
|
|
return
|
|
}
|
|
|
|
sync.UserInfoExts = append(sync.UserInfoExts, userInfoExt)
|
|
// 限制长度
|
|
if len(sync.UserInfoExts) > 5000 {
|
|
sync.UserInfoExts = sync.UserInfoExts[len(sync.UserInfoExts)-5000:]
|
|
}
|
|
case 45:
|
|
snsObject := new(pb.SnsObject)
|
|
if err := proto.Unmarshal(data, snsObject); err != nil {
|
|
//z.Println(err)
|
|
return
|
|
}
|
|
sync.SnsObjects = append(sync.SnsObjects, snsObject)
|
|
// 限制长度
|
|
if len(sync.SnsObjects) > 5000 {
|
|
sync.SnsObjects = sync.SnsObjects[len(sync.SnsObjects)-5000:]
|
|
}
|
|
case 46:
|
|
snsActionGroup := new(pb.SnsActionGroup)
|
|
if err := proto.Unmarshal(data, snsActionGroup); err != nil {
|
|
//z.Println(err)
|
|
return
|
|
}
|
|
sync.SnsActionGroups = append(sync.SnsActionGroups, snsActionGroup)
|
|
// 限制长度
|
|
if len(sync.SnsActionGroups) > 5000 {
|
|
sync.SnsActionGroups = sync.SnsActionGroups[len(sync.SnsActionGroups)-5000:]
|
|
}
|
|
default:
|
|
/*empty := new(pb.EmptyMesssage)
|
|
_ = proto.Unmarshal(data, empty)*/
|
|
//logger.Printf("收到未处理类型:%d 的数据:%s\n", id, empty.String())
|
|
//保存消息
|
|
}
|
|
|
|
}
|