好友跨服修改
This commit is contained in:
parent
b0eec24368
commit
1baeb5cef0
@ -70,5 +70,89 @@
|
|||||||
"open": true,
|
"open": true,
|
||||||
"routrules": "~/worker",
|
"routrules": "~/worker",
|
||||||
"describe": "拒绝"
|
"describe": "拒绝"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "friend.list",
|
||||||
|
"open": true,
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "好友列表"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "friend.applylist",
|
||||||
|
"open": true,
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "好友申请列表"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "friend.addblack",
|
||||||
|
"open": true,
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "加黑名单"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "friend.delblack",
|
||||||
|
"open": true,
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "删除黑名单"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "friend.blacklist",
|
||||||
|
"open": true,
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "黑名单列表"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "friend.zan",
|
||||||
|
"open": true,
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "好友点赞"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "friend.zanreceive",
|
||||||
|
"open": true,
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "接收点赞"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "friend.zanlist",
|
||||||
|
"open": true,
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "点赞列表"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "friend.assisthero",
|
||||||
|
"open": true,
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "英雄助战"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "friend.assistlist",
|
||||||
|
"open": true,
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "助战列表"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "friend.getreward",
|
||||||
|
"open": true,
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "获取奖励"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "friend.del",
|
||||||
|
"open": true,
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "删除好友"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "friend.search",
|
||||||
|
"open": true,
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "搜索好友"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "friend.randlist",
|
||||||
|
"open": true,
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "好友推荐"
|
||||||
}
|
}
|
||||||
]
|
]
|
@ -93,6 +93,10 @@ type (
|
|||||||
CrossUserSession(uid string) *pb.CacheUser
|
CrossUserSession(uid string) *pb.CacheUser
|
||||||
// 跨服搜索玩家
|
// 跨服搜索玩家
|
||||||
CrossSearchUser(nickname string) ([]*pb.DBUser, error)
|
CrossSearchUser(nickname string) ([]*pb.DBUser, error)
|
||||||
|
// 获取远程用户
|
||||||
|
GetRmoteUser(uid string) (*pb.DBUser, error)
|
||||||
|
// 搜索远程用户
|
||||||
|
SearchRmoteUser(nickname string) ([]*pb.DBUser, error)
|
||||||
}
|
}
|
||||||
//武器模块
|
//武器模块
|
||||||
IEquipment interface {
|
IEquipment interface {
|
||||||
|
@ -38,6 +38,7 @@ type RPCX struct {
|
|||||||
func (this *RPCX) Start() (err error) {
|
func (this *RPCX) Start() (err error) {
|
||||||
this.service.Start()
|
this.service.Start()
|
||||||
this.client.Start()
|
this.client.Start()
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ func (this *apiComp) Init(service core.IService, module core.IModule, comp core.
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *apiComp) setDefaultFriendUserBaseInfo(userId string) *pb.FriendBase {
|
func (this *apiComp) setDefaultFriendUserBaseInfo(userId string) *pb.FriendBase {
|
||||||
if user, err := this.moduleFriend.ModuleUser.GetCrossUser(userId); err != nil {
|
if user, err := this.moduleFriend.ModuleUser.GetRmoteUser(userId); err != nil {
|
||||||
return nil
|
return nil
|
||||||
} else {
|
} else {
|
||||||
if user != nil {
|
if user != nil {
|
||||||
|
@ -22,12 +22,13 @@ func (this *apiComp) Randlist(session comm.IUserSession, req *pb.FriendRandlistR
|
|||||||
}
|
}
|
||||||
|
|
||||||
//在线玩家列表
|
//在线玩家列表
|
||||||
cuList, err := this.moduleFriend.ModuleUser.CrossUserOnlineList()
|
cuList, err := this.moduleFriend.ModuleUser.UserOnlineList()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
code = pb.ErrorCode_DBError
|
code = pb.ErrorCode_DBError
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
recommend := 5 //推荐数量
|
||||||
//过滤
|
//过滤
|
||||||
var newList []*pb.CacheUser
|
var newList []*pb.CacheUser
|
||||||
for _, v := range cuList {
|
for _, v := range cuList {
|
||||||
@ -47,10 +48,9 @@ func (this *apiComp) Randlist(session comm.IUserSession, req *pb.FriendRandlistR
|
|||||||
newList = append(newList, v)
|
newList = append(newList, v)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 只随机选择5个在线玩家
|
|
||||||
var randOnlineUsers []string
|
var randOnlineUsers []string
|
||||||
if len(newList) > 5 {
|
if len(newList) > recommend {
|
||||||
randArr := utils.Numbers(0, len(newList), 5)
|
randArr := utils.Numbers(0, len(newList), recommend)
|
||||||
for _, v := range randArr {
|
for _, v := range randArr {
|
||||||
if newList[v] != nil {
|
if newList[v] != nil {
|
||||||
randOnlineUsers = append(randOnlineUsers, newList[v].Uid)
|
randOnlineUsers = append(randOnlineUsers, newList[v].Uid)
|
@ -23,7 +23,7 @@ func (this *apiComp) Search(session comm.IUserSession, req *pb.FriendSearchReq)
|
|||||||
|
|
||||||
resp := &pb.FriendSearchResp{}
|
resp := &pb.FriendSearchResp{}
|
||||||
|
|
||||||
users, err := this.moduleFriend.ModuleUser.CrossSearchUser(req.NickName)
|
users, err := this.moduleFriend.ModuleUser.SearchRmoteUser(req.NickName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
code = pb.ErrorCode_DBError
|
code = pb.ErrorCode_DBError
|
||||||
return
|
return
|
@ -97,11 +97,11 @@ func (this *apiComp) Login(session comm.IUserSession, req *pb.UserLoginReq) (cod
|
|||||||
//不是新账号
|
//不是新账号
|
||||||
if !isNewUser {
|
if !isNewUser {
|
||||||
lastLoginTime := user.Logintime
|
lastLoginTime := user.Logintime
|
||||||
update := map[string]interface{}{
|
user.Logintime = time.Now().Unix()
|
||||||
"logintime": time.Now().Unix(),
|
user.Lastloginip = session.GetIP()
|
||||||
"lastloginip": session.GetIP(),
|
user.Offlinetime = 0
|
||||||
}
|
update := utils.StructToMap(user)
|
||||||
err = this.module.modelUser.ChangeList(user.Uid, user.Id, update)
|
err = this.module.modelUser.Change(user.Uid, update)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
code = pb.ErrorCode_DBError
|
code = pb.ErrorCode_DBError
|
||||||
return
|
return
|
||||||
|
@ -95,6 +95,15 @@ func (this *User) GetCrossUser(uid string) (*pb.DBUser, error) {
|
|||||||
return reply, err
|
return reply, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取远程用户数据sss
|
||||||
|
func (this *User) GetRmoteUser(uid string) (*pb.DBUser, error) {
|
||||||
|
reply := &pb.DBUser{}
|
||||||
|
if err := this.getUserFromRemoteDb(uid, reply); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return reply, nil
|
||||||
|
}
|
||||||
|
|
||||||
//获取用户会话
|
//获取用户会话
|
||||||
func (this *User) GetUserSession(uid string) *pb.CacheUser {
|
func (this *User) GetUserSession(uid string) *pb.CacheUser {
|
||||||
return this.modelSession.getUserSession(uid)
|
return this.modelSession.getUserSession(uid)
|
||||||
@ -161,6 +170,15 @@ func (this *User) CrossSearchUser(nickName string) ([]*pb.DBUser, error) {
|
|||||||
return reply.Users, nil
|
return reply.Users, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 远程搜索用户
|
||||||
|
func (this *User) SearchRmoteUser(nickname string) ([]*pb.DBUser, error) {
|
||||||
|
reply := &pb.UserDataListResp{}
|
||||||
|
if err := this.queryUserFromRemoteDb(nickname, reply); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return reply.Users, nil
|
||||||
|
}
|
||||||
|
|
||||||
//查询用户属性值 例如 金币 经验
|
//查询用户属性值 例如 金币 经验
|
||||||
func (this *User) QueryAttributeValue(uid string, attr string) (value int64) {
|
func (this *User) QueryAttributeValue(uid string, attr string) (value int64) {
|
||||||
user := this.modelUser.GetUser(uid)
|
user := this.modelUser.GetUser(uid)
|
||||||
@ -330,10 +348,54 @@ func (this *User) ChangeUserExpand(uid string, value map[string]interface{}) err
|
|||||||
return this.modelExpand.ChangeUserExpand(uid, value)
|
return this.modelExpand.ChangeUserExpand(uid, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 从远程库查询用户
|
||||||
|
func (this *User) getUserFromRemoteDb(uid string, rsp *pb.DBUser) error {
|
||||||
|
sid, _, ok := utils.UIdSplit(uid)
|
||||||
|
if !ok {
|
||||||
|
return errors.New("sid split error")
|
||||||
|
}
|
||||||
|
conn, err := db.ServerDBConn(sid)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("cross db err: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
model := db.NewDBModel(comm.TableUser, 0, conn)
|
||||||
|
|
||||||
|
if err := model.Get(uid, rsp); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *User) queryUserFromRemoteDb(name string, reply *pb.UserDataListResp) error {
|
||||||
|
// 区服列表
|
||||||
|
for _, tag := range db.GetServerTags() {
|
||||||
|
conn, err := db.ServerDBConn(tag)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询用户
|
||||||
|
filter := bson.M{
|
||||||
|
"name": name,
|
||||||
|
}
|
||||||
|
sr := conn.Mgo.FindOne(comm.TableUser, filter)
|
||||||
|
user := &pb.DBUser{}
|
||||||
|
if err = sr.Decode(user); err != nil {
|
||||||
|
if err != mongo.ErrNoDocuments {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if user.Uid != "" {
|
||||||
|
reply.Users = append(reply.Users, user)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (this *User) RpcGetAllOnlineUser(ctx context.Context, args *pb.EmptyReq, reply *pb.UserOnlineResp) error {
|
func (this *User) RpcGetAllOnlineUser(ctx context.Context, args *pb.EmptyReq, reply *pb.UserOnlineResp) error {
|
||||||
conn, err := db.Local()
|
conn, err := db.Local()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("cross db err: %v", err)
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
model := db.NewDBModel(comm.TableSession, 0, conn)
|
model := db.NewDBModel(comm.TableSession, 0, conn)
|
||||||
@ -346,60 +408,24 @@ func (this *User) RpcGetAllOnlineUser(ctx context.Context, args *pb.EmptyReq, re
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *User) RpcGetCrossUser(ctx context.Context, req *pb.UIdReq, reply *pb.DBUser) error {
|
func (this *User) RpcGetCrossUser(ctx context.Context, req *pb.UIdReq, reply *pb.DBUser) error {
|
||||||
sid, _, ok := utils.UIdSplit(req.Uid)
|
return this.getUserFromRemoteDb(req.Uid, reply)
|
||||||
if !ok {
|
|
||||||
return errors.New("sid split error")
|
|
||||||
}
|
|
||||||
conn, err := db.ServerDBConn(sid)
|
|
||||||
if err != nil {
|
|
||||||
log.Errorf("cross db err: %v", err)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
model := db.NewDBModel(comm.TableUser, 0, conn)
|
|
||||||
|
|
||||||
if err := model.Get(req.Uid, reply); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *User) RpcGetCrossUserSession(ctx context.Context, req *pb.UIdReq, reply *pb.CacheUser) error {
|
func (this *User) RpcGetCrossUserSession(ctx context.Context, req *pb.UIdReq, reply *pb.CacheUser) error {
|
||||||
conn, err := db.Local()
|
conn, err := db.Local()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("cross db err: %v", err)
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
model := db.NewDBModel(comm.TableSession, 0, conn)
|
model := db.NewDBModel(comm.TableSession, 0, conn)
|
||||||
if err := model.GetListObj(comm.RDS_SESSION, req.Uid, reply); err != nil {
|
if err := model.GetListObj(comm.RDS_SESSION, req.Uid, reply); err != nil {
|
||||||
if err != mongo.ErrNoDocuments {
|
if err != mongo.ErrNoDocuments {
|
||||||
log.Errorf("%v", err)
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *User) RpcQueryUser(ctx context.Context, req *pb.NameReq, reply *pb.UserDataListResp) error {
|
func (this *User) RpcQueryUser(ctx context.Context, req *pb.NameReq, reply *pb.UserDataListResp) error {
|
||||||
// 区服列表
|
return this.queryUserFromRemoteDb(req.Name, reply)
|
||||||
for _, tag := range db.GetServerTags() {
|
|
||||||
conn, err := db.ServerDBConn(tag)
|
|
||||||
if err != nil {
|
|
||||||
log.Errorf("cross db err: %v", err)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
//查询用户
|
|
||||||
filter := bson.M{
|
|
||||||
"name": req.Name,
|
|
||||||
}
|
|
||||||
sr := conn.Mgo.FindOne(comm.TableUser, filter)
|
|
||||||
user := &pb.DBUser{}
|
|
||||||
if err = sr.Decode(user); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
reply.Users = append(reply.Users, user)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user