115 lines
2.6 KiB
Go
115 lines
2.6 KiB
Go
package model
|
|
|
|
import (
|
|
"github.com/globalsign/mgo/bson"
|
|
"mongo.games.com/goserver/core/logger"
|
|
"time"
|
|
)
|
|
|
|
type FriendUnread struct {
|
|
Id bson.ObjectId `bson:"_id"`
|
|
Snid int32
|
|
UnreadSnids []*FriendUnreadSnid
|
|
}
|
|
|
|
type FriendUnreadSnid struct {
|
|
SnId int32
|
|
UnreadNum int32
|
|
}
|
|
|
|
type FriendUnreadRet struct {
|
|
FU *FriendUnread
|
|
}
|
|
|
|
type FriendUnreadByKey struct {
|
|
Platform string
|
|
SnId int32
|
|
FU *FriendUnread
|
|
UnreadSnid int32
|
|
}
|
|
|
|
func NewFriendUnread(snid int32) *FriendUnread {
|
|
f := &FriendUnread{Id: bson.NewObjectId()}
|
|
f.Snid = snid
|
|
f.UnreadSnids = []*FriendUnreadSnid{}
|
|
return f
|
|
}
|
|
|
|
func UpsertFriendUnread(platform string, snid, unreadSnid int32) *FriendUnread {
|
|
if rpcCli == nil {
|
|
logger.Logger.Error("model.UpsertFriendUnread rpcCli == nil")
|
|
return nil
|
|
}
|
|
args := &FriendUnreadByKey{
|
|
Platform: platform,
|
|
SnId: snid,
|
|
UnreadSnid: unreadSnid,
|
|
}
|
|
var ret *FriendUnreadRet
|
|
err := rpcCli.CallWithTimeout("FriendUnreadSvc.UpsertFriendUnread", args, ret, time.Second*30)
|
|
if err != nil {
|
|
logger.Logger.Warn("UpsertFriendUnread error:", err)
|
|
return nil
|
|
}
|
|
return ret.FU
|
|
}
|
|
|
|
func UpdateFriendUnread(platform string, snid int32, fu *FriendUnread) *FriendUnread {
|
|
if rpcCli == nil {
|
|
logger.Logger.Error("model.UpdateFriendUnread rpcCli == nil")
|
|
return nil
|
|
}
|
|
if fu.UnreadSnids == nil || len(fu.UnreadSnids) == 0 {
|
|
DelFriendUnread(platform, snid)
|
|
return nil
|
|
}
|
|
args := &FriendUnreadByKey{
|
|
Platform: platform,
|
|
SnId: snid,
|
|
FU: fu,
|
|
}
|
|
var ret *FriendUnreadRet
|
|
err := rpcCli.CallWithTimeout("FriendUnreadSvc.UpdateFriendUnread", args, ret, time.Second*30)
|
|
if err != nil {
|
|
logger.Logger.Warn("UpdateFriendUnread error:", err)
|
|
return nil
|
|
}
|
|
return ret.FU
|
|
}
|
|
|
|
func QueryFriendUnreadBySnid(platform string, snid int32) (fu *FriendUnread, err error) {
|
|
if rpcCli == nil {
|
|
logger.Logger.Error("model.QueryFriendUnreadBySnid rpcCli == nil")
|
|
return
|
|
}
|
|
args := &FriendUnreadByKey{
|
|
Platform: platform,
|
|
SnId: snid,
|
|
}
|
|
var ret *FriendUnreadRet
|
|
err = rpcCli.CallWithTimeout("FriendUnreadSvc.QueryFriendUnreadByKey", args, &ret, time.Second*30)
|
|
if err != nil {
|
|
logger.Logger.Warn("QueryFriendUnreadBySnid error:", err)
|
|
}
|
|
if ret != nil {
|
|
fu = ret.FU
|
|
}
|
|
return
|
|
}
|
|
|
|
func DelFriendUnread(platform string, snid int32) {
|
|
if rpcCli == nil {
|
|
logger.Logger.Error("model.DelFriendUnread rpcCli == nil")
|
|
return
|
|
}
|
|
args := &FriendUnreadByKey{
|
|
Platform: platform,
|
|
SnId: snid,
|
|
}
|
|
err := rpcCli.CallWithTimeout("FriendUnreadSvc.DelFriendUnread", args, nil, time.Second*30)
|
|
if err != nil {
|
|
logger.Logger.Warn("DelFriendUnread error:", err)
|
|
}
|
|
return
|
|
}
|