This commit is contained in:
meixiongfeng 2023-09-12 19:11:08 +08:00
commit ae92a60cbc
8 changed files with 96 additions and 60 deletions

View File

@ -76,8 +76,7 @@ func (this *apiComp) ChallengeReward(session comm.IUserSession, req *pb.ArenaCha
redstate = pb.BattleRecordState_AttackWin
bulestate = pb.BattleRecordState_DefendLost
}
// this.module.ModuleRtask.SendToRtask(session, comm.Rtype131, 1)
go this.module.ModuleBuried.TriggerBuried(session.Clone(), comm.GetBuriedParam(comm.Rtype131, 1))
tasks = append(tasks, comm.GetBuriedParam(comm.Rtype131, 1))
} else {
info.Streak = 0
if req.Revengeid != "" {

View File

@ -251,8 +251,11 @@ func (this *apiComp) BuyOrSell(session comm.IUserSession, req *pb.CaravanBuyOrSe
// Rtype211 TaskType = 211 // 向指定X城市贩卖价值X虚拟币以上的对应城市急需货物
tasks = append(tasks, comm.GetBuriedParam(comm.Rtype211, req.City, sellSpValue))
}
if len(tasks) > 0 {
go this.module.AsynHandleSession(session.Clone(), func(session comm.IUserSession) {
this.module.ModuleBuried.TriggerBuried(session, tasks...)
})
}
return
}

View File

@ -98,6 +98,7 @@ locp:
if errdata == nil {
// this.gateway.Debugf("----------2 agent:%s uId:%s MainType:%s SubType:%s ", this.sessionId, this.uId, msg.MainType, msg.SubType)
if msg.MainType == string(comm.ModuleUser) && msg.SubType == "login" { //登录排队
if this.uId == "" {
if this.queueIndex, err = this.gateway.InLoginQueue(this.sessionId, msg); err != nil {
this.gateway.Errorf("messageDistribution err:%v", err)
data, _ := anypb.New(&pb.NotifyErrorNotifyPush{
@ -106,7 +107,7 @@ locp:
ReqSubType: msg.SubType,
Arg: msg.Data,
Code: pb.ErrorCode_GatewayException,
Err: &pb.ErrorData{Title: "用户消息处理失败!", Datastring: err.Error()},
Err: &pb.ErrorData{Code: pb.ErrorCode_GatewayException, Title: pb.ErrorCode_GatewayException.String(), Datastring: err.Error()},
})
err = this.WriteMsg(&pb.UserMessage{
MsgId: msg.MsgId,
@ -129,6 +130,22 @@ locp:
})
}
}
} else {
data, _ := anypb.New(&pb.NotifyErrorNotifyPush{
MsgId: msg.MsgId,
ReqMainType: msg.MainType,
ReqSubType: msg.SubType,
Arg: msg.Data,
Code: pb.ErrorCode_ReqParameterError,
Err: &pb.ErrorData{Code: pb.ErrorCode_ReqParameterError, Title: "Repeat login!", Datastring: err.Error()},
})
err = this.WriteMsg(&pb.UserMessage{
MsgId: msg.MsgId,
MainType: comm.MainTypeNotify,
SubType: comm.SubTypeErrorNotify,
Data: data,
})
}
continue
}
@ -487,6 +504,18 @@ func (this *Agent) messageDistribution(msg *pb.UserMessage) (err error) {
for _, v := range reply.Reply {
if v.MainType == msg.MainType && v.SubType == msg.SubType {
v.MsgId = msg.MsgId
if msg.MainType == string(comm.ModuleUser) && msg.SubType == "login" { //登录回包
var (
resp proto.Message
loginresp *pb.UserLoginResp
)
if resp, err = v.Data.UnmarshalNew(); err != nil {
return
}
loginresp = resp.(*pb.UserLoginResp)
this.uId = loginresp.Data.Uid
this.gateway.LoginNotice(this)
}
}
}
if err = this.WriteMsgs(reply.Reply); err != nil {

View File

@ -99,31 +99,31 @@ func (this *AgentMgrComp) DisConnect(a IAgent) {
}
// Bind 用户绑定Id
func (this *AgentMgrComp) Bind(ctx context.Context, args *pb.AgentBuildReq, reply *pb.RPCMessageReply) error {
if a, ok := this.agents.Load(args.UserSessionId); ok {
agent := a.(IAgent)
agent.Bind(args.UserId, args.WorkerId)
// if this.options.SpanServiceTag != "" { //跨服集群配置存在 推送通知过去
//推送跨服集群处理
if _, err := this.service.AcrossClusterRpcGo(context.Background(), db.CrossTag(), comm.Service_Worker, string(comm.Rpc_GatewayNoticeUserLogin), &pb.NoticeUserLoginReq{
Ip: agent.IP(),
ServiceTag: this.service.GetTag(),
GatewayServiceId: this.service.GetId(),
UserSessionId: agent.SessionId(),
UserId: agent.UserId(),
}, nil); err != nil {
log.Errorf("uId:%s clusterTag:%s Rpc_NoticeUserLogin err:%v", agent.UserId(), db.CrossTag(), err)
}
// }
} else {
reply.ErrorData = &pb.ErrorData{
Code: pb.ErrorCode_UserSessionNobeing,
Title: pb.ErrorCode_UserSessionNobeing.ToString(),
Message: fmt.Sprintf("绑定uid:%s失败!", args.WorkerId),
}
}
return nil
}
// func (this *AgentMgrComp) Bind(ctx context.Context, args *pb.AgentBuildReq, reply *pb.RPCMessageReply) error {
// if a, ok := this.agents.Load(args.UserSessionId); ok {
// agent := a.(IAgent)
// agent.Bind(args.UserId, args.WorkerId)
// // if this.options.SpanServiceTag != "" { //跨服集群配置存在 推送通知过去
// //推送跨服集群处理
// if _, err := this.service.AcrossClusterRpcGo(context.Background(), db.CrossTag(), comm.Service_Worker, string(comm.Rpc_GatewayNoticeUserLogin), &pb.NoticeUserLoginReq{
// Ip: agent.IP(),
// ServiceTag: this.service.GetTag(),
// GatewayServiceId: this.service.GetId(),
// UserSessionId: agent.SessionId(),
// UserId: agent.UserId(),
// }, nil); err != nil {
// log.Errorf("uId:%s clusterTag:%s Rpc_NoticeUserLogin err:%v", agent.UserId(), db.CrossTag(), err)
// }
// // }
// } else {
// reply.ErrorData = &pb.ErrorData{
// Code: pb.ErrorCode_UserSessionNobeing,
// Title: pb.ErrorCode_UserSessionNobeing.ToString(),
// Message: fmt.Sprintf("绑定uid:%s失败!", args.WorkerId),
// }
// }
// return nil
// }
// UnBind 用户解绑Id
func (this *AgentMgrComp) UnBind(ctx context.Context, args *pb.AgentUnBuildReq, reply *pb.RPCMessageReply) error {

View File

@ -31,6 +31,7 @@ type (
Service() base.IRPCXService
Connect(a IAgent)
DisConnect(a IAgent)
LoginNotice(a IAgent)
GetMsgDistribute(msgmid, msguid string) (rule string, ok bool)
InLoginQueue(sessionId string, login *pb.UserMessage) (index int32, err error)
}

View File

@ -5,6 +5,7 @@ import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/sys/db"
"go_dreamfactory/lego/base"
"go_dreamfactory/lego/core"
@ -62,7 +63,7 @@ func (this *Gateway) Start() (err error) {
_name2Func := map[string]any{
// 注册用户绑定uid接口 登录成功后触发
string(comm.Rpc_GatewayAgentBind): this.agentMgr.Bind,
// string(comm.Rpc_GatewayAgentBind): this.agentMgr.Bind,
// 注册用户解绑uid接口 登出或则切换账号是触发
string(comm.Rpc_GatewayAgentUnBind): this.agentMgr.UnBind,
// 向用户发送消息接口
@ -109,6 +110,18 @@ func (this *Gateway) DisConnect(a IAgent) {
this.agentMgr.DisConnect(a)
}
func (this *Gateway) LoginNotice(a IAgent) {
if _, err := this.service.AcrossClusterRpcGo(context.Background(), db.CrossTag(), comm.Service_Worker, string(comm.Rpc_GatewayNoticeUserLogin), &pb.NoticeUserLoginReq{
Ip: a.IP(),
ServiceTag: this.service.GetTag(),
GatewayServiceId: this.service.GetId(),
UserSessionId: a.SessionId(),
UserId: a.UserId(),
}, nil); err != nil {
log.Errorf("uId:%s clusterTag:%s Rpc_NoticeUserLogin err:%v", a.UserId(), db.CrossTag(), err)
}
}
// GetMsgDistribute 读取消息分发规则
func (this *Gateway) GetMsgDistribute(msgmid, msguid string) (rule string, ok bool) {
return this.configure.GetMsgDistribute(msgmid, msguid)

View File

@ -134,7 +134,6 @@ func (this *modelDreamComp) trigger(session comm.IUserSession) {
}
this.module.modelDream.noticeuserfriend(session, mdata.Id, chat)
session.SendMsg(string(this.module.GetType()), "trigger", &pb.MoonfantasyTriggerPush{Issucc: true, Mid: mdata.Id, Monster: mdata.Monster})
// this.module.ModuleRtask.SendToRtask(session, comm.Rtype87, 1)
go this.module.AsynHandleSession(session.Clone(), func(session comm.IUserSession) {
this.module.ModuleBuried.TriggerBuried(session, comm.GetBuriedParam(comm.Rtype87, 1))
})

View File

@ -73,14 +73,6 @@ func (this *apiComp) EventComplete(session comm.IUserSession, req *pb.WTaskEvent
if errdata, award = this.module.DispenseAtno(session, conf.Getitem, true); err != nil {
return
}
// award = make([]*pb.UserAssets, 0)
// for _, v := range conf.Getitem {
// award = append(award, &pb.UserAssets{
// A: v.A,
// T: v.T,
// N: v.N,
// })
// }
}
delete(info.Events, req.Group)
@ -98,10 +90,10 @@ func (this *apiComp) EventComplete(session comm.IUserSession, req *pb.WTaskEvent
tasks = append(tasks, comm.GetBuriedParam(comm.Rtype206, 1))
tasks = append(tasks, comm.GetBuriedParam(comm.Rtype207, 1, req.Group))
session.SendMsg(string(this.module.GetType()), "eventcomplete", &pb.WTaskEventCompleteResp{Group: req.Group, Event: event, Award: award})
go this.module.AsynHandleSession(session.Clone(), func(session comm.IUserSession) {
this.module.ModuleBuried.TriggerBuried(session, tasks...)
})
session.SendMsg(string(this.module.GetType()), "eventcomplete", &pb.WTaskEventCompleteResp{Group: req.Group, Event: event, Award: award})
return
}