上传聊天消息公告推送
This commit is contained in:
parent
bfb6e41284
commit
0f76996627
@ -2,9 +2,10 @@
|
|||||||
{
|
{
|
||||||
"key": 10001,
|
"key": 10001,
|
||||||
"type": 1,
|
"type": 1,
|
||||||
"title": "【系统】",
|
"text": {
|
||||||
"close": "#ff3f3f",
|
"key": "chat_text_10001",
|
||||||
"test": "阿宝转转转活动还有3分钟开始了!",
|
"text": "<font color=#ff3f3f>【系统】</font>阿宝转转转活动还有3分钟开始了!"
|
||||||
|
},
|
||||||
"data": 0,
|
"data": 0,
|
||||||
"week": [
|
"week": [
|
||||||
1,
|
1,
|
||||||
@ -21,9 +22,10 @@
|
|||||||
{
|
{
|
||||||
"key": 10002,
|
"key": 10002,
|
||||||
"type": 1,
|
"type": 1,
|
||||||
"title": "【系统】",
|
"text": {
|
||||||
"close": "#ff3f3f",
|
"key": "chat_text_10002",
|
||||||
"test": "阿宝转转转活动还有2分钟开始了!",
|
"text": "<font color=#ff3f3f>【系统】</font>阿宝转转转活动还有4分钟开始了!"
|
||||||
|
},
|
||||||
"data": 0,
|
"data": 0,
|
||||||
"week": [
|
"week": [
|
||||||
1,
|
1,
|
||||||
@ -38,9 +40,10 @@
|
|||||||
{
|
{
|
||||||
"key": 10003,
|
"key": 10003,
|
||||||
"type": 1,
|
"type": 1,
|
||||||
"title": "【系统】",
|
"text": {
|
||||||
"close": "#ff3f3f",
|
"key": "chat_text_10003",
|
||||||
"test": "阿宝转转转活动还有1分钟开始了!",
|
"text": "<font color=#ff3f3f>【系统】</font>阿宝转转转活动还有5分钟开始了!"
|
||||||
|
},
|
||||||
"data": 0,
|
"data": 0,
|
||||||
"week": [
|
"week": [
|
||||||
1,
|
1,
|
||||||
@ -55,54 +58,11 @@
|
|||||||
{
|
{
|
||||||
"key": 20001,
|
"key": 20001,
|
||||||
"type": 2,
|
"type": 2,
|
||||||
"title": "【传闻】",
|
"text": {
|
||||||
"close": "#ffc73f",
|
"key": "chat_text_20001",
|
||||||
"test": "[name]经过不懈努力,将[item]强化到了+[data]!",
|
"text": "<font color=#ff3f3f>【系统】</font>欢迎来到梦工厂"
|
||||||
"data": 12,
|
},
|
||||||
"week": [],
|
"data": 0,
|
||||||
"time_h": 0,
|
|
||||||
"time_m": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": 20002,
|
|
||||||
"type": 2,
|
|
||||||
"title": "【传闻】",
|
|
||||||
"close": "#ffc73f",
|
|
||||||
"test": "[name]经过不懈努力,将[item]强化到了+[data]!",
|
|
||||||
"data": 13,
|
|
||||||
"week": [],
|
|
||||||
"time_h": 0,
|
|
||||||
"time_m": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": 20003,
|
|
||||||
"type": 2,
|
|
||||||
"title": "【传闻】",
|
|
||||||
"close": "#ffc73f",
|
|
||||||
"test": "[name]经过不懈努力,将[item]强化到了+[data]!",
|
|
||||||
"data": 14,
|
|
||||||
"week": [],
|
|
||||||
"time_h": 0,
|
|
||||||
"time_m": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": 20004,
|
|
||||||
"type": 2,
|
|
||||||
"title": "【传闻】",
|
|
||||||
"close": "#ffc73f",
|
|
||||||
"test": "[name]经过不懈努力,将[item]强化到了+[data]!",
|
|
||||||
"data": 15,
|
|
||||||
"week": [],
|
|
||||||
"time_h": 0,
|
|
||||||
"time_m": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": 30001,
|
|
||||||
"type": 3,
|
|
||||||
"title": "【传闻】",
|
|
||||||
"close": "#ffc73f",
|
|
||||||
"test": "[name]突破了时空塔第[data]层!",
|
|
||||||
"data": 50,
|
|
||||||
"week": [],
|
"week": [],
|
||||||
"time_h": 0,
|
"time_h": 0,
|
||||||
"time_m": 0
|
"time_m": 0
|
||||||
@ -110,10 +70,11 @@
|
|||||||
{
|
{
|
||||||
"key": 30002,
|
"key": 30002,
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"title": "【传闻】",
|
"text": {
|
||||||
"close": "#ffc73f",
|
"key": "chat_text_30002",
|
||||||
"test": "[name]突破了时空塔第[data]层!",
|
"text": "<font color=#ffc73f>【传闻】</font>%v经过不懈努力,将%v强化到了+13!"
|
||||||
"data": 100,
|
},
|
||||||
|
"data": 13,
|
||||||
"week": [],
|
"week": [],
|
||||||
"time_h": 0,
|
"time_h": 0,
|
||||||
"time_m": 0
|
"time_m": 0
|
||||||
@ -121,10 +82,11 @@
|
|||||||
{
|
{
|
||||||
"key": 30003,
|
"key": 30003,
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"title": "【传闻】",
|
"text": {
|
||||||
"close": "#ffc73f",
|
"key": "chat_text_30003",
|
||||||
"test": "[name]突破了时空塔第[data]层!",
|
"text": "<font color=#ffc73f>【传闻】</font>%v经过不懈努力,将%v强化到了+14!"
|
||||||
"data": 150,
|
},
|
||||||
|
"data": 14,
|
||||||
"week": [],
|
"week": [],
|
||||||
"time_h": 0,
|
"time_h": 0,
|
||||||
"time_m": 0
|
"time_m": 0
|
||||||
@ -132,10 +94,23 @@
|
|||||||
{
|
{
|
||||||
"key": 30004,
|
"key": 30004,
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"title": "【传闻】",
|
"text": {
|
||||||
"close": "#ffc73f",
|
"key": "chat_text_30004",
|
||||||
"test": "[name]突破了时空塔第[data]层!",
|
"text": "<font color=#ffc73f>【传闻】</font>%v经过不懈努力,将%v强化到了+15!"
|
||||||
"data": 200,
|
},
|
||||||
|
"data": 15,
|
||||||
|
"week": [],
|
||||||
|
"time_h": 0,
|
||||||
|
"time_m": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": 40001,
|
||||||
|
"type": 4,
|
||||||
|
"text": {
|
||||||
|
"key": "chat_text_40001",
|
||||||
|
"text": "<font color=#ffc73f>【传闻】</font>%v%v突破了时空塔第100层!"
|
||||||
|
},
|
||||||
|
"data": 100,
|
||||||
"week": [],
|
"week": [],
|
||||||
"time_h": 0,
|
"time_h": 0,
|
||||||
"time_m": 0
|
"time_m": 0
|
||||||
|
@ -10,7 +10,22 @@
|
|||||||
"describe": "论坛系统"
|
"describe": "论坛系统"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"msgid": "chat",
|
"msgid": "chat.chanagechannel",
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "聊天系统"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "chat.crosschannel",
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "聊天系统"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "chat.getcrosslist",
|
||||||
|
"routrules": "~/worker",
|
||||||
|
"describe": "聊天系统"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"msgid": "chat.sendcross",
|
||||||
"routrules": "~/worker",
|
"routrules": "~/worker",
|
||||||
"describe": "聊天系统"
|
"describe": "聊天系统"
|
||||||
},
|
},
|
||||||
|
@ -324,3 +324,14 @@ const (
|
|||||||
const (
|
const (
|
||||||
MaxMainlineIntensity = 3 // 最大难度
|
MaxMainlineIntensity = 3 // 最大难度
|
||||||
)
|
)
|
||||||
|
|
||||||
|
///聊天消息公告类型
|
||||||
|
type ChatSystemType int8
|
||||||
|
|
||||||
|
const (
|
||||||
|
UserLoginNotice ChatSystemType = 2
|
||||||
|
///装备强化公告
|
||||||
|
EquipmentUpgradeNotice ChatSystemType = 3
|
||||||
|
///爬塔通关公告
|
||||||
|
PagodaPassNotice ChatSystemType = 4
|
||||||
|
)
|
||||||
|
@ -135,9 +135,13 @@ type (
|
|||||||
//聊天系统
|
//聊天系统
|
||||||
IChat interface {
|
IChat interface {
|
||||||
//推送消息到世界频道
|
//推送消息到世界频道
|
||||||
SendWorldChat(stag string, msg *pb.DBChat) (code pb.ErrorCode)
|
SendWorldChat(msg *pb.DBChat) (code pb.ErrorCode)
|
||||||
//推送消息到用户
|
//推送消息到用户
|
||||||
SendUserChat(msg *pb.DBChat) (code pb.ErrorCode)
|
SendUserChat(msg *pb.DBChat) (code pb.ErrorCode)
|
||||||
|
//广播系统消息
|
||||||
|
SendSysChatToWorld(ctype ChatSystemType, value int32, agrs ...interface{}) (code pb.ErrorCode)
|
||||||
|
//广播系统消息
|
||||||
|
SendSysChatToUser(session IUserSession, ctype ChatSystemType, value int32, agrs ...interface{}) (code pb.ErrorCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
//战斗系统
|
//战斗系统
|
||||||
|
@ -127,6 +127,7 @@ func (this *Redis) LRem(key string, count int, target interface{}) (err error) {
|
|||||||
if resultvalue, err = this.codec.Marshal(target); err != nil {
|
if resultvalue, err = this.codec.Marshal(target); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = this.client.Do(this.client.Context(), "LREM", key, count, resultvalue).Err()
|
err = this.client.Do(this.client.Context(), "LREM", key, count, resultvalue).Err()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -388,6 +388,7 @@ func (this *Service) broadcast(ctx context.Context, clusterTag string, servicePa
|
|||||||
this.selectormutex.RUnlock()
|
this.selectormutex.RUnlock()
|
||||||
if !ok {
|
if !ok {
|
||||||
err = fmt.Errorf("on found serviceTag:%s", clusterTag)
|
err = fmt.Errorf("on found serviceTag:%s", clusterTag)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
if clientaddrs = selector.Find(ctx, spath[0], serviceMethod, args); clientaddrs == nil || len(clientaddrs) == 0 {
|
if clientaddrs = selector.Find(ctx, spath[0], serviceMethod, args); clientaddrs == nil || len(clientaddrs) == 0 {
|
||||||
err = fmt.Errorf("on found servicePath:%s", servicePath)
|
err = fmt.Errorf("on found servicePath:%s", servicePath)
|
||||||
|
@ -48,5 +48,5 @@ func (this *AttributeNumeric) SetBase(value float32) float32 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *AttributeNumeric) onChange() {
|
func (this *AttributeNumeric) onChange() {
|
||||||
// this.FixedValue = (BaseValue.Fixed*(1+ProValue.Fixed)+AppendValue.Fixed)*(1+BuffProValue.Fixed) + BuffValue.Fixed
|
// this.fixedValue = (this.BaseValue.Fixed()*(1+this.ProValue.Fixed())+this.AppendValue.Fixed())*(1+this.BuffProValue.Fixed()) + this.BuffValue.Fixed()
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,20 @@ func (this *FixedNumeric) Set(value float32) float32 {
|
|||||||
this.baseValue = NewFixedPoint(value)
|
this.baseValue = NewFixedPoint(value)
|
||||||
return this.baseValue.Scalar()
|
return this.baseValue.Scalar()
|
||||||
}
|
}
|
||||||
|
func (this *FixedNumeric) Fixed() *FixedPoint {
|
||||||
|
return this.baseValue
|
||||||
|
}
|
||||||
func (this *FixedNumeric) Value() float32 {
|
func (this *FixedNumeric) Value() float32 {
|
||||||
return this.baseValue.Scalar()
|
return this.baseValue.Scalar()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 减少基本值
|
||||||
|
/// </summary>
|
||||||
|
func (this *FixedNumeric) Minus(value float32) float32 {
|
||||||
|
// this.baseValue -= value
|
||||||
|
// if this.baseValue.Scalar < 0 {
|
||||||
|
// this.baseValue = 0
|
||||||
|
// }
|
||||||
|
return this.baseValue.Scalar()
|
||||||
|
}
|
||||||
|
@ -55,6 +55,3 @@ func (this *FixedPoint) Divide(y *FixedPoint) *FixedPoint {
|
|||||||
this.rawValue = (this.rawValue * CARDINAL_NUMBER) / y.rawValue
|
this.rawValue = (this.rawValue * CARDINAL_NUMBER) / y.rawValue
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
48
modules/battle/fight/attribute/healthpoint.go
Normal file
48
modules/battle/fight/attribute/healthpoint.go
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
package attribute
|
||||||
|
|
||||||
|
func NewHealthPoint(pHp *FixedNumeric) *HealthPoint {
|
||||||
|
return &HealthPoint{
|
||||||
|
Hp: pHp,
|
||||||
|
MaxHp: NewAttributeNumeric(pHp.Value()),
|
||||||
|
CurrMaxHp: NewAttributeNumeric(pHp.Value()),
|
||||||
|
CurrMaxHpPro: NewAttributeNumeric(0),
|
||||||
|
CurrMaxHpAppend: NewAttributeNumeric(0),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 生命值实体
|
||||||
|
/// </summary>
|
||||||
|
type HealthPoint struct {
|
||||||
|
/// <summary>
|
||||||
|
/// 生命值
|
||||||
|
/// </summary>
|
||||||
|
Hp *FixedNumeric
|
||||||
|
/// <summary>
|
||||||
|
/// 最大生命值
|
||||||
|
/// </summary>
|
||||||
|
MaxHp *AttributeNumeric
|
||||||
|
/// <summary>
|
||||||
|
/// 当前最大生命值
|
||||||
|
/// </summary>
|
||||||
|
CurrMaxHp *AttributeNumeric
|
||||||
|
/// <summary>
|
||||||
|
/// 当前最大生命百分比加成
|
||||||
|
/// </summary>
|
||||||
|
CurrMaxHpPro *AttributeNumeric
|
||||||
|
/// <summary>
|
||||||
|
/// 当前最大生命加成
|
||||||
|
/// </summary>
|
||||||
|
CurrMaxHpAppend *AttributeNumeric
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *HealthPoint) Value() int32 {
|
||||||
|
return int32(this.Hp.Value())
|
||||||
|
}
|
||||||
|
func (this *HealthPoint) MaxValue() int32 {
|
||||||
|
return int32(this.CurrMaxHp.Value())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *HealthPoint) Minus(value float32) {
|
||||||
|
this.Hp.Minus(value)
|
||||||
|
}
|
8
modules/battle/fight/core/buffstore.go
Normal file
8
modules/battle/fight/core/buffstore.go
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package core
|
||||||
|
|
||||||
|
type BuffStore struct {
|
||||||
|
/// <summary>
|
||||||
|
/// 已经添加的buff类型
|
||||||
|
/// </summary>
|
||||||
|
HasBuffTypes []int
|
||||||
|
}
|
@ -118,4 +118,9 @@ type FightRoleData struct {
|
|||||||
/// 在角色初始化时,会根据SkillsInfo实例化对应的技能保存于此
|
/// 在角色初始化时,会根据SkillsInfo实例化对应的技能保存于此
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
Skills map[int32]ISkil
|
Skills map[int32]ISkil
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// BUFF集合
|
||||||
|
/// </summary>
|
||||||
|
BuffStore *BuffStore
|
||||||
}
|
}
|
||||||
|
45
modules/battle/fight/fightrole.go
Normal file
45
modules/battle/fight/fightrole.go
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
package fight
|
||||||
|
|
||||||
|
import (
|
||||||
|
"go_dreamfactory/modules/battle/fight/attribute"
|
||||||
|
"go_dreamfactory/modules/battle/fight/core"
|
||||||
|
cfg "go_dreamfactory/sys/configure/structs"
|
||||||
|
)
|
||||||
|
|
||||||
|
type FightRole struct {
|
||||||
|
/// <summary>
|
||||||
|
/// 战斗实例
|
||||||
|
/// </summary>
|
||||||
|
fight core.IFight
|
||||||
|
/// <summary>
|
||||||
|
/// 角色数据
|
||||||
|
/// </summary>
|
||||||
|
data core.FightRoleData
|
||||||
|
CurrentHealth attribute.HealthPoint
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 接收伤害
|
||||||
|
/// </summary>
|
||||||
|
func (this *FightRole) ReceiveDamage(DamageValue float32) {
|
||||||
|
this.CurrentHealth.Minus(DamageValue)
|
||||||
|
// FightDebug.Log($"========接收伤害:{Data.UniqueId} 变化值={DamageValue} 当前血量={CurrentHealth.Value}");
|
||||||
|
if this.IsDead() {
|
||||||
|
//有不死buff生命值设置为1
|
||||||
|
for _, v := range this.data.BuffStore.HasBuffTypes {
|
||||||
|
if v == cfg.GameBuffType_UNDEAD {
|
||||||
|
this.CurrentHealth.Hp.Set(1)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.Dead()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *FightRole) IsDead() bool {
|
||||||
|
return this.CurrentHealth.Value() <= 0
|
||||||
|
}
|
||||||
|
func (this *FightRole) Dead() {
|
||||||
|
this.data.ALive = false
|
||||||
|
}
|
77
modules/chat/api_getcrosslist.go
Normal file
77
modules/chat/api_getcrosslist.go
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
package chat
|
||||||
|
|
||||||
|
import (
|
||||||
|
"go_dreamfactory/comm"
|
||||||
|
"go_dreamfactory/pb"
|
||||||
|
|
||||||
|
"google.golang.org/protobuf/proto"
|
||||||
|
)
|
||||||
|
|
||||||
|
//参数校验
|
||||||
|
func (this *apiComp) GetCrossListCheck(session comm.IUserSession, req *pb.ChatGetCrossListReq) (code pb.ErrorCode) {
|
||||||
|
if req.Channel == pb.ChatChannel_World && req.ChannelId == 0 {
|
||||||
|
code = pb.ErrorCode_ReqParameterError
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
///获取本服聊天消息记录
|
||||||
|
func (this *apiComp) GetCrossList(session comm.IUserSession, req *pb.ChatGetCrossListReq) (code pb.ErrorCode, data proto.Message) {
|
||||||
|
var (
|
||||||
|
err error
|
||||||
|
result *pb.DBUserExpand
|
||||||
|
list []*pb.DBChat
|
||||||
|
)
|
||||||
|
|
||||||
|
if code = this.GetCrossListCheck(session, req); code != pb.ErrorCode_Success {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
switch req.Channel {
|
||||||
|
// case pb.ChatChannel_World:
|
||||||
|
// if list, err = this.module.modelChat.getChatQueue(req.Channel, session.GetServiecTag(), "", 0); err != nil {
|
||||||
|
// code = pb.ErrorCode_DBError
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
// break
|
||||||
|
// case pb.ChatChannel_Union:
|
||||||
|
// if list, err = this.module.modelChat.getChatQueue(req.Channel, session.GetServiecTag(), "", 0); err != nil {
|
||||||
|
// code = pb.ErrorCode_DBError
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
// break
|
||||||
|
// case pb.ChatChannel_Private:
|
||||||
|
// if list, err = this.module.modelChat.QueryUserMsg(session.GetUserId()); err != nil {
|
||||||
|
// code = pb.ErrorCode_DBError
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
// break
|
||||||
|
case pb.ChatChannel_CrossServer:
|
||||||
|
if result, err = this.module.ModuleUser.GetUserExpand(session.GetUserId()); err != nil {
|
||||||
|
this.module.Errorf("err:%v", err)
|
||||||
|
code = pb.ErrorCode_DBError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if req.ChannelId != result.Chatchannel {
|
||||||
|
code = pb.ErrorCode_ReqParameterError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if list, err = this.module.modelChat.getChatQueue(req.Channel, session.GetServiecTag(), "", req.ChannelId); err != nil {
|
||||||
|
code = pb.ErrorCode_DBError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
break
|
||||||
|
// case pb.ChatChannel_System:
|
||||||
|
// if list, err = this.module.modelChat.getChatQueue(req.Channel, session.GetServiecTag(), "", 0); err != nil {
|
||||||
|
// code = pb.ErrorCode_DBError
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
// break
|
||||||
|
default:
|
||||||
|
code = pb.ErrorCode_ReqParameterError
|
||||||
|
this.module.Errorf("getlist no support channel:%d ", req.Channel)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
session.SendMsg(string(this.module.GetType()), "getcrosslist", &pb.ChatGetCrossListResp{Chats: list})
|
||||||
|
return
|
||||||
|
}
|
@ -18,9 +18,9 @@ func (this *apiComp) GetListCheck(session comm.IUserSession, req *pb.ChatGetList
|
|||||||
///获取本服聊天消息记录
|
///获取本服聊天消息记录
|
||||||
func (this *apiComp) GetList(session comm.IUserSession, req *pb.ChatGetListReq) (code pb.ErrorCode, data proto.Message) {
|
func (this *apiComp) GetList(session comm.IUserSession, req *pb.ChatGetListReq) (code pb.ErrorCode, data proto.Message) {
|
||||||
var (
|
var (
|
||||||
err error
|
err error
|
||||||
result *pb.DBUserExpand
|
// result *pb.DBUserExpand
|
||||||
list []*pb.DBChat
|
list []*pb.DBChat
|
||||||
)
|
)
|
||||||
|
|
||||||
if code = this.GetListCheck(session, req); code != pb.ErrorCode_Success {
|
if code = this.GetListCheck(session, req); code != pb.ErrorCode_Success {
|
||||||
@ -46,27 +46,31 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.ChatGetListReq)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
case pb.ChatChannel_CrossServer:
|
// case pb.ChatChannel_CrossServer:
|
||||||
if result, err = this.module.ModuleUser.GetUserExpand(session.GetUserId()); err != nil {
|
// if result, err = this.module.ModuleUser.GetUserExpand(session.GetUserId()); err != nil {
|
||||||
this.module.Errorf("err:%v", err)
|
// this.module.Errorf("err:%v", err)
|
||||||
code = pb.ErrorCode_DBError
|
// code = pb.ErrorCode_DBError
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
if req.ChannelId != result.Chatchannel {
|
// if req.ChannelId != result.Chatchannel {
|
||||||
code = pb.ErrorCode_ReqParameterError
|
// code = pb.ErrorCode_ReqParameterError
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
if list, err = this.module.modelChat.getChatQueue(req.Channel, session.GetServiecTag(), "", req.ChannelId); err != nil {
|
// if list, err = this.module.modelChat.getChatQueue(req.Channel, session.GetServiecTag(), "", req.ChannelId); err != nil {
|
||||||
code = pb.ErrorCode_DBError
|
// code = pb.ErrorCode_DBError
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
break
|
// break
|
||||||
case pb.ChatChannel_System:
|
case pb.ChatChannel_System:
|
||||||
if list, err = this.module.modelChat.getChatQueue(req.Channel, session.GetServiecTag(), "", 0); err != nil {
|
if list, err = this.module.modelChat.getChatQueue(req.Channel, session.GetServiecTag(), "", 0); err != nil {
|
||||||
code = pb.ErrorCode_DBError
|
code = pb.ErrorCode_DBError
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
|
default:
|
||||||
|
code = pb.ErrorCode_ReqParameterError
|
||||||
|
this.module.Errorf("getlist no support channel:%d ", req.Channel)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
session.SendMsg(string(this.module.GetType()), "getlist", &pb.ChatGetListResp{Chats: list})
|
session.SendMsg(string(this.module.GetType()), "getlist", &pb.ChatGetListResp{Chats: list})
|
||||||
return
|
return
|
||||||
|
@ -21,11 +21,11 @@ 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) {
|
func (this *apiComp) Send(session comm.IUserSession, req *pb.ChatSendReq) (code pb.ErrorCode, data proto.Message) {
|
||||||
var (
|
var (
|
||||||
err error
|
err error
|
||||||
max int32
|
max int32
|
||||||
msg *pb.DBChat
|
msg *pb.DBChat
|
||||||
userexpand *pb.DBUserExpand
|
// userexpand *pb.DBUserExpand
|
||||||
max_chat int32
|
max_chat int32
|
||||||
)
|
)
|
||||||
if code = this.SendCheck(session, req); code != pb.ErrorCode_Success {
|
if code = this.SendCheck(session, req); code != pb.ErrorCode_Success {
|
||||||
return
|
return
|
||||||
@ -52,7 +52,7 @@ func (this *apiComp) Send(session comm.IUserSession, req *pb.ChatSendReq) (code
|
|||||||
}
|
}
|
||||||
switch msg.Channel {
|
switch msg.Channel {
|
||||||
case pb.ChatChannel_World:
|
case pb.ChatChannel_World:
|
||||||
if err = this.module.modelChat.addChatMsg(fmt.Sprintf("%s-%s", worldchatkey, session.GetServiecTag()), int64(max), msg); err != nil {
|
if err = this.module.modelChat.addChatMsg(worldchatkey, int64(max), msg); err != nil {
|
||||||
code = pb.ErrorCode_DBError
|
code = pb.ErrorCode_DBError
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -82,18 +82,22 @@ func (this *apiComp) Send(session comm.IUserSession, req *pb.ChatSendReq) (code
|
|||||||
}
|
}
|
||||||
session.SendMsg(string(this.module.GetType()), "message", &pb.ChatMessagePush{Chat: msg})
|
session.SendMsg(string(this.module.GetType()), "message", &pb.ChatMessagePush{Chat: msg})
|
||||||
break
|
break
|
||||||
case pb.ChatChannel_CrossServer:
|
// case pb.ChatChannel_CrossServer:
|
||||||
if userexpand, err = this.module.ModuleUser.GetUserExpand(session.GetUserId()); err != nil {
|
// if userexpand, err = this.module.ModuleUser.GetUserExpand(session.GetUserId()); err != nil {
|
||||||
code = pb.ErrorCode_DBError
|
// code = pb.ErrorCode_DBError
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
msg.ChannelId = userexpand.Chatchannel //指定频道
|
// msg.ChannelId = userexpand.Chatchannel //指定频道
|
||||||
if err = this.module.modelChat.addChatMsg(fmt.Sprintf("%s-%d", crosschatkey, userexpand.Chatchannel), int64(max_chat), msg); err != nil {
|
// if err = this.module.modelChat.addChatMsg(fmt.Sprintf("%s-%d", crosschatkey, userexpand.Chatchannel), int64(max_chat), msg); err != nil {
|
||||||
code = pb.ErrorCode_DBError
|
// code = pb.ErrorCode_DBError
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
this.module.PushToUsers(userexpand.Chatchannel, msg)
|
// this.module.PushToUsers(userexpand.Chatchannel, msg)
|
||||||
break
|
break
|
||||||
|
default:
|
||||||
|
code = pb.ErrorCode_ReqParameterError
|
||||||
|
this.module.Errorf("getlist no support channel:%d ", req.Channel)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
session.SendMsg(string(this.module.GetType()), "send", &pb.ChatSendResp{Issucc: true})
|
session.SendMsg(string(this.module.GetType()), "send", &pb.ChatSendResp{Issucc: true})
|
||||||
return
|
return
|
||||||
|
104
modules/chat/api_sendcross.go
Normal file
104
modules/chat/api_sendcross.go
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
package chat
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"go_dreamfactory/comm"
|
||||||
|
"go_dreamfactory/pb"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
|
"google.golang.org/protobuf/proto"
|
||||||
|
)
|
||||||
|
|
||||||
|
//参数校验
|
||||||
|
func (this *apiComp) SendCrossCheck(session comm.IUserSession, req *pb.ChatSendCrossReq) (code pb.ErrorCode) {
|
||||||
|
if (req.Channel == pb.ChatChannel_Union && req.TargetId == "") || (req.Channel == pb.ChatChannel_Private && req.TargetId == "") {
|
||||||
|
code = pb.ErrorCode_ReqParameterError
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
///消息发送请求
|
||||||
|
func (this *apiComp) SendCross(session comm.IUserSession, req *pb.ChatSendCrossReq) (code pb.ErrorCode, data proto.Message) {
|
||||||
|
var (
|
||||||
|
err error
|
||||||
|
// max int32
|
||||||
|
msg *pb.DBChat
|
||||||
|
userexpand *pb.DBUserExpand
|
||||||
|
max_chat int32
|
||||||
|
)
|
||||||
|
if code = this.SendCrossCheck(session, req); code != pb.ErrorCode_Success {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
msg = &pb.DBChat{
|
||||||
|
Id: primitive.NewObjectID().Hex(),
|
||||||
|
Channel: req.Channel,
|
||||||
|
Suid: session.GetUserId(),
|
||||||
|
Slv: req.Ulv,
|
||||||
|
Uname: req.Uname,
|
||||||
|
Avatar: req.Avatar,
|
||||||
|
Stag: session.GetServiecTag(),
|
||||||
|
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(fmt.Sprintf("%s-%s", worldchatkey, session.GetServiecTag()), int64(max), msg); err != nil {
|
||||||
|
// code = pb.ErrorCode_DBError
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
// if err = this.module.PushWorld(msg); err != nil {
|
||||||
|
// code = pb.ErrorCode_DBError
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
// //随机任务
|
||||||
|
// this.module.ModuleRtask.SendToRtask(session, comm.Rtype62, 1)
|
||||||
|
// break
|
||||||
|
// case pb.ChatChannel_Union:
|
||||||
|
// msg.UnionId = req.TargetId
|
||||||
|
// if err = this.module.modelChat.addChatMsg(fmt.Sprintf("%s:%s", unionchatkey, req.TargetId), int64(max_chat), msg); err != nil {
|
||||||
|
// code = pb.ErrorCode_DBError
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
// if err = this.module.PushUnion(req.TargetId, msg); err != nil {
|
||||||
|
// code = pb.ErrorCode_DBError
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
// break
|
||||||
|
// case pb.ChatChannel_Private:
|
||||||
|
// msg.Ruid = req.TargetId
|
||||||
|
// if err = this.module.PushUser(msg); err != nil {
|
||||||
|
// code = pb.ErrorCode_DBError
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
// session.SendMsg(string(this.module.GetType()), "message", &pb.ChatMessagePush{Chat: msg})
|
||||||
|
// break
|
||||||
|
case pb.ChatChannel_CrossServer:
|
||||||
|
if userexpand, err = this.module.ModuleUser.GetUserExpand(session.GetUserId()); err != nil {
|
||||||
|
code = pb.ErrorCode_DBError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
msg.ChannelId = userexpand.Chatchannel //指定频道
|
||||||
|
if err = this.module.modelChat.addChatMsg(fmt.Sprintf("%s-%d", crosschatkey, userexpand.Chatchannel), int64(max_chat), msg); err != nil {
|
||||||
|
code = pb.ErrorCode_DBError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.module.PushToUsers(userexpand.Chatchannel, msg)
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
code = pb.ErrorCode_ReqParameterError
|
||||||
|
this.module.Errorf("getlist no support channel:%d ", req.Channel)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
session.SendMsg(string(this.module.GetType()), "sendcross", &pb.ChatSendCrossResp{Issucc: true})
|
||||||
|
return
|
||||||
|
}
|
@ -3,7 +3,9 @@ package chat
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"go_dreamfactory/modules"
|
"go_dreamfactory/modules"
|
||||||
|
"go_dreamfactory/sys/configure"
|
||||||
cfg "go_dreamfactory/sys/configure/structs"
|
cfg "go_dreamfactory/sys/configure/structs"
|
||||||
|
"sync"
|
||||||
|
|
||||||
"go_dreamfactory/lego/core"
|
"go_dreamfactory/lego/core"
|
||||||
)
|
)
|
||||||
@ -18,7 +20,9 @@ const (
|
|||||||
///背包配置管理组件
|
///背包配置管理组件
|
||||||
type configureComp struct {
|
type configureComp struct {
|
||||||
modules.MCompConfigure
|
modules.MCompConfigure
|
||||||
module *Chat
|
module *Chat
|
||||||
|
lock sync.RWMutex
|
||||||
|
chatsystem map[int32][]*cfg.GameChatSystemData
|
||||||
}
|
}
|
||||||
|
|
||||||
//组件初始化接口
|
//组件初始化接口
|
||||||
@ -26,8 +30,22 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp
|
|||||||
this.MCompConfigure.Init(service, module, comp, options)
|
this.MCompConfigure.Init(service, module, comp, options)
|
||||||
this.module = module.(*Chat)
|
this.module = module.(*Chat)
|
||||||
this.LoadConfigure(game_chatchannel, cfg.NewGameChatChannel)
|
this.LoadConfigure(game_chatchannel, cfg.NewGameChatChannel)
|
||||||
this.LoadConfigure(game_chatsystem, cfg.NewGameChatSystem)
|
configure.RegisterConfigure(game_chatsystem, cfg.NewGameChatSystem, func() {
|
||||||
|
this.lock.Lock()
|
||||||
|
if v, err := this.GetConfigure(game_chatsystem); err != nil {
|
||||||
|
this.module.Errorf("err:%v", err)
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
this.chatsystem = make(map[int32][]*cfg.GameChatSystemData)
|
||||||
|
for _, v := range v.(*cfg.GameChatSystem).GetDataList() {
|
||||||
|
if this.chatsystem[v.Type] == nil {
|
||||||
|
this.chatsystem[v.Type] = make([]*cfg.GameChatSystemData, 0)
|
||||||
|
}
|
||||||
|
this.chatsystem[v.Type] = append(this.chatsystem[v.Type], v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.lock.Unlock()
|
||||||
|
})
|
||||||
this.LoadConfigure(game_chatchannelcom, cfg.NewGameChatChannelCom)
|
this.LoadConfigure(game_chatchannelcom, cfg.NewGameChatChannelCom)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -127,3 +145,18 @@ func (this *configureComp) GetChannelReadRecordNum() (max int32, err error) {
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///获取校验聊天系统推送
|
||||||
|
func (this *configureComp) GetCheckChatSystem(ctype int32, value int32) (sitem *cfg.GameChatSystemData, ok bool) {
|
||||||
|
this.lock.RLock()
|
||||||
|
vs, ok := this.chatsystem[ctype]
|
||||||
|
this.lock.RUnlock()
|
||||||
|
if ok {
|
||||||
|
for _, v := range vs {
|
||||||
|
if v.Data == value {
|
||||||
|
return v, true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil, false
|
||||||
|
}
|
||||||
|
@ -75,7 +75,7 @@ func (this *modelChatComp) getChatQueue(channel pb.ChatChannel, stag, union stri
|
|||||||
)
|
)
|
||||||
switch channel {
|
switch channel {
|
||||||
case pb.ChatChannel_World:
|
case pb.ChatChannel_World:
|
||||||
key = fmt.Sprintf("%s-%s", worldchatkey, stag)
|
key = worldchatkey
|
||||||
find = bson.M{"channel": channel}
|
find = bson.M{"channel": channel}
|
||||||
break
|
break
|
||||||
case pb.ChatChannel_Union:
|
case pb.ChatChannel_Union:
|
||||||
@ -231,7 +231,7 @@ func (this *modelChatComp) SaveUserMsg(msg *pb.DBChat) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//发送世界频道聊天
|
//发送世界频道聊天
|
||||||
func (this *modelChatComp) sendWorldChat(stag string, msg *pb.DBChat) (code pb.ErrorCode) {
|
func (this *modelChatComp) sendWorldChat(msg *pb.DBChat) (code pb.ErrorCode) {
|
||||||
var (
|
var (
|
||||||
err error
|
err error
|
||||||
max int32
|
max int32
|
||||||
@ -240,7 +240,7 @@ func (this *modelChatComp) sendWorldChat(stag string, msg *pb.DBChat) (code pb.E
|
|||||||
code = pb.ErrorCode_ConfigNoFound
|
code = pb.ErrorCode_ConfigNoFound
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err = this.module.modelChat.addChatMsg(fmt.Sprintf("%s-%s", worldchatkey, stag), int64(max), msg); err != nil {
|
if err = this.module.modelChat.addChatMsg(worldchatkey, int64(max), msg); err != nil {
|
||||||
code = pb.ErrorCode_DBError
|
code = pb.ErrorCode_DBError
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -256,6 +256,23 @@ func (this *modelChatComp) sendWorldChat(stag string, msg *pb.DBChat) (code pb.E
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//发送系统频道聊天
|
||||||
|
func (this *modelChatComp) sendSystemChat(msg *pb.DBChat) (code pb.ErrorCode) {
|
||||||
|
var (
|
||||||
|
err error
|
||||||
|
)
|
||||||
|
data, _ := anypb.New(&pb.ChatMessagePush{Chat: msg})
|
||||||
|
if err = this.module.service.AcrossClusterBroadcast(context.Background(), msg.Stag, comm.Service_Gateway, string(comm.Rpc_GatewaySendRadioMsg), pb.UserMessage{
|
||||||
|
MainType: string(this.module.GetType()),
|
||||||
|
SubType: "message",
|
||||||
|
Data: data,
|
||||||
|
}, nil); err != nil {
|
||||||
|
this.module.Errorf("err:%v", err)
|
||||||
|
code = pb.ErrorCode_SystemError
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (this *modelChatComp) addChatMsg(key string, count int64, msgs ...*pb.DBChat) (err error) {
|
func (this *modelChatComp) addChatMsg(key string, count int64, msgs ...*pb.DBChat) (err error) {
|
||||||
var (
|
var (
|
||||||
data map[string]*pb.DBChat = make(map[string]*pb.DBChat, len(msgs))
|
data map[string]*pb.DBChat = make(map[string]*pb.DBChat, len(msgs))
|
||||||
|
@ -2,12 +2,14 @@ package chat
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"go_dreamfactory/comm"
|
"go_dreamfactory/comm"
|
||||||
"go_dreamfactory/lego/base"
|
"go_dreamfactory/lego/base"
|
||||||
"go_dreamfactory/lego/core"
|
"go_dreamfactory/lego/core"
|
||||||
"go_dreamfactory/lego/sys/event"
|
"go_dreamfactory/lego/sys/event"
|
||||||
"go_dreamfactory/modules"
|
"go_dreamfactory/modules"
|
||||||
"go_dreamfactory/pb"
|
"go_dreamfactory/pb"
|
||||||
|
"time"
|
||||||
|
|
||||||
"google.golang.org/protobuf/types/known/anypb"
|
"google.golang.org/protobuf/types/known/anypb"
|
||||||
)
|
)
|
||||||
@ -64,8 +66,8 @@ func (this *Chat) EventUserOffline(session comm.IUserSession) {
|
|||||||
|
|
||||||
//对外接口----------------------------------------------------------------------------------------------------------
|
//对外接口----------------------------------------------------------------------------------------------------------
|
||||||
//向世界频道发送聊天消息
|
//向世界频道发送聊天消息
|
||||||
func (this *Chat) SendWorldChat(stag string, msg *pb.DBChat) (code pb.ErrorCode) {
|
func (this *Chat) SendWorldChat(msg *pb.DBChat) (code pb.ErrorCode) {
|
||||||
code = this.modelChat.sendWorldChat(stag, msg)
|
code = this.modelChat.sendWorldChat(msg)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,6 +92,33 @@ func (this *Chat) SendUserChat(msg *pb.DBChat) (code pb.ErrorCode) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//广播系统消息
|
||||||
|
func (this *Chat) SendSysChatToWorld(ctype comm.ChatSystemType, value int32, agrs ...interface{}) (code pb.ErrorCode) {
|
||||||
|
if st, ok := this.configure.GetCheckChatSystem(int32(ctype), value); ok {
|
||||||
|
msg := &pb.DBChat{
|
||||||
|
Channel: pb.ChatChannel_System,
|
||||||
|
Stag: this.service.GetTag(),
|
||||||
|
Ctime: time.Now().Unix(),
|
||||||
|
Content: fmt.Sprintf(st.Text, agrs...),
|
||||||
|
}
|
||||||
|
code = this.modelChat.sendSystemChat(msg)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//广播系统消息
|
||||||
|
func (this *Chat) SendSysChatToUser(session comm.IUserSession, ctype comm.ChatSystemType, value int32, agrs ...interface{}) (code pb.ErrorCode) {
|
||||||
|
if st, ok := this.configure.GetCheckChatSystem(int32(ctype), value); ok {
|
||||||
|
msg := &pb.DBChat{
|
||||||
|
Channel: pb.ChatChannel_System,
|
||||||
|
Ctime: time.Now().Unix(),
|
||||||
|
Content: fmt.Sprintf(st.Text, agrs...),
|
||||||
|
}
|
||||||
|
session.SendMsg(string(this.GetType()), "message", &pb.ChatMessagePush{Chat: msg})
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
//Push--------------------------------------------------------------------------------------------------------------
|
//Push--------------------------------------------------------------------------------------------------------------
|
||||||
//推送消息到世界
|
//推送消息到世界
|
||||||
func (this *Chat) PushWorld(msg *pb.DBChat) (err error) {
|
func (this *Chat) PushWorld(msg *pb.DBChat) (err error) {
|
||||||
|
@ -36,6 +36,7 @@ func (this *apiComp) Upgrade(session comm.IUserSession, req *pb.EquipmentUpgrade
|
|||||||
confs []*cfg.GameEquipData
|
confs []*cfg.GameEquipData
|
||||||
issucc bool
|
issucc bool
|
||||||
suite1Lv, suite2Lv int32 = math.MaxInt32, math.MaxInt32
|
suite1Lv, suite2Lv int32 = math.MaxInt32, math.MaxInt32
|
||||||
|
user *pb.DBUser
|
||||||
)
|
)
|
||||||
if code = this.UpgradeCheck(session, req); code != pb.ErrorCode_Success {
|
if code = this.UpgradeCheck(session, req); code != pb.ErrorCode_Success {
|
||||||
return
|
return
|
||||||
@ -164,12 +165,17 @@ func (this *apiComp) Upgrade(session comm.IUserSession, req *pb.EquipmentUpgrade
|
|||||||
this.module.ModuleRtask.SendToRtask(session, comm.Rtype48, 1, hero.Suite2Star, hero.Suite2Lv)
|
this.module.ModuleRtask.SendToRtask(session, comm.Rtype48, 1, hero.Suite2Star, hero.Suite2Lv)
|
||||||
}
|
}
|
||||||
code = this.module.ModuleHero.UpdateEquipment(session, hero, equipments)
|
code = this.module.ModuleHero.UpdateEquipment(session, hero, equipments)
|
||||||
|
|
||||||
}
|
}
|
||||||
//随机任务触发
|
//随机任务触发
|
||||||
this.module.ModuleRtask.SendToRtask(session, comm.Rtype43, 1, equipment.Lv)
|
this.module.ModuleRtask.SendToRtask(session, comm.Rtype43, 1, equipment.Lv)
|
||||||
this.module.ModuleRtask.SendToRtask(session, comm.Rtype44, equipment.Lv)
|
this.module.ModuleRtask.SendToRtask(session, comm.Rtype44, equipment.Lv)
|
||||||
this.module.ModuleRtask.SendToRtask(session, comm.Rtype47, 1)
|
this.module.ModuleRtask.SendToRtask(session, comm.Rtype47, 1)
|
||||||
|
//聊天系统通知
|
||||||
|
if user = this.module.ModuleUser.GetUser(session.GetUserId()); user != nil {
|
||||||
|
this.module.chat.SendSysChatToWorld(comm.EquipmentUpgradeNotice, equipment.Lv, user.Name, conf.Name)
|
||||||
|
} else {
|
||||||
|
this.module.Errorf("no found userdata uid:%s", session.GetUserId())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
session.SendMsg(string(this.module.GetType()), "upgrade", &pb.EquipmentUpgradeResp{IsSucc: issucc, Equipment: modifyequipments})
|
session.SendMsg(string(this.module.GetType()), "upgrade", &pb.EquipmentUpgradeResp{IsSucc: issucc, Equipment: modifyequipments})
|
||||||
|
@ -23,6 +23,7 @@ func NewModule() core.IModule {
|
|||||||
type Equipment struct {
|
type Equipment struct {
|
||||||
modules.ModuleBase
|
modules.ModuleBase
|
||||||
service core.IService
|
service core.IService
|
||||||
|
chat comm.IChat
|
||||||
api *apiComp
|
api *apiComp
|
||||||
configure *configureComp
|
configure *configureComp
|
||||||
modelEquipment *modelEquipmentComp
|
modelEquipment *modelEquipmentComp
|
||||||
@ -44,6 +45,11 @@ func (this *Equipment) Init(service core.IService, module core.IModule, options
|
|||||||
//模块启动
|
//模块启动
|
||||||
func (this *Equipment) Start() (err error) {
|
func (this *Equipment) Start() (err error) {
|
||||||
err = this.ModuleBase.Start()
|
err = this.ModuleBase.Start()
|
||||||
|
var module core.IModule
|
||||||
|
if module, err = this.service.GetModule(comm.ModuleChat); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.chat = module.(comm.IChat)
|
||||||
event.RegisterGO(comm.EventUserOffline, this.EventUserOffline)
|
event.RegisterGO(comm.EventUserOffline, this.EventUserOffline)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -89,8 +89,7 @@ func (this *modelDreamComp) noticeuserfriend(stag, uid string, chat *pb.DBChat)
|
|||||||
//延迟推送到 世界聊天频道
|
//延迟推送到 世界聊天频道
|
||||||
func (this *modelDreamComp) delaynoticeWorld(stag string, chat *pb.DBChat) {
|
func (this *modelDreamComp) delaynoticeWorld(stag string, chat *pb.DBChat) {
|
||||||
timewheel.Add(time.Minute*15, func(t *timewheel.Task, i ...interface{}) {
|
timewheel.Add(time.Minute*15, func(t *timewheel.Task, i ...interface{}) {
|
||||||
_stag := i[0].(string)
|
|
||||||
_chat := i[0].(*pb.DBChat)
|
_chat := i[0].(*pb.DBChat)
|
||||||
this.module.chat.SendWorldChat(_stag, _chat)
|
this.module.chat.SendWorldChat(_chat)
|
||||||
}, stag, chat)
|
}, chat)
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,7 @@ type apiComp struct {
|
|||||||
module *User
|
module *User
|
||||||
hero comm.IHero
|
hero comm.IHero
|
||||||
mail comm.Imail
|
mail comm.Imail
|
||||||
|
chat comm.IChat
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *apiComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
|
func (this *apiComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
|
||||||
@ -54,5 +55,9 @@ func (this *apiComp) Start() (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.mail = module.(comm.Imail)
|
this.mail = module.(comm.Imail)
|
||||||
|
if module, err = this.service.GetModule(comm.ModuleChat); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.chat = module.(comm.IChat)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -161,5 +161,7 @@ func (this *apiComp) Login(session comm.IUserSession, req *pb.UserLoginReq) (cod
|
|||||||
fj = append(fj, atn2)
|
fj = append(fj, atn2)
|
||||||
mail.Items = fj
|
mail.Items = fj
|
||||||
this.mail.CreateNewMail(session, mail)
|
this.mail.CreateNewMail(session, mail)
|
||||||
|
//推送登录公告
|
||||||
|
this.chat.SendSysChatToUser(session, comm.UserLoginNotice, 0)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -363,6 +363,110 @@ func (x *ChatGetListResp) GetChats() []*DBChat {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//跨服请求聊天消息
|
||||||
|
type ChatGetCrossListReq struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
Channel ChatChannel `protobuf:"varint,1,opt,name=channel,proto3,enum=ChatChannel" json:"channel"` //频道
|
||||||
|
ChannelId int32 `protobuf:"varint,2,opt,name=channelId,proto3" json:"channelId"` //跨服频道id
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatGetCrossListReq) Reset() {
|
||||||
|
*x = ChatGetCrossListReq{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_chat_chat_msg_proto_msgTypes[7]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatGetCrossListReq) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ChatGetCrossListReq) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *ChatGetCrossListReq) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_chat_chat_msg_proto_msgTypes[7]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use ChatGetCrossListReq.ProtoReflect.Descriptor instead.
|
||||||
|
func (*ChatGetCrossListReq) Descriptor() ([]byte, []int) {
|
||||||
|
return file_chat_chat_msg_proto_rawDescGZIP(), []int{7}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatGetCrossListReq) GetChannel() ChatChannel {
|
||||||
|
if x != nil {
|
||||||
|
return x.Channel
|
||||||
|
}
|
||||||
|
return ChatChannel_World
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatGetCrossListReq) GetChannelId() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.ChannelId
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
//跨服请求聊天消息 回应
|
||||||
|
type ChatGetCrossListResp struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
Chats []*DBChat `protobuf:"bytes,1,rep,name=chats,proto3" json:"chats"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatGetCrossListResp) Reset() {
|
||||||
|
*x = ChatGetCrossListResp{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_chat_chat_msg_proto_msgTypes[8]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatGetCrossListResp) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ChatGetCrossListResp) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *ChatGetCrossListResp) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_chat_chat_msg_proto_msgTypes[8]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use ChatGetCrossListResp.ProtoReflect.Descriptor instead.
|
||||||
|
func (*ChatGetCrossListResp) Descriptor() ([]byte, []int) {
|
||||||
|
return file_chat_chat_msg_proto_rawDescGZIP(), []int{8}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatGetCrossListResp) GetChats() []*DBChat {
|
||||||
|
if x != nil {
|
||||||
|
return x.Chats
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
//消息发送请求
|
//消息发送请求
|
||||||
type ChatSendReq struct {
|
type ChatSendReq struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
@ -380,7 +484,7 @@ type ChatSendReq struct {
|
|||||||
func (x *ChatSendReq) Reset() {
|
func (x *ChatSendReq) Reset() {
|
||||||
*x = ChatSendReq{}
|
*x = ChatSendReq{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_chat_chat_msg_proto_msgTypes[7]
|
mi := &file_chat_chat_msg_proto_msgTypes[9]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -393,7 +497,7 @@ func (x *ChatSendReq) String() string {
|
|||||||
func (*ChatSendReq) ProtoMessage() {}
|
func (*ChatSendReq) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *ChatSendReq) ProtoReflect() protoreflect.Message {
|
func (x *ChatSendReq) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_chat_chat_msg_proto_msgTypes[7]
|
mi := &file_chat_chat_msg_proto_msgTypes[9]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -406,7 +510,7 @@ func (x *ChatSendReq) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use ChatSendReq.ProtoReflect.Descriptor instead.
|
// Deprecated: Use ChatSendReq.ProtoReflect.Descriptor instead.
|
||||||
func (*ChatSendReq) Descriptor() ([]byte, []int) {
|
func (*ChatSendReq) Descriptor() ([]byte, []int) {
|
||||||
return file_chat_chat_msg_proto_rawDescGZIP(), []int{7}
|
return file_chat_chat_msg_proto_rawDescGZIP(), []int{9}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *ChatSendReq) GetAvatar() string {
|
func (x *ChatSendReq) GetAvatar() string {
|
||||||
@ -463,7 +567,7 @@ type ChatSendResp struct {
|
|||||||
func (x *ChatSendResp) Reset() {
|
func (x *ChatSendResp) Reset() {
|
||||||
*x = ChatSendResp{}
|
*x = ChatSendResp{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_chat_chat_msg_proto_msgTypes[8]
|
mi := &file_chat_chat_msg_proto_msgTypes[10]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -476,7 +580,7 @@ func (x *ChatSendResp) String() string {
|
|||||||
func (*ChatSendResp) ProtoMessage() {}
|
func (*ChatSendResp) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *ChatSendResp) ProtoReflect() protoreflect.Message {
|
func (x *ChatSendResp) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_chat_chat_msg_proto_msgTypes[8]
|
mi := &file_chat_chat_msg_proto_msgTypes[10]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -489,7 +593,7 @@ func (x *ChatSendResp) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use ChatSendResp.ProtoReflect.Descriptor instead.
|
// Deprecated: Use ChatSendResp.ProtoReflect.Descriptor instead.
|
||||||
func (*ChatSendResp) Descriptor() ([]byte, []int) {
|
func (*ChatSendResp) Descriptor() ([]byte, []int) {
|
||||||
return file_chat_chat_msg_proto_rawDescGZIP(), []int{8}
|
return file_chat_chat_msg_proto_rawDescGZIP(), []int{10}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *ChatSendResp) GetIssucc() bool {
|
func (x *ChatSendResp) GetIssucc() bool {
|
||||||
@ -499,6 +603,142 @@ func (x *ChatSendResp) GetIssucc() bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//跨服消息发送请求
|
||||||
|
type ChatSendCrossReq struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
Avatar string `protobuf:"bytes,1,opt,name=avatar,proto3" json:"avatar"` //用户头像
|
||||||
|
Uname string `protobuf:"bytes,2,opt,name=uname,proto3" json:"uname"` //用户名
|
||||||
|
Ulv int32 `protobuf:"varint,3,opt,name=ulv,proto3" json:"ulv"` //用户等级
|
||||||
|
Channel ChatChannel `protobuf:"varint,4,opt,name=channel,proto3,enum=ChatChannel" json:"channel"` //频道
|
||||||
|
TargetId string `protobuf:"bytes,5,opt,name=targetId,proto3" json:"targetId"` //目标用户id
|
||||||
|
Content string `protobuf:"bytes,6,opt,name=content,proto3" json:"content"` //内容
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatSendCrossReq) Reset() {
|
||||||
|
*x = ChatSendCrossReq{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_chat_chat_msg_proto_msgTypes[11]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatSendCrossReq) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ChatSendCrossReq) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *ChatSendCrossReq) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_chat_chat_msg_proto_msgTypes[11]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use ChatSendCrossReq.ProtoReflect.Descriptor instead.
|
||||||
|
func (*ChatSendCrossReq) Descriptor() ([]byte, []int) {
|
||||||
|
return file_chat_chat_msg_proto_rawDescGZIP(), []int{11}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatSendCrossReq) GetAvatar() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Avatar
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatSendCrossReq) GetUname() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Uname
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatSendCrossReq) GetUlv() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Ulv
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatSendCrossReq) GetChannel() ChatChannel {
|
||||||
|
if x != nil {
|
||||||
|
return x.Channel
|
||||||
|
}
|
||||||
|
return ChatChannel_World
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatSendCrossReq) GetTargetId() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.TargetId
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatSendCrossReq) GetContent() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Content
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
//跨服消息发送请求 回应
|
||||||
|
type ChatSendCrossResp struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
Issucc bool `protobuf:"varint,1,opt,name=issucc,proto3" json:"issucc"` //是否成功
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatSendCrossResp) Reset() {
|
||||||
|
*x = ChatSendCrossResp{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_chat_chat_msg_proto_msgTypes[12]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatSendCrossResp) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ChatSendCrossResp) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *ChatSendCrossResp) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_chat_chat_msg_proto_msgTypes[12]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use ChatSendCrossResp.ProtoReflect.Descriptor instead.
|
||||||
|
func (*ChatSendCrossResp) Descriptor() ([]byte, []int) {
|
||||||
|
return file_chat_chat_msg_proto_rawDescGZIP(), []int{12}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ChatSendCrossResp) GetIssucc() bool {
|
||||||
|
if x != nil {
|
||||||
|
return x.Issucc
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
var File_chat_chat_msg_proto protoreflect.FileDescriptor
|
var File_chat_chat_msg_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
var file_chat_chat_msg_proto_rawDesc = []byte{
|
var file_chat_chat_msg_proto_rawDesc = []byte{
|
||||||
@ -529,21 +769,45 @@ var file_chat_chat_msg_proto_rawDesc = []byte{
|
|||||||
0x6e, 0x65, 0x6c, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x74, 0x47, 0x65, 0x74,
|
0x6e, 0x65, 0x6c, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x74, 0x47, 0x65, 0x74,
|
||||||
0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x74,
|
0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x74,
|
||||||
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x43, 0x68, 0x61, 0x74,
|
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x43, 0x68, 0x61, 0x74,
|
||||||
0x52, 0x05, 0x63, 0x68, 0x61, 0x74, 0x73, 0x22, 0xab, 0x01, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x74,
|
0x52, 0x05, 0x63, 0x68, 0x61, 0x74, 0x73, 0x22, 0x5b, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x74, 0x47,
|
||||||
0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61,
|
0x65, 0x74, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x26,
|
||||||
0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12,
|
0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
|
||||||
0x14, 0x0a, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
|
0x0c, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x07, 0x63,
|
||||||
0x75, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x6c, 0x76, 0x18, 0x03, 0x20, 0x01,
|
0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
|
||||||
0x28, 0x05, 0x52, 0x03, 0x75, 0x6c, 0x76, 0x12, 0x26, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e,
|
0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e,
|
||||||
0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0c, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x43,
|
0x65, 0x6c, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x14, 0x43, 0x68, 0x61, 0x74, 0x47, 0x65, 0x74, 0x43,
|
||||||
0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12,
|
0x72, 0x6f, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x05,
|
||||||
0x1a, 0x0a, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28,
|
0x63, 0x68, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42,
|
||||||
0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63,
|
0x43, 0x68, 0x61, 0x74, 0x52, 0x05, 0x63, 0x68, 0x61, 0x74, 0x73, 0x22, 0xab, 0x01, 0x0a, 0x0b,
|
||||||
0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f,
|
0x43, 0x68, 0x61, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x61,
|
||||||
0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x26, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x74, 0x53, 0x65, 0x6e,
|
0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61,
|
||||||
0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x63, 0x63, 0x18,
|
0x74, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
|
||||||
0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x63, 0x63, 0x42, 0x06, 0x5a,
|
0x28, 0x09, 0x52, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x6c, 0x76,
|
||||||
0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x75, 0x6c, 0x76, 0x12, 0x26, 0x0a, 0x07, 0x63,
|
||||||
|
0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0c, 0x2e, 0x43,
|
||||||
|
0x68, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e,
|
||||||
|
0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x18,
|
||||||
|
0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12,
|
||||||
|
0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
|
||||||
|
0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x26, 0x0a, 0x0c, 0x43, 0x68, 0x61,
|
||||||
|
0x74, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73,
|
||||||
|
0x75, 0x63, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x63,
|
||||||
|
0x63, 0x22, 0xb0, 0x01, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x43, 0x72,
|
||||||
|
0x6f, 0x73, 0x73, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72,
|
||||||
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x14,
|
||||||
|
0x0a, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x75,
|
||||||
|
0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x6c, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28,
|
||||||
|
0x05, 0x52, 0x03, 0x75, 0x6c, 0x76, 0x12, 0x26, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
|
||||||
|
0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0c, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x43, 0x68,
|
||||||
|
0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a,
|
||||||
|
0x0a, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
|
||||||
|
0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f,
|
||||||
|
0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e,
|
||||||
|
0x74, 0x65, 0x6e, 0x74, 0x22, 0x2b, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x74, 0x53, 0x65, 0x6e, 0x64,
|
||||||
|
0x43, 0x72, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73,
|
||||||
|
0x75, 0x63, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x63,
|
||||||
|
0x63, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||||
|
0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -558,7 +822,7 @@ func file_chat_chat_msg_proto_rawDescGZIP() []byte {
|
|||||||
return file_chat_chat_msg_proto_rawDescData
|
return file_chat_chat_msg_proto_rawDescData
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_chat_chat_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
|
var file_chat_chat_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
|
||||||
var file_chat_chat_msg_proto_goTypes = []interface{}{
|
var file_chat_chat_msg_proto_goTypes = []interface{}{
|
||||||
(*ChatMessagePush)(nil), // 0: ChatMessagePush
|
(*ChatMessagePush)(nil), // 0: ChatMessagePush
|
||||||
(*ChatCrossChannelReq)(nil), // 1: ChatCrossChannelReq
|
(*ChatCrossChannelReq)(nil), // 1: ChatCrossChannelReq
|
||||||
@ -567,21 +831,28 @@ var file_chat_chat_msg_proto_goTypes = []interface{}{
|
|||||||
(*ChatChanageChannelResp)(nil), // 4: ChatChanageChannelResp
|
(*ChatChanageChannelResp)(nil), // 4: ChatChanageChannelResp
|
||||||
(*ChatGetListReq)(nil), // 5: ChatGetListReq
|
(*ChatGetListReq)(nil), // 5: ChatGetListReq
|
||||||
(*ChatGetListResp)(nil), // 6: ChatGetListResp
|
(*ChatGetListResp)(nil), // 6: ChatGetListResp
|
||||||
(*ChatSendReq)(nil), // 7: ChatSendReq
|
(*ChatGetCrossListReq)(nil), // 7: ChatGetCrossListReq
|
||||||
(*ChatSendResp)(nil), // 8: ChatSendResp
|
(*ChatGetCrossListResp)(nil), // 8: ChatGetCrossListResp
|
||||||
(*DBChat)(nil), // 9: DBChat
|
(*ChatSendReq)(nil), // 9: ChatSendReq
|
||||||
(ChatChannel)(0), // 10: ChatChannel
|
(*ChatSendResp)(nil), // 10: ChatSendResp
|
||||||
|
(*ChatSendCrossReq)(nil), // 11: ChatSendCrossReq
|
||||||
|
(*ChatSendCrossResp)(nil), // 12: ChatSendCrossResp
|
||||||
|
(*DBChat)(nil), // 13: DBChat
|
||||||
|
(ChatChannel)(0), // 14: ChatChannel
|
||||||
}
|
}
|
||||||
var file_chat_chat_msg_proto_depIdxs = []int32{
|
var file_chat_chat_msg_proto_depIdxs = []int32{
|
||||||
9, // 0: ChatMessagePush.chat:type_name -> DBChat
|
13, // 0: ChatMessagePush.chat:type_name -> DBChat
|
||||||
10, // 1: ChatGetListReq.channel:type_name -> ChatChannel
|
14, // 1: ChatGetListReq.channel:type_name -> ChatChannel
|
||||||
9, // 2: ChatGetListResp.chats:type_name -> DBChat
|
13, // 2: ChatGetListResp.chats:type_name -> DBChat
|
||||||
10, // 3: ChatSendReq.channel:type_name -> ChatChannel
|
14, // 3: ChatGetCrossListReq.channel:type_name -> ChatChannel
|
||||||
4, // [4:4] is the sub-list for method output_type
|
13, // 4: ChatGetCrossListResp.chats:type_name -> DBChat
|
||||||
4, // [4:4] is the sub-list for method input_type
|
14, // 5: ChatSendReq.channel:type_name -> ChatChannel
|
||||||
4, // [4:4] is the sub-list for extension type_name
|
14, // 6: ChatSendCrossReq.channel:type_name -> ChatChannel
|
||||||
4, // [4:4] is the sub-list for extension extendee
|
7, // [7:7] is the sub-list for method output_type
|
||||||
0, // [0:4] is the sub-list for field type_name
|
7, // [7:7] is the sub-list for method input_type
|
||||||
|
7, // [7:7] is the sub-list for extension type_name
|
||||||
|
7, // [7:7] is the sub-list for extension extendee
|
||||||
|
0, // [0:7] is the sub-list for field type_name
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_chat_chat_msg_proto_init() }
|
func init() { file_chat_chat_msg_proto_init() }
|
||||||
@ -676,7 +947,7 @@ func file_chat_chat_msg_proto_init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_chat_chat_msg_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
|
file_chat_chat_msg_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*ChatSendReq); i {
|
switch v := v.(*ChatGetCrossListReq); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
case 1:
|
case 1:
|
||||||
@ -688,6 +959,30 @@ func file_chat_chat_msg_proto_init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_chat_chat_msg_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
|
file_chat_chat_msg_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*ChatGetCrossListResp); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_chat_chat_msg_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*ChatSendReq); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_chat_chat_msg_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*ChatSendResp); i {
|
switch v := v.(*ChatSendResp); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
@ -699,6 +994,30 @@ func file_chat_chat_msg_proto_init() {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
file_chat_chat_msg_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*ChatSendCrossReq); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_chat_chat_msg_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*ChatSendCrossResp); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
type x struct{}
|
type x struct{}
|
||||||
out := protoimpl.TypeBuilder{
|
out := protoimpl.TypeBuilder{
|
||||||
@ -706,7 +1025,7 @@ func file_chat_chat_msg_proto_init() {
|
|||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: file_chat_chat_msg_proto_rawDesc,
|
RawDescriptor: file_chat_chat_msg_proto_rawDesc,
|
||||||
NumEnums: 0,
|
NumEnums: 0,
|
||||||
NumMessages: 9,
|
NumMessages: 13,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 0,
|
NumServices: 0,
|
||||||
},
|
},
|
||||||
|
@ -13,9 +13,7 @@ import "errors"
|
|||||||
type GameChatSystemData struct {
|
type GameChatSystemData struct {
|
||||||
Key int32
|
Key int32
|
||||||
Type int32
|
Type int32
|
||||||
Title string
|
Text string
|
||||||
Close string
|
|
||||||
Test string
|
|
||||||
Data int32
|
Data int32
|
||||||
Week []int32
|
Week []int32
|
||||||
TimeH int32
|
TimeH int32
|
||||||
@ -31,9 +29,7 @@ func (*GameChatSystemData) GetTypeId() int32 {
|
|||||||
func (_v *GameChatSystemData)Deserialize(_buf map[string]interface{}) (err error) {
|
func (_v *GameChatSystemData)Deserialize(_buf map[string]interface{}) (err error) {
|
||||||
{ 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["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; 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; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["text"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Text error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Text, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text 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 _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 _arr_ []interface{}
|
||||||
|
Loading…
Reference in New Issue
Block a user