131 lines
2.7 KiB
Go
131 lines
2.7 KiB
Go
package model
|
|
|
|
import (
|
|
"github.com/globalsign/mgo/bson"
|
|
"mongo.games.com/goserver/core/logger"
|
|
"time"
|
|
)
|
|
|
|
type Friend struct {
|
|
Id bson.ObjectId `bson:"_id"`
|
|
Platform string
|
|
SnId int32
|
|
BindFriend []*BindFriend
|
|
UpdateTime int64
|
|
Name string
|
|
Head int32
|
|
HeadUrl string
|
|
Sex int32
|
|
Coin int64
|
|
Diamond int64
|
|
VCard int64
|
|
Roles map[int32]int32 //人物
|
|
Pets map[int32]int32 //宠物
|
|
Shield []int32
|
|
Age int32
|
|
Signature string
|
|
GameID []int32
|
|
LogoutTime int64 //登出时间
|
|
Dirty bool `bson:"-"`
|
|
}
|
|
|
|
type BindFriend struct {
|
|
SnId int32
|
|
CreateTime int64 //建立时间
|
|
//缓存数据
|
|
Platform string `bson:"-"`
|
|
Name string `bson:"-"`
|
|
Head int32 `bson:"-"`
|
|
HeadUrl string `bson:"-"`
|
|
Sex int32 `bson:"-"`
|
|
LogoutTime int64 `bson:"-"`
|
|
RoleId int32 `bson:"-"`
|
|
}
|
|
|
|
type FriendRet struct {
|
|
Fri *Friend
|
|
}
|
|
|
|
type FriendByKey struct {
|
|
Platform string
|
|
SnId int32
|
|
}
|
|
|
|
type FriendsRet struct {
|
|
Fris []*Friend
|
|
}
|
|
|
|
type FriendsByKey struct {
|
|
Platform string
|
|
SnIds []int32
|
|
}
|
|
|
|
func NewFriend(platform string, snid int32) *Friend {
|
|
f := &Friend{Id: bson.NewObjectId()}
|
|
f.Platform = platform
|
|
f.SnId = snid
|
|
f.Roles = make(map[int32]int32)
|
|
f.Pets = make(map[int32]int32)
|
|
f.Shield = []int32{}
|
|
f.UpdateTime = time.Now().Unix()
|
|
f.BindFriend = []*BindFriend{}
|
|
f.GameID = []int32{}
|
|
f.Dirty = true
|
|
return f
|
|
}
|
|
|
|
func UpsertFriend(friend *Friend) *Friend {
|
|
if rpcCli == nil {
|
|
logger.Logger.Error("model.UpsertFriend rpcCli == nil")
|
|
return nil
|
|
}
|
|
|
|
ret := &FriendRet{}
|
|
err := rpcCli.CallWithTimeout("FriendSvc.UpsertFriend", friend, ret, time.Second*30)
|
|
if err != nil {
|
|
logger.Logger.Error("UpsertFriend error:", err)
|
|
return nil
|
|
}
|
|
return ret.Fri
|
|
}
|
|
|
|
func QueryFriendBySnid(platform string, snid int32) (friend *Friend, err error) {
|
|
if rpcCli == nil {
|
|
logger.Logger.Error("model.QueryFriendBySnid rpcCli == nil")
|
|
return
|
|
}
|
|
args := &FriendByKey{
|
|
Platform: platform,
|
|
SnId: snid,
|
|
}
|
|
var ret *FriendRet
|
|
err = rpcCli.CallWithTimeout("FriendSvc.QueryFriendByKey", args, &ret, time.Second*30)
|
|
if err != nil {
|
|
logger.Logger.Error("QueryFriendBySnid error:", err)
|
|
}
|
|
if ret != nil {
|
|
friend = ret.Fri
|
|
}
|
|
return
|
|
}
|
|
|
|
func QueryFriendsBySnids(platform string, snids []int32) (fris []*Friend, err error) {
|
|
if rpcCli == nil {
|
|
logger.Logger.Error("model.QueryFriendsBySnids rpcCli == nil")
|
|
return
|
|
}
|
|
args := &FriendsByKey{
|
|
Platform: platform,
|
|
SnIds: snids,
|
|
}
|
|
ret := &FriendsRet{}
|
|
err = rpcCli.CallWithTimeout("FriendSvc.QueryFriendsByKey", args, &ret, time.Second*30)
|
|
if err != nil {
|
|
logger.Logger.Error("QueryFriendsBySnids error:", err)
|
|
}
|
|
if ret != nil {
|
|
fris = ret.Fris
|
|
}
|
|
return
|
|
}
|