diff --git a/bin/json/game_chatchannel.json b/bin/json/game_chatchannel.json
new file mode 100644
index 000000000..ac046640c
--- /dev/null
+++ b/bin/json/game_chatchannel.json
@@ -0,0 +1,27 @@
+[
+ {
+ "key": "channel_lock_world",
+ "tag_list": 1,
+ "speak_cd": 5
+ },
+ {
+ "key": "channel_lock_guild",
+ "tag_list": 2,
+ "speak_cd": 3
+ },
+ {
+ "key": "channel_lock_private",
+ "tag_list": 3,
+ "speak_cd": 3
+ },
+ {
+ "key": "channel_lock_public",
+ "tag_list": 4,
+ "speak_cd": 15
+ },
+ {
+ "key": "channel_lock_system",
+ "tag_list": 5,
+ "speak_cd": 0
+ }
+]
\ No newline at end of file
diff --git a/bin/json/game_chatchannelcom.json b/bin/json/game_chatchannelcom.json
new file mode 100644
index 000000000..278d14e51
--- /dev/null
+++ b/bin/json/game_chatchannelcom.json
@@ -0,0 +1,32 @@
+[
+ {
+ "key": "max_word",
+ "value": 200,
+ "dec": "输入框最大字数为value"
+ },
+ {
+ "key": "max_chat",
+ "value": 99,
+ "dec": "最大保存条数为value"
+ },
+ {
+ "key": "max_object",
+ "value": 50,
+ "dec": "最大私聊对象数为value"
+ },
+ {
+ "key": "load_chat",
+ "value": 10,
+ "dec": "加入或切换跨服频道时,请求最近value条历史消息"
+ },
+ {
+ "key": "channel_allocation_max",
+ "value": 2000,
+ "dec": "频道大于value人时不再继续分配"
+ },
+ {
+ "key": "channel_switching_max",
+ "value": 3000,
+ "dec": "频道大于value人时不再接受手动切换到该频道"
+ }
+]
\ No newline at end of file
diff --git a/bin/json/game_chatservergroup.json b/bin/json/game_chatservergroup.json
new file mode 100644
index 000000000..26bbd93ab
--- /dev/null
+++ b/bin/json/game_chatservergroup.json
@@ -0,0 +1,82 @@
+[
+ {
+ "server": "dreamfactory_liwei",
+ "group": 1
+ },
+ {
+ "server": "2",
+ "group": 1
+ },
+ {
+ "server": "3",
+ "group": 1
+ },
+ {
+ "server": "4",
+ "group": 1
+ },
+ {
+ "server": "5",
+ "group": 1
+ },
+ {
+ "server": "6",
+ "group": 1
+ },
+ {
+ "server": "7",
+ "group": 1
+ },
+ {
+ "server": "8",
+ "group": 1
+ },
+ {
+ "server": "9",
+ "group": 1
+ },
+ {
+ "server": "10",
+ "group": 2
+ },
+ {
+ "server": "11",
+ "group": 2
+ },
+ {
+ "server": "12",
+ "group": 2
+ },
+ {
+ "server": "13",
+ "group": 2
+ },
+ {
+ "server": "14",
+ "group": 2
+ },
+ {
+ "server": "15",
+ "group": 2
+ },
+ {
+ "server": "16",
+ "group": 2
+ },
+ {
+ "server": "17",
+ "group": 2
+ },
+ {
+ "server": "18",
+ "group": 2
+ },
+ {
+ "server": "19",
+ "group": 2
+ },
+ {
+ "server": "20",
+ "group": 2
+ }
+]
\ No newline at end of file
diff --git a/bin/json/game_chatsystem.json b/bin/json/game_chatsystem.json
new file mode 100644
index 000000000..71828e6ca
--- /dev/null
+++ b/bin/json/game_chatsystem.json
@@ -0,0 +1,143 @@
+[
+ {
+ "key": 10001,
+ "type": 1,
+ "title": "【系统】",
+ "close": "#ff3f3f",
+ "test": "阿宝转转转活动还有3分钟开始了!",
+ "data": 0,
+ "week": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7
+ ],
+ "time_h": 15,
+ "time_m": 57
+ },
+ {
+ "key": 10002,
+ "type": 1,
+ "title": "【系统】",
+ "close": "#ff3f3f",
+ "test": "阿宝转转转活动还有2分钟开始了!",
+ "data": 0,
+ "week": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ "time_h": 15,
+ "time_m": 58
+ },
+ {
+ "key": 10003,
+ "type": 1,
+ "title": "【系统】",
+ "close": "#ff3f3f",
+ "test": "阿宝转转转活动还有1分钟开始了!",
+ "data": 0,
+ "week": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ "time_h": 15,
+ "time_m": 59
+ },
+ {
+ "key": 20001,
+ "type": 2,
+ "title": "【传闻】",
+ "close": "#ffc73f",
+ "test": "[name]经过不懈努力,将[item]强化到了\u002B[data]!",
+ "data": 12,
+ "week": [],
+ "time_h": 0,
+ "time_m": 0
+ },
+ {
+ "key": 20002,
+ "type": 2,
+ "title": "【传闻】",
+ "close": "#ffc73f",
+ "test": "[name]经过不懈努力,将[item]强化到了\u002B[data]!",
+ "data": 13,
+ "week": [],
+ "time_h": 0,
+ "time_m": 0
+ },
+ {
+ "key": 20003,
+ "type": 2,
+ "title": "【传闻】",
+ "close": "#ffc73f",
+ "test": "[name]经过不懈努力,将[item]强化到了\u002B[data]!",
+ "data": 14,
+ "week": [],
+ "time_h": 0,
+ "time_m": 0
+ },
+ {
+ "key": 20004,
+ "type": 2,
+ "title": "【传闻】",
+ "close": "#ffc73f",
+ "test": "[name]经过不懈努力,将[item]强化到了\u002B[data]!",
+ "data": 15,
+ "week": [],
+ "time_h": 0,
+ "time_m": 0
+ },
+ {
+ "key": 30001,
+ "type": 3,
+ "title": "【传闻】",
+ "close": "#ffc73f",
+ "test": "[name]突破了时空塔第[data]层!",
+ "data": 50,
+ "week": [],
+ "time_h": 0,
+ "time_m": 0
+ },
+ {
+ "key": 30002,
+ "type": 3,
+ "title": "【传闻】",
+ "close": "#ffc73f",
+ "test": "[name]突破了时空塔第[data]层!",
+ "data": 100,
+ "week": [],
+ "time_h": 0,
+ "time_m": 0
+ },
+ {
+ "key": 30003,
+ "type": 3,
+ "title": "【传闻】",
+ "close": "#ffc73f",
+ "test": "[name]突破了时空塔第[data]层!",
+ "data": 150,
+ "week": [],
+ "time_h": 0,
+ "time_m": 0
+ },
+ {
+ "key": 30004,
+ "type": 3,
+ "title": "【传闻】",
+ "close": "#ffc73f",
+ "test": "[name]突破了时空塔第[data]层!",
+ "data": 200,
+ "week": [],
+ "time_h": 0,
+ "time_m": 0
+ }
+]
\ No newline at end of file
diff --git a/lego/sys/rpcx/client.go b/lego/sys/rpcx/client.go
index 7d6024bb7..2d746f807 100644
--- a/lego/sys/rpcx/client.go
+++ b/lego/sys/rpcx/client.go
@@ -111,249 +111,72 @@ func (this *Client) UnregisterAll() (err error) {
//同步调用
func (this *Client) Call(ctx context.Context, servicePath string, serviceMethod string, args interface{}, reply interface{}) (err error) {
- if servicePath == "" {
- err = errors.New("servicePath no cant null")
+ var (
+ _client client.XClient
+ )
+ if _client, err = this.getclient(&ctx, this.options.ServiceTag, servicePath); err != nil {
return
}
- var (
- spath []string
- clients map[string]client.XClient
- d *client.ConsulDiscovery
- c client.XClient
- ok bool
- )
- spath = strings.Split(servicePath, "/")
- if clients, ok = this.clusterClients[this.options.ServiceTag]; !ok {
- this.clusterClients[this.options.ServiceTag] = make(map[string]client.XClient)
- clients = this.clusterClients[this.options.ServiceTag]
- } else {
- if c, ok = clients[spath[0]]; !ok {
- if d, err = client.NewConsulDiscovery(this.options.ServiceTag, spath[0], this.options.ConsulServers, nil); err != nil {
- return
- }
- c = client.NewBidirectionalXClient(spath[0], client.Failfast, client.RandomSelect, d, client.DefaultOption, this.msgChan)
- c.GetPlugins().Add(this)
- if this.options.RpcxStartType == RpcxStartByClient && this.options.AutoConnect {
- c.SetSelector(newSelector(this.UpdateServer))
- } else {
- c.SetSelector(newSelector(nil))
- }
- clients[spath[0]] = c
- }
- }
- ctx = context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{
- ServiceClusterTag: this.options.ServiceTag,
- CallRoutRulesKey: servicePath,
- ServiceAddrKey: "tcp@" + this.options.ServiceAddr,
- ServiceMetaKey: this.metadata,
- })
- err = c.Call(ctx, serviceMethod, args, reply)
+ err = _client.Call(ctx, serviceMethod, args, reply)
return
}
//异步调用
func (this *Client) Go(ctx context.Context, servicePath string, serviceMethod string, args interface{}, reply interface{}, done chan *client.Call) (call *client.Call, err error) {
- // return this.xclient.Go(ctx, string(serviceMethod), args, reply, done)
- if servicePath == "" {
- err = errors.New("servicePath no cant null")
+ var (
+ _client client.XClient
+ )
+ if _client, err = this.getclient(&ctx, this.options.ServiceTag, servicePath); err != nil {
return
}
- var (
- spath []string
- clients map[string]client.XClient
- d *client.ConsulDiscovery
- c client.XClient
- ok bool
- )
- spath = strings.Split(servicePath, "/")
- if clients, ok = this.clusterClients[this.options.ServiceTag]; !ok {
- this.clusterClients[this.options.ServiceTag] = make(map[string]client.XClient)
- clients = this.clusterClients[this.options.ServiceTag]
- } else {
- if c, ok = clients[spath[0]]; !ok {
- if d, err = client.NewConsulDiscovery(this.options.ServiceTag, spath[0], this.options.ConsulServers, nil); err != nil {
- return
- }
- c = client.NewXClient(spath[0], client.Failfast, client.RandomSelect, d, client.DefaultOption)
- c.GetPlugins().Add(this)
- c.SetSelector(newSelector(this.UpdateServer))
- clients[spath[0]] = c
- }
- }
- ctx = context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{
- ServiceClusterTag: this.options.ServiceTag,
- CallRoutRulesKey: servicePath,
- ServiceAddrKey: "tcp@" + this.options.ServiceAddr,
- ServiceMetaKey: this.metadata,
- })
- return c.Go(ctx, string(serviceMethod), args, reply, done)
+ return _client.Go(ctx, string(serviceMethod), args, reply, done)
}
//异步调用
func (this *Client) Broadcast(ctx context.Context, servicePath string, serviceMethod string, args interface{}, reply interface{}) (err error) {
- if servicePath == "" {
- err = errors.New("servicePath no cant null")
+ var (
+ _client client.XClient
+ )
+ if _client, err = this.getclient(&ctx, this.options.ServiceTag, servicePath); err != nil {
return
}
- var (
- spath []string
- clients map[string]client.XClient
- d *client.ConsulDiscovery
- c client.XClient
- ok bool
- )
- spath = strings.Split(servicePath, "/")
- if clients, ok = this.clusterClients[this.options.ServiceTag]; !ok {
- this.clusterClients[this.options.ServiceTag] = make(map[string]client.XClient)
- clients = this.clusterClients[this.options.ServiceTag]
- } else {
- if c, ok = clients[spath[0]]; !ok {
- if d, err = client.NewConsulDiscovery(this.options.ServiceTag, spath[0], this.options.ConsulServers, nil); err != nil {
- return
- }
- c = client.NewBidirectionalXClient(spath[0], client.Failfast, client.RandomSelect, d, client.DefaultOption, this.msgChan)
- c.GetPlugins().Add(this)
- if this.options.RpcxStartType == RpcxStartByClient && this.options.AutoConnect {
- c.SetSelector(newSelector(this.UpdateServer))
- } else {
- c.SetSelector(newSelector(nil))
- }
- clients[spath[0]] = c
- }
- }
- ctx = context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{
- ServiceClusterTag: this.options.ServiceTag,
- CallRoutRulesKey: servicePath,
- ServiceAddrKey: "tcp@" + this.options.ServiceAddr,
- ServiceMetaKey: this.metadata,
- })
- err = c.Broadcast(ctx, serviceMethod, args, reply)
+ err = _client.Broadcast(ctx, serviceMethod, args, reply)
return
}
//跨集群 同步调用
func (this *Client) AcrossClusterCall(ctx context.Context, clusterTag string, servicePath string, serviceMethod string, args interface{}, reply interface{}) (err error) {
- if servicePath == "" {
- err = errors.New("servicePath no cant null")
+ var (
+ _client client.XClient
+ )
+ if _client, err = this.getclient(&ctx, clusterTag, servicePath); err != nil {
return
}
- var (
- spath []string
- clients map[string]client.XClient
- d *client.ConsulDiscovery
- c client.XClient
- ok bool
- )
- spath = strings.Split(servicePath, "/")
- if clients, ok = this.clusterClients[clusterTag]; !ok {
- this.clusterClients[clusterTag] = make(map[string]client.XClient)
- clients = this.clusterClients[clusterTag]
- } else {
- if c, ok = clients[spath[0]]; !ok {
- if d, err = client.NewConsulDiscovery(clusterTag, spath[0], this.options.ConsulServers, nil); err != nil {
- return
- }
- c = client.NewBidirectionalXClient(spath[0], client.Failfast, client.RandomSelect, d, client.DefaultOption, this.msgChan)
- c.GetPlugins().Add(this)
- if this.options.RpcxStartType == RpcxStartByClient && this.options.AutoConnect {
- c.SetSelector(newSelector(this.UpdateServer))
- } else {
- c.SetSelector(newSelector(nil))
- }
- clients[spath[0]] = c
- }
- }
- ctx = context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{
- ServiceClusterTag: clusterTag,
- CallRoutRulesKey: servicePath,
- ServiceAddrKey: "tcp@" + this.options.ServiceAddr,
- ServiceMetaKey: this.metadata,
- })
- err = c.Call(ctx, serviceMethod, args, reply)
+ err = _client.Call(ctx, serviceMethod, args, reply)
return
}
//跨集群 异步调用
func (this *Client) AcrossClusterGo(ctx context.Context, clusterTag string, servicePath string, serviceMethod string, args interface{}, reply interface{}, done chan *client.Call) (call *client.Call, err error) {
- if servicePath == "" {
- err = errors.New("servicePath no cant null")
+ var (
+ _client client.XClient
+ )
+ if _client, err = this.getclient(&ctx, clusterTag, servicePath); err != nil {
return
}
- var (
- spath []string
- clients map[string]client.XClient
- d *client.ConsulDiscovery
- c client.XClient
- ok bool
- )
- spath = strings.Split(servicePath, "/")
- if clients, ok = this.clusterClients[clusterTag]; !ok {
- this.clusterClients[clusterTag] = make(map[string]client.XClient)
- clients = this.clusterClients[clusterTag]
- } else {
- if c, ok = clients[spath[0]]; !ok {
- if d, err = client.NewConsulDiscovery(clusterTag, spath[0], this.options.ConsulServers, nil); err != nil {
- return
- }
- c = client.NewBidirectionalXClient(spath[0], client.Failfast, client.RandomSelect, d, client.DefaultOption, this.msgChan)
- c.GetPlugins().Add(this)
- if this.options.RpcxStartType == RpcxStartByClient && this.options.AutoConnect {
- c.SetSelector(newSelector(this.UpdateServer))
- } else {
- c.SetSelector(newSelector(nil))
- }
- clients[spath[0]] = c
- }
- }
- ctx = context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{
- ServiceClusterTag: this.options.ServiceTag,
- CallRoutRulesKey: servicePath,
- ServiceAddrKey: "tcp@" + this.options.ServiceAddr,
- ServiceMetaKey: this.metadata,
- })
- return c.Go(ctx, string(serviceMethod), args, reply, done)
+
+ return _client.Go(ctx, string(serviceMethod), args, reply, done)
}
//跨集群 广播
func (this *Client) AcrossClusterBroadcast(ctx context.Context, clusterTag string, servicePath string, serviceMethod string, args interface{}, reply interface{}) (err error) {
- if servicePath == "" {
- err = errors.New("servicePath no cant null")
+ var (
+ _client client.XClient
+ )
+ if _client, err = this.getclient(&ctx, clusterTag, servicePath); err != nil {
return
}
- var (
- spath []string
- clients map[string]client.XClient
- d *client.ConsulDiscovery
- c client.XClient
- ok bool
- )
- spath = strings.Split(servicePath, "/")
- if clients, ok = this.clusterClients[clusterTag]; !ok {
- this.clusterClients[clusterTag] = make(map[string]client.XClient)
- clients = this.clusterClients[clusterTag]
- } else {
- if c, ok = clients[spath[0]]; !ok {
- if d, err = client.NewConsulDiscovery(this.options.ServiceTag, spath[0], this.options.ConsulServers, nil); err != nil {
- return
- }
- c = client.NewBidirectionalXClient(spath[0], client.Failfast, client.RandomSelect, d, client.DefaultOption, this.msgChan)
- c.GetPlugins().Add(this)
- if this.options.RpcxStartType == RpcxStartByClient && this.options.AutoConnect {
- c.SetSelector(newSelector(this.UpdateServer))
- } else {
- c.SetSelector(newSelector(nil))
- }
- clients[spath[0]] = c
- }
- }
- ctx = context.WithValue(ctx, share.ReqMetaDataKey, map[string]string{
- ServiceClusterTag: this.options.ServiceTag,
- CallRoutRulesKey: servicePath,
- ServiceAddrKey: "tcp@" + this.options.ServiceAddr,
- ServiceMetaKey: this.metadata,
- })
- err = c.Broadcast(ctx, serviceMethod, args, reply)
- return
+ return _client.Broadcast(ctx, serviceMethod, args, reply)
}
func (this *Client) ClusterBroadcast(ctx context.Context, servicePath string, serviceMethod string, args interface{}, reply interface{}) (err error) {
@@ -442,7 +265,7 @@ func (this *Client) ClientConnected(conn net.Conn) (net.Conn, error) {
this.connectMapMu.Lock()
delete(this.connecting, addr)
this.connectMapMu.Unlock()
- this.Errorf("ClientConnected addr:%v", addr)
+ this.Debugf("ClientConnected addr:%v", addr)
return conn, nil
}
@@ -452,6 +275,7 @@ func (this *Client) ClientConnectionClose(conn net.Conn) error {
this.connsMapMu.Lock()
delete(this.conns, addr)
this.connsMapMu.Unlock()
+ this.Debugf("ClientConnectionClose addr:%v", addr)
return nil
}
@@ -496,6 +320,46 @@ func (this *Client) Fatalf(format string, a ...interface{}) {
}
}
+//获取目标客户端
+func (this *Client) getclient(ctx *context.Context, clusterTag string, servicePath string) (c client.XClient, err error) {
+ if servicePath == "" {
+ err = errors.New("servicePath no cant null")
+ return
+ }
+ var (
+ spath []string
+ clients map[string]client.XClient
+ d *client.ConsulDiscovery
+ ok bool
+ )
+ spath = strings.Split(servicePath, "/")
+ if clients, ok = this.clusterClients[clusterTag]; !ok {
+ this.clusterClients[clusterTag] = make(map[string]client.XClient)
+ clients = this.clusterClients[clusterTag]
+ }
+
+ if c, ok = clients[spath[0]]; !ok {
+ if d, err = client.NewConsulDiscovery(this.options.ServiceTag, spath[0], this.options.ConsulServers, nil); err != nil {
+ return
+ }
+ c = client.NewBidirectionalXClient(spath[0], client.Failfast, client.RandomSelect, d, client.DefaultOption, this.msgChan)
+ c.GetPlugins().Add(this)
+ if this.options.RpcxStartType == RpcxStartByClient && this.options.AutoConnect {
+ c.SetSelector(newSelector(this.UpdateServer))
+ } else {
+ c.SetSelector(newSelector(nil))
+ }
+ clients[spath[0]] = c
+ }
+ *ctx = context.WithValue(*ctx, share.ReqMetaDataKey, map[string]string{
+ ServiceClusterTag: this.options.ServiceTag,
+ CallRoutRulesKey: servicePath,
+ ServiceAddrKey: "tcp@" + this.options.ServiceAddr,
+ ServiceMetaKey: this.metadata,
+ })
+ return
+}
+
//注册服务方法
func (this *Client) registerFunction(servicePath string, fn interface{}, name string, useName bool) (string, error) {
this.serviceMapMu.Lock()
diff --git a/modules/chat/api_chanagechannel.go b/modules/chat/api_chanagechannel.go
index 0feb23d43..caf874f78 100644
--- a/modules/chat/api_chanagechannel.go
+++ b/modules/chat/api_chanagechannel.go
@@ -29,7 +29,7 @@ func (this *apiComp) ChanageChannel(session comm.IUserSession, req *pb.ChatChana
return
}
this.module.modelChat.ChanageUserExpand(session.GetUserId(), map[string]interface{}{
- "Chatchannel": req.ChannelId,
+ "chatchannel": req.ChannelId,
})
}
session.SendMsg(string(this.module.GetType()), "chanagechannel", &pb.ChatChanageChannelResp{ChannelId: req.ChannelId, IsSucc: ok})
diff --git a/modules/chat/api_crosschannel.go b/modules/chat/api_crosschannel.go
index b1918f95d..dd8992a40 100644
--- a/modules/chat/api_crosschannel.go
+++ b/modules/chat/api_crosschannel.go
@@ -24,8 +24,8 @@ func (this *apiComp) CrossChannel(session comm.IUserSession, req *pb.ChatCrossCh
return
}
this.module.modelChat.ChanageUserExpand(session.GetUserId(), map[string]interface{}{
- "catchannel": channel,
+ "chatchannel": channel,
})
- session.SendMsg(string(this.module.GetType()), "getlist", &pb.ChatCrossChannelResp{ChannelId: channel})
+ session.SendMsg(string(this.module.GetType()), "crosschannel", &pb.ChatCrossChannelResp{ChannelId: channel})
return
}
diff --git a/modules/chat/api_send.go b/modules/chat/api_send.go
index ccc1b5c1f..8d8a35453 100644
--- a/modules/chat/api_send.go
+++ b/modules/chat/api_send.go
@@ -19,10 +19,19 @@ func (this *apiComp) SendCheck(session comm.IUserSession, req *pb.ChatSendReq) (
///消息发送请求
func (this *apiComp) Send(session comm.IUserSession, req *pb.ChatSendReq) (code pb.ErrorCode, data proto.Message) {
var (
- err error
- msg *pb.DBChat
- user *pb.DBUser
+ err error
+ max int32
+ msg *pb.DBChat
+ user *pb.DBUser
+ max_chat int32
)
+
+ if user = this.module.ModuleUser.GetUser(session.GetUserId()); user == nil {
+ this.module.Errorf("GetUser is nill")
+ code = pb.ErrorCode_DBError
+ return
+ }
+
msg = &pb.DBChat{
Id: primitive.NewObjectID().Hex(),
Channel: req.Channel,
@@ -31,9 +40,17 @@ func (this *apiComp) Send(session comm.IUserSession, req *pb.ChatSendReq) (code
Content: req.Content,
Ctime: time.Now().Unix(),
}
+ if max, err = this.module.configure.GetChannelRecordMax(); err != nil {
+ code = pb.ErrorCode_ConfigNoFound
+ return
+ }
+ if max_chat, err = this.module.configure.GetChannelRecordMax(); err != nil {
+ code = pb.ErrorCode_ConfigNoFound
+ return
+ }
switch msg.Channel {
case pb.ChatChannel_World:
- if err = this.module.modelChat.addChatMsg(worldchatkey, this.module.configure.GetChannelRecordMax(), msg); err != nil {
+ if err = this.module.modelChat.addChatMsg(worldchatkey, max, msg); err != nil {
code = pb.ErrorCode_DBError
return
}
@@ -41,7 +58,7 @@ func (this *apiComp) Send(session comm.IUserSession, req *pb.ChatSendReq) (code
break
case pb.ChatChannel_Union:
msg.UnionId = req.TargetId
- if err = this.module.modelChat.addChatMsg(fmt.Sprintf("%s:%s", unionchatkey, req.TargetId), this.module.configure.GetChannelRecordMax(), msg); err != nil {
+ if err = this.module.modelChat.addChatMsg(fmt.Sprintf("%s:%s", unionchatkey, req.TargetId), max_chat, msg); err != nil {
code = pb.ErrorCode_DBError
return
}
diff --git a/modules/chat/api_spangetlist.go b/modules/chat/api_spangetlist.go
index 1ce8ba389..670f33217 100644
--- a/modules/chat/api_spangetlist.go
+++ b/modules/chat/api_spangetlist.go
@@ -19,6 +19,7 @@ func (this *apiComp) SpanGetList(session comm.IUserSession, req *pb.ChatSpanGetL
err error
result *pb.DBUserExpand
list []*pb.DBChat
+ group int32
)
if result, err = this.module.modelChat.GetUserExpand(session.GetUserId()); err != nil {
this.module.Errorf("err:%v", err)
@@ -28,7 +29,10 @@ func (this *apiComp) SpanGetList(session comm.IUserSession, req *pb.ChatSpanGetL
code = pb.ErrorCode_ReqParameterError
return
}
- group := this.module.configure.GetServiecTagGroup(session.GetServiecTag())
+ if group, err = this.module.configure.GetServiecTagGroup(session.GetServiecTag()); err != nil {
+ code = pb.ErrorCode_ConfigNoFound
+ return
+ }
switch req.Channel {
case pb.ChatChannel_CrossServer:
if list, err = this.module.modelChat.GetChatQueue(req.Channel, 0, group, req.ChannelId); err != nil {
@@ -43,6 +47,6 @@ func (this *apiComp) SpanGetList(session comm.IUserSession, req *pb.ChatSpanGetL
}
break
}
- session.SendMsg(string(this.module.GetType()), "getlist", &pb.ChatSpanGetListResp{Chats: list})
+ session.SendMsg(string(this.module.GetType()), "spangetlist", &pb.ChatSpanGetListResp{Chats: list})
return
}
diff --git a/modules/chat/api_spansend.go b/modules/chat/api_spansend.go
index 4cd672628..8b0f262b0 100644
--- a/modules/chat/api_spansend.go
+++ b/modules/chat/api_spansend.go
@@ -23,6 +23,8 @@ func (this *apiComp) SpanSend(session comm.IUserSession, req *pb.ChatSpanSendReq
msg *pb.DBChat
user *pb.DBUser
userexpand *pb.DBUserExpand
+ group int32
+ max_chat int32
)
if userexpand, err = this.module.modelChat.GetUserExpand(session.GetUserId()); err != nil {
code = pb.ErrorCode_DBError
@@ -37,16 +39,22 @@ func (this *apiComp) SpanSend(session comm.IUserSession, req *pb.ChatSpanSendReq
Content: req.Content,
Ctime: time.Now().Unix(),
}
- group := this.module.configure.GetServiecTagGroup(session.GetServiecTag())
+ if group, err = this.module.configure.GetServiecTagGroup(session.GetServiecTag()); err != nil {
+ code = pb.ErrorCode_ConfigNoFound
+ return
+ }
+ if max_chat, err = this.module.configure.GetChannelRecordMax(); err != nil {
+ return
+ }
switch msg.Channel {
case pb.ChatChannel_CrossServer:
- if err = this.module.modelChat.addChatMsg(fmt.Sprintf("%s:%d--%d", crosschatkey, group, userexpand.Chatchannel), this.module.configure.GetChannelRecordMax(), msg); err != nil {
+ if err = this.module.modelChat.addChatMsg(fmt.Sprintf("%s:%d--%d", crosschatkey, group, userexpand.Chatchannel), max_chat, msg); err != nil {
code = pb.ErrorCode_DBError
return
}
this.module.PushToUsers(group, userexpand.Chatchannel, msg)
break
}
- session.SendMsg(string(this.module.GetType()), "send", &pb.ChatSendResp{})
+ session.SendMsg(string(this.module.GetType()), "spansend", &pb.ChatSendResp{})
return
}
diff --git a/modules/chat/configure.go b/modules/chat/configure.go
index e85284abb..30ad72729 100644
--- a/modules/chat/configure.go
+++ b/modules/chat/configure.go
@@ -1,43 +1,126 @@
package chat
import (
+ "fmt"
"go_dreamfactory/modules"
+ cfg "go_dreamfactory/sys/configure/structs"
"go_dreamfactory/lego/core"
)
const (
- game_equipment = "game_equipment.json"
+ game_chatchannel = "game_chatchannel.json"
+ game_chatsystem = "game_chatsystem.json"
+ game_chatservergroup = "game_chatservergroup.json"
+ game_chatchannelcom = "game_chatchannelcom.json"
)
///背包配置管理组件
type configureComp struct {
modules.MCompConfigure
+ module *Chat
}
//组件初始化接口
func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.ModuleCompBase.Init(service, module, comp, options)
-
+ this.module = module.(*Chat)
+ this.LoadConfigure(game_chatchannel, cfg.NewGame_chatChannel)
+ this.LoadConfigure(game_chatsystem, cfg.NewGame_chatSystem)
+ this.LoadConfigure(game_chatservergroup, cfg.NewGame_chatServerGroup)
+ this.LoadConfigure(game_chatchannelcom, cfg.NewGame_chatChannelCom)
return
}
//获取服务区 分组
-func (this *configureComp) GetServiecTagGroup(stag string) int32 {
- return 0
+func (this *configureComp) GetServiecTagGroup(stag string) (group int32, err error) {
+ var (
+ v interface{}
+ configure *cfg.Game_chatServerGroupData
+ ok bool
+ )
+ if v, err = this.GetConfigure(game_chatservergroup); err != nil {
+ this.module.Errorf("err:%v", err)
+ return
+ } else {
+ if configure, ok = v.(*cfg.Game_chatServerGroup).GetDataMap()[stag]; !ok {
+ err = fmt.Errorf("cfg.Game_chatServerGroupData on found %v", stag)
+ this.module.Errorf("err:%v", err)
+ return
+ }
+ group = configure.Group
+ }
+ return
}
//获取自动加入频道 任务限制
-func (this *configureComp) GetAutoIntoChannelMax() int {
- return 0
+func (this *configureComp) GetAutoIntoChannelMax() (max int32, err error) {
+ var (
+ v interface{}
+ configure *cfg.Game_chatChannelComData
+ ok bool
+ )
+ if v, err = this.GetConfigure(game_chatchannelcom); err != nil {
+ this.module.Errorf("err:%v", err)
+ return
+ } else {
+ if configure, ok = v.(*cfg.Game_chatChannelCom).GetDataMap()["channel_allocation_max"]; !ok {
+ err = fmt.Errorf("cfg.Game_chatServerGroupData on found channel_allocation_max")
+ this.module.Errorf("err:%v", err)
+ return
+ }
+ max = configure.Value
+ if max <= 0 {
+ err = fmt.Errorf("cfg.Game_chatChannelComData channel_allocation_max:%v", v)
+ }
+ }
+ return
}
//获取手动加入频道 任务限制
-func (this *configureComp) GetChanageChannelMax() int {
- return 0
+func (this *configureComp) GetChanageChannelMax() (max int32, err error) {
+ var (
+ v interface{}
+ configure *cfg.Game_chatChannelComData
+ ok bool
+ )
+ if v, err = this.GetConfigure(game_chatchannelcom); err != nil {
+ this.module.Errorf("err:%v", err)
+ return
+ } else {
+ if configure, ok = v.(*cfg.Game_chatChannelCom).GetDataMap()["channel_switching_max"]; !ok {
+ err = fmt.Errorf("cfg.Game_chatServerGroupData on found channel_switching_max")
+ this.module.Errorf("err:%v", err)
+ return
+ }
+ max = configure.Value
+ if max <= 0 {
+ err = fmt.Errorf("cfg.Game_chatChannelComData channel_switching_max:%v", v)
+ }
+ }
+ return
}
//获取手动加入频道 任务限制
-func (this *configureComp) GetChannelRecordMax() int {
- return 99
+func (this *configureComp) GetChannelRecordMax() (max int32, err error) {
+ var (
+ v interface{}
+ configure *cfg.Game_chatChannelComData
+ ok bool
+ )
+ if v, err = this.GetConfigure(game_chatchannelcom); err != nil {
+ this.module.Errorf("err:%v", err)
+ return
+ } else {
+ if configure, ok = v.(*cfg.Game_chatChannelCom).GetDataMap()["max_chat"]; !ok {
+ err = fmt.Errorf("cfg.Game_chatServerGroupData on found max_chat")
+ this.module.Errorf("err:%v", err)
+ return
+ }
+ max = configure.Value
+ if max <= 0 {
+ err = fmt.Errorf("cfg.Game_chatChannelComData max_chat:%v", v)
+ }
+ }
+ return
}
diff --git a/modules/chat/modelChat.go b/modules/chat/modelChat.go
index dfbb1cd42..e18626a4b 100644
--- a/modules/chat/modelChat.go
+++ b/modules/chat/modelChat.go
@@ -65,11 +65,12 @@ func (this *modelChatComp) QueryUserMsg(uid string) (result []*pb.DBChat, err er
//查询用户未读消息
func (this *modelChatComp) GetChatQueue(channel pb.ChatChannel, union, group, area int32) (result []*pb.DBChat, err error) {
var (
- key string
- cdata []map[string]string
- find bson.M
- c *mongo.Cursor
- n int
+ key string
+ cdata []map[string]string
+ find bson.M
+ c *mongo.Cursor
+ n int
+ max_chat int32
)
switch channel {
case pb.ChatChannel_World:
@@ -99,6 +100,8 @@ func (this *modelChatComp) GetChatQueue(channel pb.ChatChannel, union, group, ar
result[i] = chat
}
}
+ max_chat, err = this.module.configure.GetChannelRecordMax()
+
if err == redis.RedisNil {
//query from mgo
if c, err = this.DB.Find(core.SqlTable(this.TableName), find); err != nil {
@@ -114,7 +117,7 @@ func (this *modelChatComp) GetChatQueue(channel pb.ChatChannel, union, group, ar
n++
}
if len(result) > 0 {
- this.addChatMsg(key, this.module.configure.GetChannelRecordMax(), result...)
+ this.addChatMsg(key, max_chat, result...)
}
}
}
@@ -130,17 +133,25 @@ func (this *modelChatComp) AddCrossChannelMember(session comm.IUserSession) (cha
GatewayServiceId: session.GetGatewayServiceId(),
Ip: session.GetIP(),
}
- channel = 0
- count := 0
- group := this.module.configure.GetServiecTagGroup(session.GetServiecTag())
- maxnum := this.module.configure.GetAutoIntoChannelMax()
+ var (
+ count int
+ group int32
+ maxnum int32
+ )
+ channel = 1
+ if group, err = this.module.configure.GetServiecTagGroup(session.GetServiecTag()); err != nil {
+ return
+ }
+ if maxnum, err = this.module.configure.GetAutoIntoChannelMax(); err != nil {
+ return
+ }
for {
key := fmt.Sprintf("%s:%d--%d-member", crosschatkey, group, channel)
if count, err = this.Redis.Hlen(key); err != nil {
this.module.Errorf("err:%v", err)
return
}
- if count < maxnum {
+ if int32(count) < maxnum {
if err = this.Redis.HMSet(key, map[string]interface{}{session.GetUserId(): udata}); err != nil {
this.module.Errorf("err:%v", err)
return
@@ -161,15 +172,23 @@ func (this *modelChatComp) ChanageChannel(session comm.IUserSession, channel int
GatewayServiceId: session.GetGatewayServiceId(),
Ip: session.GetIP(),
}
- group := this.module.configure.GetServiecTagGroup(session.GetServiecTag())
+ var (
+ group int32
+ maxnum int32
+ )
+ if group, err = this.module.configure.GetServiecTagGroup(session.GetServiecTag()); err != nil {
+ return
+ }
key := fmt.Sprintf("%s:%d--%d-member", crosschatkey, group, channel)
count := 0
- maxnum := this.module.configure.GetChanageChannelMax()
+ if maxnum, err = this.module.configure.GetChanageChannelMax(); err != nil {
+ return
+ }
if count, err = this.Redis.Hlen(key); err != nil {
this.module.Errorf("err:%v", err)
return
}
- if count < maxnum {
+ if int32(count) < maxnum {
if err = this.Redis.HMSet(key, map[string]interface{}{session.GetUserId(): udata}); err != nil {
this.module.Errorf("err:%v", err)
return
@@ -199,7 +218,10 @@ func (this *modelChatComp) RemoveCrossChannelMember(session comm.IUserSession) (
this.module.Errorf("err:%v", err)
return
}
- group := this.module.configure.GetServiecTagGroup(session.GetServiecTag())
+ var group int32
+ if group, err = this.module.configure.GetServiecTagGroup(session.GetServiecTag()); err != nil {
+ return
+ }
key := fmt.Sprintf("%s:%d--%d-member", crosschatkey, group, result.Chatchannel)
if err = this.Redis.HDel(key, session.GetUserId()); err != nil {
this.module.Errorf("err:%v", err)
@@ -216,7 +238,7 @@ func (this *modelChatComp) SaveUserMsg(msg *pb.DBChat) (err error) {
return
}
-func (this *modelChatComp) addChatMsg(key string, count int, msgs ...*pb.DBChat) (err error) {
+func (this *modelChatComp) addChatMsg(key string, count int32, msgs ...*pb.DBChat) (err error) {
var (
tempdata map[string]string
outkey []string
diff --git a/modules/chat/module.go b/modules/chat/module.go
index e9e0b5f1d..5321fc5f5 100644
--- a/modules/chat/module.go
+++ b/modules/chat/module.go
@@ -59,7 +59,7 @@ func (this *Chat) OnInstallComp() {
//Event------------------------------------------------------------------------------------------------------------
func (this *Chat) EventUserOffline(session comm.IUserSession) {
err := this.modelChat.RemoveCrossChannelMember(session)
- this.Debugf("EventUserOffline:%s err:%v", session.GetUserId(), err)
+ this.Debugf("EventUserOffline:%s err:%v", session, err)
}
//Push--------------------------------------------------------------------------------------------------------------
diff --git a/modules/comp_model.go b/modules/comp_model.go
index c8e93bf26..ece4fd735 100644
--- a/modules/comp_model.go
+++ b/modules/comp_model.go
@@ -502,7 +502,8 @@ func (this *MCompModel) GetUserExpand(uid string) (result *pb.DBUserExpand, err
//修改用户扩展数据
func (this *MCompModel) ChanageUserExpand(uid string, value map[string]interface{}) (err error) {
- if err = this.Redis.HSet("userexpand", uid, value); err != nil && err != redis.RedisNil {
+ key := fmt.Sprintf("userexpand:%s", uid)
+ if err = this.Redis.HMSet(key, value); err != nil && err != redis.RedisNil {
return
}
err = this.UpdateModelLogs("userexpand", uid, bson.M{"uid": uid}, value)
@@ -583,7 +584,7 @@ func (this *MCompModel) Batchgetqueues(key string) (result []map[string]string,
}
//批量写入队列 并返回移除队列
-func (this *MCompModel) Batchsetqueues(key string, count int, ks []string, vs []map[string]string) (outkey []string, err error) {
+func (this *MCompModel) Batchsetqueues(key string, count int32, ks []string, vs []map[string]string) (outkey []string, err error) {
var (
n int
keys []string
diff --git a/modules/equipment/configure.go b/modules/equipment/configure.go
index 925c8ec41..62d7ee2c7 100644
--- a/modules/equipment/configure.go
+++ b/modules/equipment/configure.go
@@ -6,7 +6,6 @@ import (
cfg "go_dreamfactory/sys/configure/structs"
"go_dreamfactory/lego/core"
- "go_dreamfactory/lego/sys/log"
)
const (
@@ -19,11 +18,13 @@ const (
///背包配置管理组件
type configureComp struct {
modules.MCompConfigure
+ module *Equipment
}
//组件初始化接口
func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.ModuleCompBase.Init(service, module, comp, options)
+ this.module = module.(*Equipment)
this.LoadConfigure(game_equip, cfg.NewGame_equip)
this.LoadConfigure(equip_attrlibrary, cfg.NewGame_equipAttrlibrary)
this.LoadConfigure(equip_intensify, cfg.NewGame_equipIntensify)
@@ -38,12 +39,12 @@ func (this *configureComp) GetEquipmentConfigure() (configure *cfg.Game_equip, e
ok bool
)
if v, err = this.GetConfigure(game_equip); err != nil {
- log.Errorf("err:%v", err)
+ this.module.Errorf("err:%v", err)
return
} else {
if configure, ok = v.(*cfg.Game_equip); !ok {
err = fmt.Errorf("%T no is *cfg.Game_equipment", v)
- log.Errorf("err:%v", err)
+ this.module.Errorf("err:%v", err)
return
}
}
@@ -57,12 +58,12 @@ func (this *configureComp) GetEquipmentConfigureById(equipmentId int32) (configu
ok bool
)
if v, err = this.GetConfigure(game_equip); err != nil {
- log.Errorf("err:%v", err)
+ this.module.Errorf("err:%v", err)
return
} else {
if configure, ok = v.(*cfg.Game_equip).GetDataMap()[equipmentId]; !ok {
err = fmt.Errorf("EquipmentConfigure not found:%d ", equipmentId)
- log.Errorf("err:%v", err)
+ this.module.Errorf("err:%v", err)
return
}
}
@@ -76,12 +77,12 @@ func (this *configureComp) GetEquipmentAttrlibraryConfigure() (configure *cfg.Ga
ok bool
)
if v, err = this.GetConfigure(equip_attrlibrary); err != nil {
- log.Errorf("err:%v", err)
+ this.module.Errorf("err:%v", err)
return
} else {
if configure, ok = v.(*cfg.Game_equipAttrlibrary); !ok {
err = fmt.Errorf("%T no is *cfg.Game_equipment", v)
- log.Errorf("err:%v", err)
+ this.module.Errorf("err:%v", err)
return
}
}
@@ -95,12 +96,12 @@ func (this *configureComp) GetEquipmentAttrlibraryConfigureByKey(key int32) (con
ok bool
)
if v, err = this.GetConfigure(equip_attrlibrary); err != nil {
- log.Errorf("err:%v", err)
+ this.module.Errorf("err:%v", err)
return
} else {
if configure, ok = v.(*cfg.Game_equipAttrlibrary).GetDataMap()[key]; !ok {
err = fmt.Errorf("EquipmentConfigure GetEquipmentAttrlibraryConfigureByKey not found:%d ", key)
- log.Errorf("err:%v", err)
+ this.module.Errorf("err:%v", err)
return
}
}
@@ -113,7 +114,7 @@ func (this *configureComp) GetEquipmentAttrlibraryConfigureById(Id int32) (confi
v interface{}
)
if v, err = this.GetConfigure(equip_attrlibrary); err != nil {
- log.Errorf("err:%v", err)
+ this.module.Errorf("err:%v", err)
return
} else {
configure = make([]*cfg.Game_equipAttrlibraryData, 0)
@@ -133,12 +134,12 @@ func (this *configureComp) GetEquipmentIntensifyConfigure() (configure *cfg.Game
ok bool
)
if v, err = this.GetConfigure(equip_intensify); err != nil {
- log.Errorf("err:%v", err)
+ this.module.Errorf("err:%v", err)
return
} else {
if configure, ok = v.(*cfg.Game_equipIntensify); !ok {
err = fmt.Errorf("%T no is *cfg.Game_equipment", v)
- log.Errorf("err:%v", err)
+ this.module.Errorf("err:%v", err)
return
}
}
@@ -152,12 +153,12 @@ func (this *configureComp) GetEquipmentIntensifyConfigureById(Id int32) (configu
ok bool
)
if v, err = this.GetConfigure(equip_intensify); err != nil {
- log.Errorf("err:%v", err)
+ this.module.Errorf("err:%v", err)
return
} else {
if configure, ok = v.(*cfg.Game_equipIntensify).GetDataMap()[Id]; !ok {
err = fmt.Errorf("EquipmentConfigure not found:%d ", Id)
- log.Errorf("err:%v", err)
+ this.module.Errorf("err:%v", err)
return
}
}
diff --git a/modules/gateway/agent.go b/modules/gateway/agent.go
index 28c69986d..157ad1a4c 100644
--- a/modules/gateway/agent.go
+++ b/modules/gateway/agent.go
@@ -215,14 +215,23 @@ func (this *Agent) Close() {
//分发用户消息
func (this *Agent) messageDistribution(msg *pb.UserMessage) (err error) {
var (
+ req *pb.AgentMessage
reply *pb.RPCMessageReply = &pb.RPCMessageReply{}
serviceTag string = ""
servicePath string = comm.Service_Worker
rule string
ok bool
)
-
- this.gateway.Debugf("agent:%s uId:%s MessageDistribution msg:%s.%s", this.sessionId, this.uId, msg.MainType, msg.SubType)
+ req = &pb.AgentMessage{
+ Ip: this.IP(),
+ UserSessionId: this.sessionId,
+ UserId: this.uId,
+ ServiceTag: this.gateway.Service().GetTag(),
+ GatewayServiceId: this.gateway.Service().GetId(),
+ MainType: msg.MainType,
+ SubType: msg.SubType,
+ Message: msg.Data,
+ }
if rule, ok = this.gateway.GetMsgDistribute(msg.MainType, msg.SubType); ok {
paths := strings.Split(rule, "/")
if len(paths) == 3 {
@@ -239,36 +248,21 @@ func (this *Agent) messageDistribution(msg *pb.UserMessage) (err error) {
servicePath = fmt.Sprintf("%s/%s", comm.Service_Worker, this.wId)
}
}
-
+ stime := time.Now()
+ this.gateway.Debugf("agent:%s uId:%s MessageDistribution req:%v", this.sessionId, this.uId, req)
if len(serviceTag) == 0 {
- if err = this.gateway.Service().RpcCall(context.Background(), servicePath, string(comm.Rpc_GatewayRoute), &pb.AgentMessage{
- Ip: this.IP(),
- UserSessionId: this.sessionId,
- UserId: this.uId,
- GatewayServiceId: this.gateway.Service().GetId(),
- MainType: msg.MainType,
- SubType: msg.SubType,
- Message: msg.Data,
- }, reply); err != nil {
+ if err = this.gateway.Service().RpcCall(context.Background(), servicePath, string(comm.Rpc_GatewayRoute), req, reply); err != nil {
this.gateway.Errorf("agent:%s uId:%s MessageDistribution err:%v", this.sessionId, this.uId, err)
return
}
} else { //跨集群调用
- if err = this.gateway.Service().AcrossClusterRpcCall(context.Background(), serviceTag, servicePath, string(comm.Rpc_GatewayRoute), &pb.AgentMessage{
- Ip: this.IP(),
- UserSessionId: this.sessionId,
- UserId: this.uId,
- GatewayServiceId: this.gateway.Service().GetId(),
- MainType: msg.MainType,
- SubType: msg.SubType,
- Message: msg.Data,
- }, reply); err != nil {
+ if err = this.gateway.Service().AcrossClusterRpcCall(context.Background(), serviceTag, servicePath, string(comm.Rpc_GatewayRoute), req, reply); err != nil {
this.gateway.Errorf("agent:%s uId:%s MessageDistribution err:%v", this.sessionId, this.uId, err)
return
}
}
+ this.gateway.Debugf("agent:%s uId:%s MessageDistribution t:%v reply:%v", this.sessionId, this.uId, time.Since(stime), reply)
if reply.Code != pb.ErrorCode_Success {
-
data, _ := anypb.New(&pb.NotifyErrorNotifyPush{
ReqMainType: msg.MainType,
ReqSubType: msg.SubType,
diff --git a/modules/gateway/agentmgr_comp.go b/modules/gateway/agentmgr_comp.go
index f40eb55b4..03f27db3e 100644
--- a/modules/gateway/agentmgr_comp.go
+++ b/modules/gateway/agentmgr_comp.go
@@ -43,15 +43,21 @@ func (this *AgentMgrComp) DisConnect(a IAgent) {
if a.UserId() != "" { //登录用户 通知业务服务处理玩家离线相关
reply := &pb.RPCMessageReply{}
if _, err := this.service.RpcGo(context.Background(), fmt.Sprintf("%s/%s", comm.Service_Worker, a.WorkerId()), string(comm.Rpc_NoticeUserClose), &pb.NoticeUserCloseReq{
- UserSessionId: a.SessionId(),
- UserId: a.UserId(),
+ Ip: a.IP(),
+ ServiceTag: this.service.GetTag(),
+ GatewayServiceId: this.service.GetId(),
+ UserSessionId: a.SessionId(),
+ UserId: a.UserId(),
}, reply); err != nil {
log.Errorf("uId:%s Rpc_NoticeUserClose err:%v", a.UserId(), err)
}
//推送跨服集群处理
if _, err := this.service.AcrossClusterRpcGo(context.Background(), this.options.SpanServiceTag, comm.Service_Worker, string(comm.Rpc_NoticeUserClose), &pb.NoticeUserCloseReq{
- UserSessionId: a.SessionId(),
- UserId: a.UserId(),
+ Ip: a.IP(),
+ ServiceTag: this.service.GetTag(),
+ GatewayServiceId: this.service.GetId(),
+ UserSessionId: a.SessionId(),
+ UserId: a.UserId(),
}, reply); err != nil {
log.Errorf("uId:%s Rpc_NoticeUserClose err:%v", a.UserId(), err)
}
diff --git a/modules/user/api_login.go b/modules/user/api_login.go
index bb2b07b05..6cdc4a090 100644
--- a/modules/user/api_login.go
+++ b/modules/user/api_login.go
@@ -72,6 +72,7 @@ func (this *apiComp) Login(session comm.IUserSession, req *pb.UserLoginReq) (cod
//bind user
err = session.Bind(user.Uid, this.service.GetId())
if err != nil {
+ this.module.Errorf("err:%v", err)
code = pb.ErrorCode_BindUser
return
}
diff --git a/services/comp_gateroute.go b/services/comp_gateroute.go
index 90f3d6472..af6455cdc 100644
--- a/services/comp_gateroute.go
+++ b/services/comp_gateroute.go
@@ -6,7 +6,6 @@ import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"reflect"
- "runtime"
"sync"
"time"
@@ -113,15 +112,15 @@ func (this *SCompGateRoute) RegisterRoute(methodName string, comp reflect.Value,
//Rpc_GatewayRoute服务接口的接收函数
func (this *SCompGateRoute) ReceiveMsg(ctx context.Context, args *pb.AgentMessage, reply *pb.RPCMessageReply) (err error) {
method := fmt.Sprintf("%s.%s", args.MainType, args.SubType)
- defer func() { //程序异常 收集异常信息传递给前端显示
- if r := recover(); r != nil {
- buf := make([]byte, 4096)
- l := runtime.Stack(buf, false)
- reply.Code = pb.ErrorCode_Exception
- reply.ErrorMessage = fmt.Sprintf("%v: %s", r, buf[:l])
- log.Errorf("[Handle Api] m:%s reply:%s", method, reply)
- }
- }()
+ // defer func() { //程序异常 收集异常信息传递给前端显示
+ // if r := recover(); r != nil {
+ // buf := make([]byte, 4096)
+ // l := runtime.Stack(buf, false)
+ // reply.Code = pb.ErrorCode_Exception
+ // reply.ErrorMessage = fmt.Sprintf("%v: %s", r, buf[:l])
+ // log.Errorf("[Handle Api] m:%s reply:%s", method, reply)
+ // }
+ // }()
//获取用户消息处理函数
this.mrlock.RLock()
msghandle, ok := this.msghandles[method]
diff --git a/sys/configure/structs/game.chatChannel.go b/sys/configure/structs/game.chatChannel.go
new file mode 100644
index 000000000..73b68e5be
--- /dev/null
+++ b/sys/configure/structs/game.chatChannel.go
@@ -0,0 +1,42 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+package cfg
+
+type Game_chatChannel struct {
+ _dataMap map[string]*Game_chatChannelData
+ _dataList []*Game_chatChannelData
+}
+
+func NewGame_chatChannel(_buf []map[string]interface{}) (*Game_chatChannel, error) {
+ _dataList := make([]*Game_chatChannelData, 0, len(_buf))
+ dataMap := make(map[string]*Game_chatChannelData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := NewGame_chatChannelData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.Key] = _v
+ }
+ }
+ return &Game_chatChannel{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *Game_chatChannel) GetDataMap() map[string]*Game_chatChannelData {
+ return table._dataMap
+}
+
+func (table *Game_chatChannel) GetDataList() []*Game_chatChannelData {
+ return table._dataList
+}
+
+func (table *Game_chatChannel) Get(key string) *Game_chatChannelData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/game.chatChannelCom.go b/sys/configure/structs/game.chatChannelCom.go
new file mode 100644
index 000000000..dfe61a5e6
--- /dev/null
+++ b/sys/configure/structs/game.chatChannelCom.go
@@ -0,0 +1,42 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+package cfg
+
+type Game_chatChannelCom struct {
+ _dataMap map[string]*Game_chatChannelComData
+ _dataList []*Game_chatChannelComData
+}
+
+func NewGame_chatChannelCom(_buf []map[string]interface{}) (*Game_chatChannelCom, error) {
+ _dataList := make([]*Game_chatChannelComData, 0, len(_buf))
+ dataMap := make(map[string]*Game_chatChannelComData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := NewGame_chatChannelComData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.Key] = _v
+ }
+ }
+ return &Game_chatChannelCom{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *Game_chatChannelCom) GetDataMap() map[string]*Game_chatChannelComData {
+ return table._dataMap
+}
+
+func (table *Game_chatChannelCom) GetDataList() []*Game_chatChannelComData {
+ return table._dataList
+}
+
+func (table *Game_chatChannelCom) Get(key string) *Game_chatChannelComData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/game.chatChannelComData.go b/sys/configure/structs/game.chatChannelComData.go
new file mode 100644
index 000000000..f1783bd72
--- /dev/null
+++ b/sys/configure/structs/game.chatChannelComData.go
@@ -0,0 +1,29 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+package cfg
+
+import "errors"
+
+type Game_chatChannelComData struct {
+ Key string
+ Value int32
+ Dec string
+}
+
+func (Game_chatChannelComData) GetTypeId() int {
+ return 1284108092
+}
+
+func NewGame_chatChannelComData(_buf map[string]interface{}) (_v *Game_chatChannelComData, err error) {
+ _v = &Game_chatChannelComData{}
+ { var _ok_ bool; if _v.Key, _ok_ = _buf["key"].(string); !_ok_ { err = errors.New("key error"); return } }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["value"].(float64); !_ok_ { err = errors.New("value error"); return }; _v.Value = int32(_tempNum_) }
+ { var _ok_ bool; if _v.Dec, _ok_ = _buf["dec"].(string); !_ok_ { err = errors.New("dec error"); return } }
+ return
+}
diff --git a/sys/configure/structs/game.chatChannelData.go b/sys/configure/structs/game.chatChannelData.go
new file mode 100644
index 000000000..de47825ad
--- /dev/null
+++ b/sys/configure/structs/game.chatChannelData.go
@@ -0,0 +1,29 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+package cfg
+
+import "errors"
+
+type Game_chatChannelData struct {
+ Key string
+ TagList int32
+ SpeakCd int32
+}
+
+func (Game_chatChannelData) GetTypeId() int {
+ return -19547431
+}
+
+func NewGame_chatChannelData(_buf map[string]interface{}) (_v *Game_chatChannelData, err error) {
+ _v = &Game_chatChannelData{}
+ { var _ok_ bool; if _v.Key, _ok_ = _buf["key"].(string); !_ok_ { err = errors.New("key error"); return } }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["tag_list"].(float64); !_ok_ { err = errors.New("tag_list error"); return }; _v.TagList = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["speak_cd"].(float64); !_ok_ { err = errors.New("speak_cd error"); return }; _v.SpeakCd = int32(_tempNum_) }
+ return
+}
diff --git a/sys/configure/structs/game.chatServerGroup.go b/sys/configure/structs/game.chatServerGroup.go
new file mode 100644
index 000000000..89422c404
--- /dev/null
+++ b/sys/configure/structs/game.chatServerGroup.go
@@ -0,0 +1,42 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+package cfg
+
+type Game_chatServerGroup struct {
+ _dataMap map[string]*Game_chatServerGroupData
+ _dataList []*Game_chatServerGroupData
+}
+
+func NewGame_chatServerGroup(_buf []map[string]interface{}) (*Game_chatServerGroup, error) {
+ _dataList := make([]*Game_chatServerGroupData, 0, len(_buf))
+ dataMap := make(map[string]*Game_chatServerGroupData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := NewGame_chatServerGroupData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.Server] = _v
+ }
+ }
+ return &Game_chatServerGroup{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *Game_chatServerGroup) GetDataMap() map[string]*Game_chatServerGroupData {
+ return table._dataMap
+}
+
+func (table *Game_chatServerGroup) GetDataList() []*Game_chatServerGroupData {
+ return table._dataList
+}
+
+func (table *Game_chatServerGroup) Get(key string) *Game_chatServerGroupData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/game.chatServerGroupData.go b/sys/configure/structs/game.chatServerGroupData.go
new file mode 100644
index 000000000..c2eef6cca
--- /dev/null
+++ b/sys/configure/structs/game.chatServerGroupData.go
@@ -0,0 +1,27 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+package cfg
+
+import "errors"
+
+type Game_chatServerGroupData struct {
+ Server string
+ Group int32
+}
+
+func (Game_chatServerGroupData) GetTypeId() int {
+ return 825941074
+}
+
+func NewGame_chatServerGroupData(_buf map[string]interface{}) (_v *Game_chatServerGroupData, err error) {
+ _v = &Game_chatServerGroupData{}
+ { var _ok_ bool; if _v.Server, _ok_ = _buf["server"].(string); !_ok_ { err = errors.New("server error"); return } }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["group"].(float64); !_ok_ { err = errors.New("group error"); return }; _v.Group = int32(_tempNum_) }
+ return
+}
diff --git a/sys/configure/structs/game.chatSystem.go b/sys/configure/structs/game.chatSystem.go
new file mode 100644
index 000000000..195d95f1e
--- /dev/null
+++ b/sys/configure/structs/game.chatSystem.go
@@ -0,0 +1,42 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+package cfg
+
+type Game_chatSystem struct {
+ _dataMap map[int32]*Game_chatSystemData
+ _dataList []*Game_chatSystemData
+}
+
+func NewGame_chatSystem(_buf []map[string]interface{}) (*Game_chatSystem, error) {
+ _dataList := make([]*Game_chatSystemData, 0, len(_buf))
+ dataMap := make(map[int32]*Game_chatSystemData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := NewGame_chatSystemData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.Key] = _v
+ }
+ }
+ return &Game_chatSystem{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *Game_chatSystem) GetDataMap() map[int32]*Game_chatSystemData {
+ return table._dataMap
+}
+
+func (table *Game_chatSystem) GetDataList() []*Game_chatSystemData {
+ return table._dataList
+}
+
+func (table *Game_chatSystem) Get(key int32) *Game_chatSystemData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/game.chatSystemData.go b/sys/configure/structs/game.chatSystemData.go
new file mode 100644
index 000000000..14e617f2a
--- /dev/null
+++ b/sys/configure/structs/game.chatSystemData.go
@@ -0,0 +1,54 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+package cfg
+
+import "errors"
+
+type Game_chatSystemData struct {
+ Key int32
+ Type int32
+ Title string
+ Close string
+ Test string
+ Data int32
+ Week []int32
+ TimeH int32
+ TimeM int32
+}
+
+func (Game_chatSystemData) GetTypeId() int {
+ return -198348435
+}
+
+func NewGame_chatSystemData(_buf map[string]interface{}) (_v *Game_chatSystemData, err error) {
+ _v = &Game_chatSystemData{}
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["key"].(float64); !_ok_ { err = errors.New("key error"); return }; _v.Key = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) }
+ { var _ok_ bool; if _v.Title, _ok_ = _buf["title"].(string); !_ok_ { err = errors.New("title error"); return } }
+ { var _ok_ bool; if _v.Close, _ok_ = _buf["close"].(string); !_ok_ { err = errors.New("close error"); return } }
+ { var _ok_ bool; if _v.Test, _ok_ = _buf["test"].(string); !_ok_ { err = errors.New("test error"); return } }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["data"].(float64); !_ok_ { err = errors.New("data error"); return }; _v.Data = int32(_tempNum_) }
+ {
+ var _arr_ []interface{}
+ var _ok_ bool
+ if _arr_, _ok_ = _buf["week"].([]interface{}); !_ok_ { err = errors.New("week error"); return }
+
+ _v.Week = make([]int32, 0, len(_arr_))
+
+ for _, _e_ := range _arr_ {
+ var _list_v_ int32
+ { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
+ _v.Week = append(_v.Week, _list_v_)
+ }
+ }
+
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["time_h"].(float64); !_ok_ { err = errors.New("time_h error"); return }; _v.TimeH = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["time_m"].(float64); !_ok_ { err = errors.New("time_m error"); return }; _v.TimeM = int32(_tempNum_) }
+ return
+}