This commit is contained in:
liwei1dao 2022-07-22 15:30:16 +08:00
commit 7706f65864
54 changed files with 605 additions and 373 deletions

2
.gitignore vendored
View File

@ -15,8 +15,10 @@ bin/conf
.vscode/
./bin/conf
./bin/log
./bin/mainte
./bin/gateway
./bin/worker
./bin/vsdebug*
~$*.xlsx
*.pid
cmd/luban/

8
bin/build_linux.bat Normal file
View File

@ -0,0 +1,8 @@
set GOOS=linux
set CGO_ENABLED=0
cd ../
del bin/mainte,bin/gateway,bin/worker
go build -o ./bin/mainte ./services/mainte/main.go
go build -o ./bin/gateway ./services/gateway/main.go
go build -o ./bin/worker ./services/worker/main.go
REM pause

View File

@ -1,6 +1,7 @@
CGO_ENABLED=0
GO111MODULE=on
GOOS=linux
go build -o ./bin/dbservice ./services/dbservice/main.go
cd ../
go build -o ./bin/mainte ./services/mainte/main.go
go build -o ./bin/gateway ./services/gateway/main.go
go build -o ./bin/worker ./services/worker/main.go

View File

@ -1,6 +1,7 @@
SET CGO_ENABLED=0
SET GOOS=windows
SET GOARCH=amd64
cd ../
go build -o build/gateway.exe services/gateway/main.go
go build -o build/worker.exe services/worker/main.go
go build -o build/web.exe services/web/main.go

Binary file not shown.

Binary file not shown.

Binary file not shown.

89
bin/编译部署文档.md Normal file
View File

@ -0,0 +1,89 @@
## 梦工厂编译部署文档
### 梦工厂外网测试服
1. DB服务:119.3.105.109 账号:root 密码:l2qMQigN4xOA MongoDB和Rides 的地址
- MongoDB 账号:root 密码:iamciniao
- Rides 密码:kujqweiasd
2. 程序运行服:119.3.89.14 账号:root 密码:l2qMQigN4xOA
### 编译项目代码
1. 拉取git仓库代码:git clone http://git.legu.cc/liwei_3d/go_dreamfactory.git
2. 进入 go_dreamfactory 目录 执行:go mod tidy (需要安装golang 版本 go1.18.2以上环境:https://www.jianshu.com/p/35a161738d83)
3. 进入 go_dreamfactory/bin 目录下,执行 bulid_linux.sh 脚本 编译执行文件
4. 拷贝bin目录作为发布文件
### 安装部署依赖环境
1. 安装 MongoDB 教程 https://segmentfault.com/a/1190000039268500
2. 安装 Redis 教程
- 单节点 https://segmentfault.com/a/1190000023178516
- 集群:https://blog.csdn.net/jiang1986829/article/details/108667854
3. 安装 Consul https://blog.csdn.net/jeikerxiao/article/details/78114413
### 修改配置文件
1. 进入发布文件(bin 目录) 下 conf 目录
2. 修改配置文件中 MongoDB,Redis,Consul 相关配置
```
rpcx: #rpcx 系统配置
Debug: true
AutoConnect: true #自动连接到集群服务节点
RpcxStartType: 1 #0 服务端 1是客户端
ConsulServers: ["10.0.0.9:8500"] #Consul 服务地址
cache: #缓存系统
Redis_IsCluster: false #是否是集群
Redis_Addr: ["10.0.0.9:6986"] #Redis 服务地址
Redis_Password: "li13451234" #Redis 服务密码
Redis_DB: 6 #Redis 数据存储db
db: #存储系统
MongodbUrl: "mongodb://10.0.0.9:27019" #Mongodb服务地址
MongodbDatabase: "dreamfactory" #梦工厂数据库名
```
3. 修改区服id
```
tag : "dreamfactory_liwei" #服务集群标签 在梦工厂中作为区服id 同区服内的服务可以互相通信,不同区服的不能互相通信
```
4. 配置跨服服务器 此配置只在gateway服务器上
```
gateway:
Debug: true
SpanServiceTag: "dreamfactory_span" #服务服务集群
ListenPort: 7891
```
5. 配置多个worker服务
- 配置多个worker 只需要拷贝 worker_1.yaml 文件到 worker_2.yaml 文件
- 修改 worker_2.yaml 下配置文件中
```
id: "worker_1" #修改worker_1 到worker_2, 服务的唯一id 在同一集群下唯一即可
ip: "127.0.0.1" #运行主机Ip 保证同集群下服务可以通过此ip互相访问
port: 9569 #rpc通信端口 不被占用即可
log: #日志系统
FileName: "./log/worker_1.log" #修改日志文件地址 以免和其他worker冲突 日志文件存放地址
```
### 部署梦工厂服务
1. 将修改完毕的发布文件(bin 目录)考本到目标主机服务器上,选择适合目录保存
2. 进入发布文件 执行 ./start.sh 脚本 正常执行
```
[root@master bin]# ./start.sh
starting mainte...
start success
starting worker_1...
start success
starting gateway_1...
start success
```
3. 程序启动后会自动生成 log目录进入log 目录 查看各个服务文件启动日志是否正常 ,每个服务会对应一个日志文件 日志文件名在 服务配置中有配置,正常启动
```
2022/07/22 11:45:56.681 INFO rpcx/service.go:80 Sys log Init success !
2022/07/22 11:45:56.682 INFO rpcx/service.go:86 Sys event Init success !
2022/07/22 11:45:56.682 INFO rpcx/service.go:92 Sys codec Init success !
2022/07/22 11:45:56.682 INFO rpcx/service.go:98 Sys rpcx Init success !
2022/07/22 11:45:56.682 INFO services/servicebase.go:24 init sys.configure success!
2022/07/22 11:45:56.682 INFO cbase/servicebase.go:66 服务[gateway_1] 初始化完成!
2022/07/22 11:45:56.682 INFO cbase/servicebase.go:89 服务[gateway_1:1.0.0.0] 启动完成!
2022/07/22 11:45:56.682 INFO cbase/servicebase.go:109 注册模块【gateway】
```
4. 是同网页工具以及客户端 测试服务是否正常
1. 网页工具 http://10.0.1.11:8848/#/protocol/index 修改页面中服务器连接地址 点击连接,测试user.login协议

View File

@ -27,26 +27,21 @@ var (
// enabled: true,
next: func(robot *Robot, rsp proto.Message) {
tcs := []*TestCase{}
if r, ok := rsp.(*pb.HeroListResp); ok {
for _, v := range r.List {
heroId := v.Id
tc := &TestCase{
desc: "英雄详情",
mainType: string(comm.ModuleHero),
subType: hero.HeroSubTypeInfo,
req: &pb.HeroInfoReq{
HeroId: heroId,
if _, ok := rsp.(*pb.HeroListResp); ok {
tc := &TestCase{
desc: "英雄升级",
mainType: string(comm.ModuleHero),
subType: hero.StrengthenUplv,
req: &pb.HeroStrengthenUplvReq{
HeroObjID: "62da0353ebe27f9446dd4a1d",
ExpCards: map[string]int32{
"62da19017944b60fd473df61": 1,
},
rsp: &pb.HeroInfoResp{},
// enabled: true,
// print: func(rsp proto.Message) {
// r := rsp.(*pb.HeroInfoResp)
// fmt.Printf("%v\n", r)
// },
}
tcs = append(tcs, tc)
},
rsp: &pb.HeroStrengthenUplvResp{},
// enabled: true,
}
tcs = append(tcs, tc)
}
robot.addBuilders(tcs)
},
@ -103,7 +98,7 @@ var (
req: &pb.HeroStrengthenUplvReq{
HeroObjID: heroId,
ExpCards: map[string]int32{
heroId: 1,
"62da19017944b60fd473df61": 1,
},
},
rsp: &pb.HeroStrengthenUplvResp{},

View File

@ -29,7 +29,7 @@ var (
mainType: string(comm.ModuleMainline),
subType: mainline.MainlineChallengeResp,
req: &pb.MainlineChallengeReq{
ChapterId: 1,
MainlineId: 1,
},
rsp: &pb.MainlineChallengeResp{},

View File

@ -29,7 +29,7 @@ var (
fmt.Printf("%v \n", v)
}
},
// enabled: true,
enabled: true,
next: func(robot *Robot, rsp proto.Message) {
tcs := []*TestCase{}
if v, ok := rsp.(*pb.TaskListResp); ok {

View File

@ -41,11 +41,11 @@ var user_builders = []*TestCase{
req: &pb.UserAddResReq{
Res: &pb.UserAssets{
A: "hero",
T: "43001",
T: "42911",
N: 1,
},
},
rsp: &pb.UserAddResResp{},
rsp: &pb.UserAddResResp{},
// enabled: true,
}, {
desc: "获取配置",

View File

@ -48,14 +48,17 @@ const (
//RPC服务接口定义处
const ( //Rpc
Rpc_GatewayRoute core.Rpc_Key = "Rpc_GatewayRoute" //网关路由
Rpc_GatewayAgentBind core.Rpc_Key = "Rpc_GatewayAgentBind" //代理绑定 绑定用户Id
Rpc_GatewayAgentUnBind core.Rpc_Key = "Rpc_GatewayAgentUnBind" //代理解绑 解绑用户Id
Rpc_GatewayAgentSendMsg core.Rpc_Key = "Rpc_GatewayAgentSendMsg" //代理发送消息 向用户发送消息
Rpc_GatewaySendBatchMsg core.Rpc_Key = "Rpc_GatewaySendBatchMsg" //向多个用户发送消息
Rpc_GatewaySendRadioMsg core.Rpc_Key = "Rpc_GatewaySendRadioMsg" //广播消息
Rpc_GatewayAgentClose core.Rpc_Key = "Rpc_GatewayAgentClose" //代理关闭 关闭用户连接
Rpc_NoticeUserClose core.Rpc_Key = "Rpc_NoticeUserClose" //通知用户离线
//Gateway
Rpc_GatewayRoute core.Rpc_Key = "Rpc_GatewayRoute" //网关路由
Rpc_GatewayAgentBind core.Rpc_Key = "Rpc_GatewayAgentBind" //代理绑定 绑定用户Id
Rpc_GatewayAgentUnBind core.Rpc_Key = "Rpc_GatewayAgentUnBind" //代理解绑 解绑用户Id
Rpc_GatewayAgentSendMsg core.Rpc_Key = "Rpc_GatewayAgentSendMsg" //代理发送消息 向用户发送消息
Rpc_GatewaySendBatchMsg core.Rpc_Key = "Rpc_GatewaySendBatchMsg" //向多个用户发送消息
Rpc_GatewaySendRadioMsg core.Rpc_Key = "Rpc_GatewaySendRadioMsg" //广播消息
Rpc_GatewayAgentClose core.Rpc_Key = "Rpc_GatewayAgentClose" //代理关闭 关闭用户连接
Rpc_GatewayNoticeUserClose core.Rpc_Key = "Rpc_NoticeUserClose" //通知用户离线
//Chat
Rpc_ReleaseSystemMessage core.Rpc_Key = "Rpc_ReleaseSystemMessage" //发布系统消息
)
//事件类型定义处

View File

@ -52,6 +52,7 @@ func ReadBigFloatForString(buf []byte) (ret *big.Float, n int, err error) {
func ReadFloat32ForString(buf []byte) (ret float32, n int, err error) {
if buf[0] == '-' {
ret, n, err = readPositiveFloat32(buf[1:])
n++
ret = -ret
return
}
@ -60,6 +61,7 @@ func ReadFloat32ForString(buf []byte) (ret float32, n int, err error) {
func ReadFloat64ForString(buf []byte) (ret float64, n int, err error) {
if buf[0] == '-' {
ret, n, err = readPositiveFloat64(buf[1:])
n++
ret = -ret
return
}

View File

@ -41,6 +41,7 @@ func ReadInt8ForString(buf []byte) (ret int8, n int, err error) {
c := buf[0]
if c == '-' {
val, n, err = ReadUint32ForString(buf[1:])
n++
if val > math.MaxInt8+1 {
err = errors.New("ReadInt8ForString overflow: " + strconv.FormatInt(int64(val), 10))
return
@ -64,6 +65,7 @@ func ReadInt16ForString(buf []byte) (ret int16, n int, err error) {
c := buf[0]
if c == '-' {
val, n, err = ReadUint32ForString(buf[1:])
n++
if val > math.MaxInt16+1 {
err = errors.New("ReadInt16ForString overflow: " + strconv.FormatInt(int64(val), 10))
return
@ -87,6 +89,7 @@ func ReadInt32ForString(buf []byte) (ret int32, n int, err error) {
c := buf[0]
if c == '-' {
val, n, err = ReadUint32ForString(buf[1:])
n++
if val > math.MaxInt32+1 {
err = errors.New("ReadInt32ForString overflow: " + strconv.FormatInt(int64(val), 10))
return
@ -110,6 +113,7 @@ func ReadInt64ForString(buf []byte) (ret int64, n int, err error) {
c := buf[0]
if c == '-' {
val, n, err = ReadUint64ForString(buf[1:])
n++
if val > math.MaxInt64+1 {
err = errors.New("ReadInt64ForString overflow: " + strconv.FormatInt(int64(val), 10))
return
@ -154,6 +158,7 @@ func ReadUint16ForString(buf []byte) (ret uint16, n int, err error) {
func ReadUint32ForString(buf []byte) (ret uint32, n int, err error) {
ind := intDigits[buf[0]]
n = 1
if ind == 0 {
err = assertInteger(buf[1:])
return
@ -163,7 +168,6 @@ func ReadUint32ForString(buf []byte) (ret uint32, n int, err error) {
return
}
ret = uint32(ind)
n = 1
if len(buf) > 10 {
i := 1
ind2 := intDigits[buf[i]]
@ -252,6 +256,7 @@ func ReadUint32ForString(buf []byte) (ret uint32, n int, err error) {
func ReadUint64ForString(buf []byte) (ret uint64, n int, err error) {
ind := intDigits[buf[0]]
n = 1
if ind == 0 {
err = assertInteger(buf[1:])
return
@ -261,7 +266,6 @@ func ReadUint64ForString(buf []byte) (ret uint64, n int, err error) {
return
}
ret = uint64(ind)
n = 1
if len(buf) > 10 {
i := 0
ind2 := intDigits[buf[i]]

View File

@ -46,16 +46,17 @@ func newService(options *Options) (sys *Service, err error) {
}
type Service struct {
options *Options
metadata string
server *server.Server
selectors map[string]ISelector
clientmutex sync.RWMutex
clients map[string]net.Conn
clientmeta map[string]string
mutex sync.Mutex // protects following
seq uint64
pending map[uint64]*client.Call
options *Options
metadata string
server *server.Server
selectormutex sync.RWMutex
selectors map[string]ISelector
clientmutex sync.RWMutex
clients map[string]net.Conn
clientmeta map[string]string
mutex sync.Mutex // protects following
seq uint64
pending map[uint64]*client.Call
}
//RPC 服务启动
@ -194,90 +195,27 @@ func (this *Service) ClusterBroadcast(ctx context.Context, servicePath string, s
return
}
// func (this *Service) PreReadRequest(ctx context.Context) error {
// var (
// stag string
// selector client.Selector
// ok bool
// )
// req_metadata, ok := ctx.Value(share.ReqMetaDataKey).(map[string]string)
// this.Debugf("PreReadRequest Meta:%v ", ctx.Value(share.ReqMetaDataKey))
// if stag, ok = req_metadata[ServiceClusterTag]; ok {
// if selector, ok = this.selectors[stag]; !ok {
// this.selectors[stag] = newSelector(nil)
// selector = this.selectors[stag]
// }
// if addr, ok := req_metadata[ServiceAddrKey]; ok {
// if _, ok = this.clientmeta[addr]; !ok {
// if smeta, ok := req_metadata[ServiceMetaKey]; ok {
// servers := make(map[string]string)
// this.clientmutex.Lock()
// this.clientmeta[addr] = smeta
// this.clients[addr] = ctx.Value(server.RemoteConnContextKey).(net.Conn)
// for k, v := range this.clientmeta {
// servers[k] = v
// }
// this.clientmutex.Unlock()
// selector.UpdateServer(servers)
// this.Debugf("fond new node addr:%s smeta:%s \n", addr, smeta)
// }
// }
// }
// }
// return nil
// }
//监听客户端链接到服务上 保存客户端的连接对象
// func (this *Service) PreHandleRequest(ctx context.Context, r *protocol.Message) error {
// var (
// stag string
// selector client.Selector
// ok bool
// )
// req_metadata := ctx.Value(share.ReqMetaDataKey).(map[string]string)
// this.Debugf("PreHandleRequest ServicePath:%s ServiceMethod:%s Meta:%v ", r.ServicePath, r.ServiceMethod, ctx.Value(share.ReqMetaDataKey))
// if stag, ok = req_metadata[ServiceClusterTag]; ok {
// if selector, ok = this.selectors[stag]; !ok {
// this.selectors[stag] = newSelector(nil)
// selector = this.selectors[stag]
// }
// if addr, ok := req_metadata[ServiceAddrKey]; ok {
// if _, ok = this.clientmeta[addr]; !ok {
// if smeta, ok := req_metadata[ServiceMetaKey]; ok {
// servers := make(map[string]string)
// this.clientmutex.Lock()
// this.clientmeta[addr] = smeta
// this.clients[addr] = ctx.Value(server.RemoteConnContextKey).(net.Conn)
// for k, v := range this.clientmeta {
// servers[k] = v
// }
// this.clientmutex.Unlock()
// selector.UpdateServer(servers)
// this.Debugf("fond new node addr:%s smeta:%s \n", addr, smeta)
// }
// }
// }
// }
// return nil
// }
//监控rpc连接收到的请求消息 处理消息回调请求
func (this *Service) PostReadRequest(ctx context.Context, r *protocol.Message, e error) error {
if isCallMessage := (r.MessageType() == protocol.Request); isCallMessage {
var (
stag string
selector client.Selector
selector ISelector
ok bool
)
req_metadata := r.Metadata
this.Debugf("PreReadRequest ServicePath:%s ServicePath:%s Metadata:%v ", r.ServicePath, r.ServiceMethod, r.Metadata)
if stag, ok = req_metadata[ServiceClusterTag]; ok {
if selector, ok = this.selectors[stag]; !ok {
this.mutex.Lock()
this.selectors[stag] = newSelector(nil)
selector = this.selectors[stag]
this.mutex.Unlock()
this.selectormutex.RLock()
selector, ok = this.selectors[stag]
this.selectormutex.RUnlock()
if !ok {
selector = newSelector(nil)
this.selectormutex.Lock()
this.selectors[stag] = selector
this.selectormutex.Unlock()
}
if addr, ok := req_metadata[ServiceAddrKey]; ok {
if _, ok = this.clientmeta[addr]; !ok {
if smeta, ok := req_metadata[ServiceMetaKey]; ok {
@ -407,21 +345,25 @@ func (this *Service) call(ctx context.Context, clusterTag string, servicePath st
ServiceAddrKey: "tcp@" + this.options.ServiceAddr,
ServiceMetaKey: this.metadata,
})
if selector, ok = this.selectors[clusterTag]; !ok {
this.selectormutex.RLock()
selector, ok = this.selectors[clusterTag]
this.selectormutex.RUnlock()
if !ok {
err = fmt.Errorf("on found serviceTag:%s", clusterTag)
return
}
this.clientmutex.RLock()
if clientaddr = selector.Select(ctx, spath[0], serviceMethod, args); clientaddr == "" {
err = fmt.Errorf("on found servicePath:%s", servicePath)
return
}
this.clientmutex.RLock()
if conn, ok = this.clients[clientaddr]; !ok {
err = fmt.Errorf("on found clientaddr:%s", clientaddr)
this.clientmutex.RUnlock()
return
}
this.clientmutex.RUnlock()
if conn, ok = this.clients[clientaddr]; !ok {
err = fmt.Errorf("on found clientaddr:%s", clientaddr)
return
}
_call = new(client.Call)
_call.ServicePath = servicePath
_call.ServiceMethod = serviceMethod
@ -464,7 +406,10 @@ func (this *Service) broadcast(ctx context.Context, clusterTag string, servicePa
ServiceAddrKey: "tcp@" + this.options.ServiceAddr,
ServiceMetaKey: this.metadata,
})
if selector, ok = this.selectors[clusterTag]; !ok {
this.selectormutex.RLock()
selector, ok = this.selectors[clusterTag]
this.selectormutex.RUnlock()
if !ok {
err = fmt.Errorf("on found serviceTag:%s", clusterTag)
}
if clientaddrs = selector.Find(ctx, spath[0], serviceMethod, args); clientaddrs == nil || len(clientaddrs) == 0 {
@ -558,6 +503,7 @@ func (this *Service) clusterbroadcast(ctx context.Context, servicePath string, s
ServiceMetaKey: this.metadata,
})
addrs := make(map[string]struct{})
this.selectormutex.RLock()
for _, v := range this.selectors {
if clientaddrs = v.Find(ctx, spath[0], serviceMethod, args); clientaddrs != nil && len(clientaddrs) >= 0 {
for _, v1 := range clientaddrs {
@ -565,6 +511,7 @@ func (this *Service) clusterbroadcast(ctx context.Context, servicePath string, s
}
}
}
this.selectormutex.RUnlock()
if len(addrs) == 0 {
err = fmt.Errorf("on found service:%s", spath[0])
return

View File

@ -1,6 +0,0 @@
set GOOS=linux
set CGO_ENABLED=0
del bin/gateway,bin/worker
go build -o bin/gateway services/gateway/main.go
go build -o bin/worker services/worker/main.go
REM pause

View File

@ -100,13 +100,6 @@ func (this *MCompGate) reflectionRouteHandle(typ reflect.Type, method reflect.Me
log.Panicf("反射注册用户处理函数错误 [%s-%s] Api接口格式错误", this.module.GetType(), mname)
return
}
// if agrType.Kind() != reflect.Ptr {
// return
// }
// if !this.isExportedOrBuiltinType(agrType) {
// return
// }
if mtype.NumOut() != 2 {
log.Panicf("反射注册用户处理函数错误 [%s-%s] Api接口格式错误", this.module.GetType(), mname)
return

View File

@ -46,6 +46,8 @@ func (this *apiComp) Equip(session comm.IUserSession, req *pb.EquipmentEquipReq)
code = pb.ErrorCode_EquipmentOnFoundEquipment
return
}
} else {
equipments[i] = nil
}
}
//获取英雄数据
@ -96,6 +98,7 @@ func (this *apiComp) Equip(session comm.IUserSession, req *pb.EquipmentEquipReq)
} else {
subsit = false //辅套装没有
}
hero.EquipID[i] = ""
}
}
@ -112,13 +115,16 @@ func (this *apiComp) Equip(session comm.IUserSession, req *pb.EquipmentEquipReq)
}
}
//更新装备数据加成
if code = this.module.ModuleHero.UpdateEquipment(session, hero, equipments); code == pb.ErrorCode_Success {
if err = this.module.modelEquipment.UpdateByHeroId(session.GetUserId(), updatequipment...); err != nil {
log.Errorf("Equip err%v", err)
code = pb.ErrorCode_SystemError
return
}
if code = this.module.ModuleHero.UpdateEquipment(session, hero, equipments); code != pb.ErrorCode_Success {
log.Errorf("Equip ModuleHero UpdateEquipment code%v", code)
return
}
session.SendMsg(string(this.module.GetType()), "equip", &pb.EquipmentEquipResp{Equipments: equipments})
//同步数据
if err = this.module.modelEquipment.UpdateByHeroId(session.GetUserId(), updatequipment...); err != nil {
log.Errorf("Equip err%v", err)
code = pb.ErrorCode_SystemError
return
}
session.SendMsg(string(this.module.GetType()), "equip", &pb.EquipmentEquipResp{Equipments: updatequipment})
return
}

View File

@ -18,7 +18,7 @@ func (this *apiComp) ApplyCheck(session comm.IUserSession, req *pb.FriendApplyRe
//好友申请
func (this *apiComp) Apply(session comm.IUserSession, req *pb.FriendApplyReq) (code pb.ErrorCode, data proto.Message) {
if code = this.ApplyCheck(session, req); code != pb.ErrorCode_Success {
if code = this.ApplyCheck(session, req); code != pb.ErrorCode_Success {
return
}
@ -30,7 +30,8 @@ func (this *apiComp) Apply(session comm.IUserSession, req *pb.FriendApplyReq) (c
)
defer func() {
utils.TraceFunc(session.GetUserId(), string(this.module.GetType()), FriendSubTypeApply, req, Resp)
// utils.TraceFunc(session.GetUserId(), string(this.module.GetType()), FriendSubTypeApply, req, Resp)
}()
defer func() {

View File

@ -44,7 +44,7 @@ func (this *AgentMgrComp) DisConnect(a IAgent) {
this.agents.Delete(a.SessionId())
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{
if _, err := this.service.RpcGo(context.Background(), fmt.Sprintf("%s/%s", comm.Service_Worker, a.WorkerId()), string(comm.Rpc_GatewayNoticeUserClose), &pb.NoticeUserCloseReq{
Ip: a.IP(),
ServiceTag: this.service.GetTag(),
GatewayServiceId: this.service.GetId(),
@ -54,7 +54,7 @@ func (this *AgentMgrComp) DisConnect(a IAgent) {
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{
if _, err := this.service.AcrossClusterRpcGo(context.Background(), this.options.SpanServiceTag, comm.Service_Worker, string(comm.Rpc_GatewayNoticeUserClose), &pb.NoticeUserCloseReq{
Ip: a.IP(),
ServiceTag: this.service.GetTag(),
GatewayServiceId: this.service.GetId(),

View File

@ -4,6 +4,9 @@ import (
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/core/cbase"
"go_dreamfactory/lego/sys/gin"
"go_dreamfactory/lego/sys/gin/engine"
"reflect"
"strings"
)
/*
@ -22,8 +25,30 @@ func (this *Api_Comp) Init(service core.IService, module core.IModule, comp core
this.options = options.(*Options)
this.module = module.(*GM)
this.gin, err = gin.NewSys(gin.SetListenPort(this.options.Port))
this.gin.POST("/register", this.Register)
this.gin.GET("/serverlist", this.ServerList)
this.gin.GET("/createnotify", this.CreateNotify)
this.suitableMethods() //发射注册api
return
}
func (this *Api_Comp) suitableMethods() {
typ := reflect.TypeOf(this)
vof := reflect.ValueOf(this)
for m := 0; m < typ.NumMethod(); m++ {
method := typ.Method(m)
mname := method.Name
mtype := method.Type
if method.PkgPath != "" {
continue
}
if mtype.NumIn() != 2 {
continue
}
context := mtype.In(1)
if context.String() != "*engine.Context" {
continue
}
if mtype.NumOut() != 0 {
continue
}
this.gin.POST(strings.ToLower(mname), vof.MethodByName(mname).Interface().(func(*engine.Context)))
}
}

View File

@ -3,7 +3,6 @@ package hero
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/utils"
"google.golang.org/protobuf/proto"
)
@ -23,7 +22,6 @@ func (this *apiComp) Chouka(session comm.IUserSession, req *pb.HeroChoukaReq) (c
code = pb.ErrorCode_SystemError
return
}
utils.TraceFunc(session.GetUserId(), string(this.module.GetType()), HeroSubTypeChouka, req, rsp)
}()
heroCfgIds := req.HeroIds

View File

@ -4,7 +4,6 @@ import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/utils"
"google.golang.org/protobuf/proto"
)
@ -29,7 +28,7 @@ func (this *apiComp) Info(session comm.IUserSession, req *pb.HeroInfoReq) (code
code = pb.ErrorCode_SystemError
return
}
utils.TraceFunc(session.GetUserId(), string(this.module.GetType()), HeroSubTypeInfo, req, rsp)
// utils.TraceFunc(session.GetUserId(), string(this.module.GetType()), HeroSubTypeInfo, req, rsp)
}()
hero := this.module.modelHero.getOneHero(session.GetUserId(), req.HeroId)

View File

@ -3,7 +3,6 @@ package hero
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/utils"
"google.golang.org/protobuf/proto"
)
@ -21,7 +20,7 @@ func (this *apiComp) List(session comm.IUserSession, req *pb.HeroListReq) (code
if err != nil {
code = pb.ErrorCode_SystemError
}
utils.TraceFunc(session.GetUserId(), string(this.module.GetType()), HeroSubTypeList, req, rsp)
// utils.TraceFunc(session.GetUserId(), string(this.module.GetType()), HeroSubTypeList, req, rsp)
}()
rsp.List = this.module.GetHeroList(session.GetUserId())

View File

@ -35,7 +35,7 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
_expHero *pb.DBHero // 消耗英雄
minAddExp int32
_costHero []*pb.DBHero // 删除的英雄
bLvUp bool // 是否升级
iLvUp int32 // 当前升级次数
)
code = this.StrengthenUplvCheck(session, req) // check
@ -127,7 +127,7 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
curLv -= 1
break
}
bLvUp = true
iLvUp++
}
}
} else {
@ -181,8 +181,8 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
_hero.Property = m
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_hero}})
session.SendMsg(string(this.module.GetType()), StrengthenUplv, &pb.HeroStrengthenUplvResp{Hero: _hero})
if bLvUp { // 升级了 统计任务
this.module.ModuleTask.SendToTask(session, comm.TaskTypeUpHeroLevel, &pb.TaskParam{First: _hero.Lv})
if iLvUp > 0 { // 升级了 统计任务
this.module.ModuleTask.SendToTask(session, comm.TaskTypeUpHeroLevel, &pb.TaskParam{First: iLvUp})
}
return

View File

@ -101,6 +101,20 @@ func (this *ModelHero) createOneHero(uid string, heroCfgId int32) (hero *pb.DBHe
func (this *ModelHero) initHeroOverlying(uid string, heroCfgId, count int32) (hero *pb.DBHero, err error) {
hero = this.initHero(uid, heroCfgId)
if hero != nil {
// 添加图鉴
if result, err1 := this.GetUserExpand(uid); err1 == nil {
sz := make(map[int32]bool, 0)
for k := range result.GetTujian() {
sz[k] = true
}
if _, ok := result.GetTujian()[heroCfgId]; !ok {
sz[heroCfgId] = true
initUpdate := map[string]interface{}{
"tujian": sz,
}
this.ChanageUserExpand(uid, initUpdate)
}
}
hero.SameCount += count
if err = this.moduleHero.modelHero.AddList(uid, hero.Id, hero); err != nil {
this.moduleHero.Errorf("%v", err)

View File

@ -18,27 +18,15 @@ func (this *apiComp) DelMailCheck(session comm.IUserSession, req *pb.MailDelMail
// 删除邮件
func (this *apiComp) DelMail(session comm.IUserSession, req *pb.MailDelMailReq) (code pb.ErrorCode, data proto.Message) {
var err error
mailinfo := make([]*pb.DBMailData, 0)
defer func() {
session.SendMsg(string(this.module.GetType()), "delmail", &pb.MailDelMailResp{Mail: mailinfo})
}()
code = this.DelMailCheck(session, req) // check
if code != pb.ErrorCode_Success {
return
}
bRet := this.module.modelMail.Mail_DelUserMail(req.ObjID)
if !bRet {
code = pb.ErrorCode_DBError
code = pb.ErrorCode_MailErr // 邮件不存在
return
}
if mailinfo, err = this.module.modelMail.Mail_QueryUserMail(session.GetUserId()); err != nil {
this.module.Errorf("QueryUserMailResp err:%v", err)
code = pb.ErrorCode_CacheReadError
return
}
session.SendMsg(string(this.module.GetType()), "delmail", &pb.MailDelMailResp{ObjID: req.ObjID})
return
}

View File

@ -18,19 +18,16 @@ func (this *apiComp) GetUserMailAttachmentCheck(session comm.IUserSession, req *
// 领取附件
func (this *apiComp) GetUserMailAttachment(session comm.IUserSession, req *pb.MailGetUserMailAttachmentReq) (code pb.ErrorCode, data proto.Message) {
var (
mail *pb.DBMailData
)
defer func() {
session.SendMsg(string(this.module.GetType()), "getusermailattachment", &pb.MailGetUserMailAttachmentResp{Mail: mail})
}()
code = this.GetUserMailAttachmentCheck(session, req) // check
if code != pb.ErrorCode_Success {
return
}
_bGet := this.module.modelMail.Mail_GetMailAttachmentState(req.ObjID)
if !_bGet {
mail, err := this.module.modelMail.Mail_GetMailAttachmentState(req.ObjID, session.GetUserId())
if err != nil {
code = pb.ErrorCode_MailErr
return
}
if mail.Reward || len(mail.GetItems()) == 0 || mail.Uid != session.GetUserId() {
code = pb.ErrorCode_StateInvalid
return
}
@ -46,7 +43,7 @@ func (this *apiComp) GetUserMailAttachment(session comm.IUserSession, req *pb.Ma
}
res = append(res, d)
}
code = this.module.api.module.ConsumeRes(session, res, true) // 领取附件
code = this.module.api.module.DispenseRes(session, res, true) // 领取附件
if code == pb.ErrorCode_Success {
// 修改状态
this.module.modelMail.Mail_UpdateMailAttachmentState(req.ObjID)
@ -55,6 +52,7 @@ func (this *apiComp) GetUserMailAttachment(session comm.IUserSession, req *pb.Ma
}
}
}
code = pb.ErrorCode_SystemError
session.SendMsg(string(this.module.GetType()), "getusermailattachment", &pb.MailGetUserMailAttachmentResp{Mail: mail})
return
}

View File

@ -53,7 +53,7 @@ func (this *modelMail) Mail_InsertUserMail(mail *pb.DBMailData) (err error) {
mail.Reward = false
if len(mail.GetItems()) > 0 {
mail.Reward = true
mail.Reward = false
}
_, err = this.DB.InsertOne(DB_MailTable, mail)
@ -66,10 +66,10 @@ func (this *modelMail) Mail_ReadOneMail(objId string) (mail *pb.DBMailData, err
DB_MailTable,
bson.M{"_id": objId},
bson.M{"$set": bson.M{
"check": false,
"check": true,
}},
options.FindOneAndUpdate().SetUpsert(false).SetReturnDocument(options.After),
).Decode(mail)
options.FindOneAndUpdate().SetUpsert(true).SetReturnDocument(options.After),
).Decode(&mail)
return mail, err
}
@ -86,13 +86,12 @@ func (this *modelMail) Mail_GetMailAttachment(objId string) (itmes []*pb.UserAss
}
// 查看领取附件状态
func (this *modelMail) Mail_GetMailAttachmentState(objId string) bool {
func (this *modelMail) Mail_GetMailAttachmentState(objId string, uid string) (*pb.DBMailData, error) {
var nd *pb.DBMailData
err := this.DB.FindOne(DB_MailTable, bson.M{"_id": objId}).Decode(nd)
if err != nil {
return false
}
return nd.Reward && len(nd.GetItems()) > 0
err := this.DB.FindOne(DB_MailTable, bson.M{"_id": objId}).Decode(&nd)
return nd, err
//return !nd.Reward && len(nd.GetItems()) > 0 && nd.Uid == uid
}
// 更新领取附件状态
@ -112,7 +111,7 @@ func (this *modelMail) Mail_UpdateMailAttachmentState(objId string) bool {
// 删除一封邮件
func (this *modelMail) Mail_DelUserMail(objId string) bool {
var obj *pb.DBMailData
err := this.DB.FindOne(DB_MailTable, bson.M{"_id": objId}).Decode(obj)
err := this.DB.FindOne(DB_MailTable, bson.M{"_id": objId}).Decode(&obj)
if err != nil {
return false
}

View File

@ -51,7 +51,7 @@ func (this *apiComp) Buy(session comm.IUserSession, req *pb.ShopBuyReq) (code pb
need[i] = &cfg.Game_atn{
A: v.A,
T: v.T,
N: int32(math.Ceil(float64(v.N) * float64(conf.Sale) / float64(100))),
N: int32(math.Ceil(float64(v.N) * float64(conf.Sale) / float64(1000))),
}
}

View File

@ -31,11 +31,7 @@ func (this *apiComp) Getlist(session comm.IUserSession, req *pb.ShopGetListReq)
tdata time.Duration
ltime time.Duration
)
defer func() {
if code == pb.ErrorCode_Success {
session.SendMsg(string(this.module.GetType()), "getlist", &pb.ShopGetListResp{Goods: goods})
}
}()
if shopconf, err = this.module.configure.GetShopConfigure(int32(req.SType)); err != nil && err != mgo.MongodbNil {
code = pb.ErrorCode_SystemError
return
@ -138,7 +134,8 @@ func (this *apiComp) Getlist(session comm.IUserSession, req *pb.ShopGetListReq)
}
} else {
code = pb.ErrorCode_ReqParameterError
return
}
session.SendMsg(string(this.module.GetType()), "getlist", &pb.ShopGetListResp{Goods: goods})
return
}

View File

@ -4,6 +4,7 @@ import (
"crypto/rand"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"math"
"math/big"
)
@ -56,7 +57,7 @@ func transGoods(goods []*cfg.Game_shopitemData, ushoputem map[int32]*pb.DBShopIt
result[i].Consume[i1] = &pb.UserAssets{
A: v1.A,
T: v1.T,
N: v1.N,
N: int32(math.Ceil(float64(v1.N) * float64(v.Sale) / float64(1000))),
}
}
}

View File

@ -30,6 +30,8 @@ func (this *modelShopComp) Init(service core.IService, module core.IModule, comp
//查询用户装备数据
func (this *modelShopComp) QueryUserShopData(uId string) (data *pb.DBShop, err error) {
data = &pb.DBShop{}
err = this.Get(uId, data)
if err = this.Get(uId, data); err != nil {
this.module.Errorf("err:%v", err)
}
return
}

View File

@ -3,7 +3,6 @@ package task
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/utils"
"google.golang.org/protobuf/proto"
)
@ -28,7 +27,7 @@ func (this *apiComp) ActiveList(session comm.IUserSession, req *pb.TaskActiveLis
if err != nil {
code = pb.ErrorCode_SystemError
}
utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeActiveList, req, resp)
// utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeActiveList, req, resp)
}()
resp.Active = this.moduleTask.modelTask.countActive(session.GetUserId(), comm.TaskTag(req.TaskTag))

View File

@ -3,7 +3,6 @@ package task
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/utils"
"google.golang.org/protobuf/proto"
)
@ -29,7 +28,7 @@ func (this *apiComp) ActiveReceive(session comm.IUserSession, req *pb.TaskActive
if err != nil {
code = pb.ErrorCode_SystemError
}
utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeActiveReceive, req, resp)
// utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeActiveReceive, req, resp)
}()
ua := this.moduleTask.modelTaskActive.getUserActive(session.GetUserId(), req.Id, comm.TaskTag(req.TaskTag))

View File

@ -3,7 +3,6 @@ package task
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/utils"
"google.golang.org/protobuf/proto"
)
@ -26,7 +25,7 @@ func (this *apiComp) List(session comm.IUserSession, req *pb.TaskListReq) (code
if err != nil {
code = pb.ErrorCode_SystemError
}
utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeList, req, rsp)
// utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeList, req, rsp)
}()
rsp.List = this.moduleTask.modelTask.getTaskList(session.GetUserId(), comm.TaskTag(req.TaskTag))

View File

@ -4,7 +4,6 @@ import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/pb"
"go_dreamfactory/utils"
"google.golang.org/protobuf/proto"
)
@ -28,7 +27,7 @@ func (this *apiComp) Receive(session comm.IUserSession, req *pb.TaskReceiveReq)
if err != nil {
code = pb.ErrorCode_SystemError
}
utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeReceive, req, resp)
// utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeReceive, req, resp)
}()
userTask := this.moduleTask.modelTask.getUserTask(session.GetUserId(), req.Id)
if userTask != nil {

View File

@ -121,18 +121,20 @@ func (this *ModelTask) modifyUserTask(uid string, taskId string, data map[string
//任务处理
func (this *ModelTask) taskHandle(uid string, taskType comm.TaskType, taskParam *pb.TaskParam) (*pb.DBTask, error) {
//查询当前用户未完成的任务列表
data, err := this.moduleTask.configure.getTasks(int32(taskType))
if err != nil {
log.Errorf("taskHandle err %v", err)
return nil, err
}
for _, conf := range data {
//不满足限定条件
if taskParam.First != conf.RestrictiveCondition {
continue
for _, conf := range data {
if conf.RestrictiveCondition != 0 {
//不满足限定条件
if taskParam.First < conf.RestrictiveCondition {
continue
}
}
//检查进度,执行处理器
if v, ok := this.checkTaskProgress(uid, conf); ok {
if tt, err := this.finishHandle(v, conf); err != nil {
@ -140,7 +142,6 @@ func (this *ModelTask) taskHandle(uid string, taskType comm.TaskType, taskParam
} else {
return tt, nil
}
}
}
return nil, nil
@ -168,7 +169,7 @@ func (this *ModelTask) finishHandle(userTask *pb.DBTask, config *cfg.Game_taskRo
userTask.Progress = progress
userTask.Status = 1
return nil, nil
return userTask, nil
}
//清空任务

View File

@ -70,8 +70,10 @@ func (this *ModuleTask) SendToTask(session comm.IUserSession, taskType comm.Task
if task, err := this.modelTask.taskHandle(session.GetUserId(), taskType, taskPram); err != nil {
code = pb.ErrorCode_TaskHandle
} else {
if err := session.SendMsg(string(comm.ModuleTask), TaskSubTypeFinishedPush, &pb.TaskFinishedPush{TaskId: task.TaskId}); err != nil {
this.modelTask.moduleTask.Errorf("SendToTask sendmsg err:%v", err)
if task != nil {
if err := session.SendMsg(string(comm.ModuleTask), TaskSubTypeFinishedPush, &pb.TaskFinishedPush{TaskId: task.TaskId}); err != nil {
this.modelTask.moduleTask.Errorf("SendToTask sendmsg err:%v", err)
}
}
}
return

View File

@ -17,6 +17,7 @@ const (
UserSubTypeUpdatesetting = "updatesetting" //更新设置
UserSubTypeVeriCode = "vericode" //验证码
UserSubTypeInitData = "initdata" //初始化用户
UserGetTujianResp = "gettujian" //获取图鉴信息
)
type apiComp struct {

View File

@ -4,7 +4,6 @@ import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"github.com/spf13/cast"
"google.golang.org/protobuf/proto"
)
@ -54,13 +53,7 @@ func (this *apiComp) Create(session comm.IUserSession, req *pb.UserCreateReq) (c
"created": true, //创角标识
}
//设置初始金币
if val := this.module.configure.GetGlobalConf("init_gold"); val != "" {
update["gold"] = cast.ToInt32(val)
}
err := this.module.modelUser.Change(session.GetUserId(), update)
if err != nil {
if err := this.module.modelUser.Change(session.GetUserId(), update); err != nil {
code = pb.ErrorCode_DBError
return
}

View File

@ -0,0 +1,33 @@
package user
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"google.golang.org/protobuf/proto"
)
func (this *apiComp) GetTujianCheck(session comm.IUserSession, req *pb.UserGetTujianReq) (code pb.ErrorCode) {
return
}
func (this *apiComp) GetTujian(session comm.IUserSession, req *pb.UserGetTujianReq) (code pb.ErrorCode, data proto.Message) {
if code = this.GetTujianCheck(session, req); code != pb.ErrorCode_Success {
return
}
rsp := &pb.UserGetTujianResp{}
if result, err := this.module.modelUser.GetUserExpand(session.GetUserId()); err != nil {
this.module.Errorf("err:%v", err)
return
} else {
for k := range result.Tujian {
rsp.Heroids = append(rsp.Heroids, k)
}
}
err := session.SendMsg(string(this.module.GetType()), UserGetTujianResp, rsp)
if err != nil {
code = pb.ErrorCode_SystemError
}
return
}

View File

@ -54,6 +54,7 @@ const (
ErrorCode_VeriCodeExpired ErrorCode = 1008 //验证码过期
ErrorCode_UserResetData ErrorCode = 1009 //初始化用户失败
ErrorCode_ModifynameCount ErrorCode = 1010 //名称修改次数不足
ErrorCode_MailErr ErrorCode = 1011 // 邮件不存在
// friend
ErrorCode_FriendNotSelf ErrorCode = 1100 //不能是自己
ErrorCode_FriendSelfMax ErrorCode = 1101 //超出好友最大数量
@ -150,6 +151,7 @@ var (
1008: "VeriCodeExpired",
1009: "UserResetData",
1010: "ModifynameCount",
1011: "MailErr",
1100: "FriendNotSelf",
1101: "FriendSelfMax",
1102: "FriendTargetMax",
@ -237,6 +239,7 @@ var (
"VeriCodeExpired": 1008,
"UserResetData": 1009,
"ModifynameCount": 1010,
"MailErr": 1011,
"FriendNotSelf": 1100,
"FriendSelfMax": 1101,
"FriendTargetMax": 1102,
@ -326,7 +329,7 @@ var File_errorcode_proto protoreflect.FileDescriptor
var file_errorcode_proto_rawDesc = []byte{
0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2a, 0xff, 0x0d, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x6f, 0x2a, 0x8d, 0x0e, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d,
0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x10, 0x0a, 0x12,
0x1b, 0x0a, 0x17, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
@ -363,83 +366,84 @@ var file_errorcode_proto_rawDesc = []byte{
0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x10, 0xf0, 0x07, 0x12, 0x12, 0x0a,
0x0d, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x10, 0xf1,
0x07, 0x12, 0x14, 0x0a, 0x0f, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x43,
0x6f, 0x75, 0x6e, 0x74, 0x10, 0xf2, 0x07, 0x12, 0x12, 0x0a, 0x0d, 0x46, 0x72, 0x69, 0x65, 0x6e,
0x64, 0x4e, 0x6f, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x10, 0xcc, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x46,
0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x4d, 0x61, 0x78, 0x10, 0xcd, 0x08, 0x12,
0x14, 0x0a, 0x0f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d,
0x61, 0x78, 0x10, 0xce, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53,
0x65, 0x6c, 0x66, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x10, 0xcf, 0x08, 0x12, 0x17, 0x0a, 0x12,
0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x6f, 0x44, 0x61,
0x74, 0x61, 0x10, 0xd0, 0x08, 0x12, 0x0e, 0x0a, 0x09, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x59,
0x65, 0x74, 0x10, 0xd1, 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41,
0x70, 0x70, 0x6c, 0x79, 0x59, 0x65, 0x74, 0x10, 0xd2, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x46, 0x72,
0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x59, 0x65, 0x74,
0x10, 0xd3, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x61, 0x72,
0x67, 0x65, 0x74, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x59, 0x65, 0x74, 0x10, 0xd4, 0x08, 0x12, 0x15,
0x0a, 0x10, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x45, 0x72, 0x72,
0x6f, 0x72, 0x10, 0xd5, 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42,
0x6c, 0x61, 0x63, 0x6b, 0x4d, 0x61, 0x78, 0x10, 0xd6, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x46, 0x72,
0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d,
0x70, 0x74, 0x79, 0x10, 0xd7, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x4e,
0x6f, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xb0, 0x09, 0x12, 0x15, 0x0a, 0x10, 0x49, 0x74,
0x65, 0x6d, 0x73, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x47, 0x69, 0x72, 0x64, 0x10, 0xb1,
0x09, 0x12, 0x16, 0x0a, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x47, 0x72, 0x69, 0x64, 0x4e, 0x75,
0x6d, 0x55, 0x70, 0x70, 0x65, 0x72, 0x10, 0xb2, 0x09, 0x12, 0x19, 0x0a, 0x14, 0x49, 0x74, 0x65,
0x6d, 0x73, 0x47, 0x69, 0x72, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x70, 0x70, 0x65,
0x72, 0x10, 0xb3, 0x09, 0x12, 0x10, 0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f, 0x45, 0x78,
0x69, 0x73, 0x74, 0x10, 0x94, 0x0a, 0x12, 0x11, 0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f,
0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x95, 0x0a, 0x12, 0x0e, 0x0a, 0x09, 0x48, 0x65, 0x72,
0x6f, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x10, 0x96, 0x0a, 0x12, 0x12, 0x0a, 0x0d, 0x48, 0x65, 0x72,
0x6f, 0x49, 0x6e, 0x69, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x10, 0x97, 0x0a, 0x12, 0x11, 0x0a,
0x0c, 0x48, 0x65, 0x72, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x45, 0x72, 0x72, 0x10, 0x98, 0x0a,
0x12, 0x13, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x55, 0x70, 0x45,
0x72, 0x72, 0x10, 0x99, 0x0a, 0x12, 0x14, 0x0a, 0x0f, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x78,
0x52, 0x65, 0x73, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x10, 0x9a, 0x0a, 0x12, 0x13, 0x0a, 0x0e, 0x48,
0x65, 0x72, 0x6f, 0x4e, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x10, 0x9b, 0x0a,
0x12, 0x18, 0x0a, 0x13, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f, 0x74, 0x4e, 0x65, 0x65, 0x64, 0x52,
0x65, 0x73, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x10, 0x9c, 0x0a, 0x12, 0x11, 0x0a, 0x0c, 0x48, 0x65,
0x72, 0x6f, 0x4e, 0x6f, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x10, 0x9d, 0x0a, 0x12, 0x0f, 0x0a,
0x0a, 0x48, 0x65, 0x72, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x10, 0x9e, 0x0a, 0x12, 0x14,
0x0a, 0x0f, 0x48, 0x65, 0x72, 0x6f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74,
0x65, 0x10, 0x9f, 0x0a, 0x12, 0x12, 0x0a, 0x0d, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x78, 0x41,
0x77, 0x61, 0x6b, 0x65, 0x6e, 0x10, 0xa0, 0x0a, 0x12, 0x0f, 0x0a, 0x0a, 0x48, 0x65, 0x72, 0x6f,
0x49, 0x73, 0x4c, 0x6f, 0x63, 0x6b, 0x10, 0xa1, 0x0a, 0x12, 0x11, 0x0a, 0x0c, 0x48, 0x65, 0x72,
0x6f, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xa2, 0x0a, 0x12, 0x14, 0x0a, 0x0f,
0x48, 0x65, 0x72, 0x6f, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x45, 0x72, 0x72, 0x10,
0xa3, 0x0a, 0x12, 0x10, 0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x45, 0x72,
0x72, 0x10, 0xa4, 0x0a, 0x12, 0x10, 0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x79, 0x70, 0x65,
0x45, 0x72, 0x72, 0x10, 0xa5, 0x0a, 0x12, 0x13, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x45, 0x78,
0x70, 0x54, 0x79, 0x70, 0x65, 0x45, 0x72, 0x72, 0x10, 0xa6, 0x0a, 0x12, 0x12, 0x0a, 0x0d, 0x48,
0x65, 0x72, 0x6f, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x45, 0x78, 0x70, 0x10, 0xa7, 0x0a, 0x12,
0x12, 0x0a, 0x0d, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x4c, 0x76, 0x45, 0x72, 0x72,
0x10, 0xa8, 0x0a, 0x12, 0x12, 0x0a, 0x0d, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x78, 0x53, 0x74,
0x61, 0x72, 0x4c, 0x76, 0x10, 0xa9, 0x0a, 0x12, 0x1e, 0x0a, 0x19, 0x45, 0x71, 0x75, 0x69, 0x70,
0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x6e, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x71, 0x75, 0x69, 0x70,
0x6d, 0x65, 0x6e, 0x74, 0x10, 0xf8, 0x0a, 0x12, 0x1c, 0x0a, 0x17, 0x45, 0x71, 0x75, 0x69, 0x70,
0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x76, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68,
0x65, 0x64, 0x10, 0xf9, 0x0a, 0x12, 0x1b, 0x0a, 0x16, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e,
0x65, 0x4e, 0x6f, 0x74, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x10,
0xdc, 0x0b, 0x12, 0x15, 0x0a, 0x10, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44,
0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xdd, 0x0b, 0x12, 0x15, 0x0a, 0x10, 0x4d, 0x61, 0x69,
0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xde, 0x0b,
0x12, 0x18, 0x0a, 0x13, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x72, 0x65, 0x4e,
0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xdf, 0x0b, 0x12, 0x19, 0x0a, 0x14, 0x4d, 0x61,
0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x52, 0x65, 0x77, 0x61,
0x72, 0x64, 0x10, 0xe0, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e,
0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10,
0xe1, 0x0b, 0x12, 0x0d, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x69, 0x74, 0x10, 0xc0,
0x0c, 0x12, 0x0e, 0x0a, 0x09, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x10, 0xc1,
0x0c, 0x12, 0x0f, 0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x10,
0xc2, 0x0c, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76,
0x65, 0x64, 0x10, 0xc3, 0x0c, 0x12, 0x13, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74,
0x69, 0x76, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x10, 0xc4, 0x0c, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x61,
0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x10,
0xc5, 0x0c, 0x12, 0x17, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65,
0x4e, 0x6f, 0x65, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xc6, 0x0c, 0x12, 0x13, 0x0a, 0x0e, 0x54,
0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xc7, 0x0c,
0x12, 0x11, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64,
0x10, 0xc8, 0x0c, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
0x6f, 0x75, 0x6e, 0x74, 0x10, 0xf2, 0x07, 0x12, 0x0c, 0x0a, 0x07, 0x4d, 0x61, 0x69, 0x6c, 0x45,
0x72, 0x72, 0x10, 0xf3, 0x07, 0x12, 0x12, 0x0a, 0x0d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4e,
0x6f, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x10, 0xcc, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x46, 0x72, 0x69,
0x65, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x4d, 0x61, 0x78, 0x10, 0xcd, 0x08, 0x12, 0x14, 0x0a,
0x0f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x78,
0x10, 0xce, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x6c,
0x66, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x10, 0xcf, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x46, 0x72,
0x69, 0x65, 0x6e, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61,
0x10, 0xd0, 0x08, 0x12, 0x0e, 0x0a, 0x09, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x59, 0x65, 0x74,
0x10, 0xd1, 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70,
0x6c, 0x79, 0x59, 0x65, 0x74, 0x10, 0xd2, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x46, 0x72, 0x69, 0x65,
0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x59, 0x65, 0x74, 0x10, 0xd3,
0x08, 0x12, 0x19, 0x0a, 0x14, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65,
0x74, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x59, 0x65, 0x74, 0x10, 0xd4, 0x08, 0x12, 0x15, 0x0a, 0x10,
0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x45, 0x72, 0x72, 0x6f, 0x72,
0x10, 0xd5, 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, 0x6c, 0x61,
0x63, 0x6b, 0x4d, 0x61, 0x78, 0x10, 0xd6, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x46, 0x72, 0x69, 0x65,
0x6e, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74,
0x79, 0x10, 0xd7, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x4e, 0x6f, 0x45,
0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xb0, 0x09, 0x12, 0x15, 0x0a, 0x10, 0x49, 0x74, 0x65, 0x6d,
0x73, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x47, 0x69, 0x72, 0x64, 0x10, 0xb1, 0x09, 0x12,
0x16, 0x0a, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x47, 0x72, 0x69, 0x64, 0x4e, 0x75, 0x6d, 0x55,
0x70, 0x70, 0x65, 0x72, 0x10, 0xb2, 0x09, 0x12, 0x19, 0x0a, 0x14, 0x49, 0x74, 0x65, 0x6d, 0x73,
0x47, 0x69, 0x72, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x70, 0x70, 0x65, 0x72, 0x10,
0xb3, 0x09, 0x12, 0x10, 0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f, 0x45, 0x78, 0x69, 0x73,
0x74, 0x10, 0x94, 0x0a, 0x12, 0x11, 0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f, 0x45, 0x6e,
0x6f, 0x75, 0x67, 0x68, 0x10, 0x95, 0x0a, 0x12, 0x0e, 0x0a, 0x09, 0x48, 0x65, 0x72, 0x6f, 0x4d,
0x61, 0x78, 0x4c, 0x76, 0x10, 0x96, 0x0a, 0x12, 0x12, 0x0a, 0x0d, 0x48, 0x65, 0x72, 0x6f, 0x49,
0x6e, 0x69, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x10, 0x97, 0x0a, 0x12, 0x11, 0x0a, 0x0c, 0x48,
0x65, 0x72, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x45, 0x72, 0x72, 0x10, 0x98, 0x0a, 0x12, 0x13,
0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x55, 0x70, 0x45, 0x72, 0x72,
0x10, 0x99, 0x0a, 0x12, 0x14, 0x0a, 0x0f, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x78, 0x52, 0x65,
0x73, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x10, 0x9a, 0x0a, 0x12, 0x13, 0x0a, 0x0e, 0x48, 0x65, 0x72,
0x6f, 0x4e, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x6e, 0x61, 0x74, 0x65, 0x10, 0x9b, 0x0a, 0x12, 0x18,
0x0a, 0x13, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x6f, 0x74, 0x4e, 0x65, 0x65, 0x64, 0x52, 0x65, 0x73,
0x6f, 0x6e, 0x61, 0x74, 0x65, 0x10, 0x9c, 0x0a, 0x12, 0x11, 0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f,
0x4e, 0x6f, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x10, 0x9d, 0x0a, 0x12, 0x0f, 0x0a, 0x0a, 0x48,
0x65, 0x72, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x10, 0x9e, 0x0a, 0x12, 0x14, 0x0a, 0x0f,
0x48, 0x65, 0x72, 0x6f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x10,
0x9f, 0x0a, 0x12, 0x12, 0x0a, 0x0d, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x78, 0x41, 0x77, 0x61,
0x6b, 0x65, 0x6e, 0x10, 0xa0, 0x0a, 0x12, 0x0f, 0x0a, 0x0a, 0x48, 0x65, 0x72, 0x6f, 0x49, 0x73,
0x4c, 0x6f, 0x63, 0x6b, 0x10, 0xa1, 0x0a, 0x12, 0x11, 0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f, 0x4d,
0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xa2, 0x0a, 0x12, 0x14, 0x0a, 0x0f, 0x48, 0x65,
0x72, 0x6f, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x45, 0x72, 0x72, 0x10, 0xa3, 0x0a,
0x12, 0x10, 0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x45, 0x72, 0x72, 0x10,
0xa4, 0x0a, 0x12, 0x10, 0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x45, 0x72,
0x72, 0x10, 0xa5, 0x0a, 0x12, 0x13, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x45, 0x78, 0x70, 0x54,
0x79, 0x70, 0x65, 0x45, 0x72, 0x72, 0x10, 0xa6, 0x0a, 0x12, 0x12, 0x0a, 0x0d, 0x48, 0x65, 0x72,
0x6f, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x45, 0x78, 0x70, 0x10, 0xa7, 0x0a, 0x12, 0x12, 0x0a,
0x0d, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x4c, 0x76, 0x45, 0x72, 0x72, 0x10, 0xa8,
0x0a, 0x12, 0x12, 0x0a, 0x0d, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x78, 0x53, 0x74, 0x61, 0x72,
0x4c, 0x76, 0x10, 0xa9, 0x0a, 0x12, 0x1e, 0x0a, 0x19, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65,
0x6e, 0x74, 0x4f, 0x6e, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65,
0x6e, 0x74, 0x10, 0xf8, 0x0a, 0x12, 0x1c, 0x0a, 0x17, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65,
0x6e, 0x74, 0x4c, 0x76, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64,
0x10, 0xf9, 0x0a, 0x12, 0x1b, 0x0a, 0x16, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x4e,
0x6f, 0x74, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x10, 0xdc, 0x0b,
0x12, 0x15, 0x0a, 0x10, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x46, 0x61,
0x69, 0x6c, 0x65, 0x64, 0x10, 0xdd, 0x0b, 0x12, 0x15, 0x0a, 0x10, 0x4d, 0x61, 0x69, 0x6e, 0x6c,
0x69, 0x6e, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xde, 0x0b, 0x12, 0x18,
0x0a, 0x13, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x72, 0x65, 0x4e, 0x6f, 0x74,
0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xdf, 0x0b, 0x12, 0x19, 0x0a, 0x14, 0x4d, 0x61, 0x69, 0x6e,
0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64,
0x10, 0xe0, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x4d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43,
0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe1, 0x0b,
0x12, 0x0d, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x69, 0x74, 0x10, 0xc0, 0x0c, 0x12,
0x0e, 0x0a, 0x09, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x10, 0xc1, 0x0c, 0x12,
0x0f, 0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x10, 0xc2, 0x0c,
0x12, 0x11, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64,
0x10, 0xc3, 0x0c, 0x12, 0x13, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76,
0x65, 0x49, 0x6e, 0x69, 0x74, 0x10, 0xc4, 0x0c, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b,
0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xc5, 0x0c,
0x12, 0x17, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x6f,
0x65, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xc6, 0x0c, 0x12, 0x13, 0x0a, 0x0e, 0x54, 0x61, 0x73,
0x6b, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xc7, 0x0c, 0x12, 0x11,
0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xc8,
0x0c, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
}
var (

View File

@ -349,7 +349,7 @@ type MailDelMailResp struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Mail []*DBMailData `protobuf:"bytes,1,rep,name=Mail,proto3" json:"Mail"`
ObjID string `protobuf:"bytes,1,opt,name=ObjID,proto3" json:"ObjID"` // 返回删除邮件id
}
func (x *MailDelMailResp) Reset() {
@ -384,11 +384,11 @@ func (*MailDelMailResp) Descriptor() ([]byte, []int) {
return file_mail_mail_msg_proto_rawDescGZIP(), []int{7}
}
func (x *MailDelMailResp) GetMail() []*DBMailData {
func (x *MailDelMailResp) GetObjID() string {
if x != nil {
return x.Mail
return x.ObjID
}
return nil
return ""
}
// 推送邮件
@ -465,14 +465,13 @@ var file_mail_mail_msg_proto_rawDesc = []byte{
0x61, 0x52, 0x04, 0x4d, 0x61, 0x69, 0x6c, 0x22, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x69, 0x6c, 0x44,
0x65, 0x6c, 0x4d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x62, 0x6a,
0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x22,
0x32, 0x0a, 0x0f, 0x4d, 0x61, 0x69, 0x6c, 0x44, 0x65, 0x6c, 0x4d, 0x61, 0x69, 0x6c, 0x52, 0x65,
0x73, 0x70, 0x12, 0x1f, 0x0a, 0x04, 0x4d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x0b, 0x2e, 0x44, 0x42, 0x4d, 0x61, 0x69, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4d,
0x61, 0x69, 0x6c, 0x22, 0x35, 0x0a, 0x12, 0x4d, 0x61, 0x69, 0x6c, 0x47, 0x65, 0x74, 0x4e, 0x65,
0x77, 0x4d, 0x61, 0x69, 0x6c, 0x50, 0x75, 0x73, 0x68, 0x12, 0x1f, 0x0a, 0x04, 0x4d, 0x61, 0x69,
0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x44, 0x42, 0x4d, 0x61, 0x69, 0x6c,
0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4d, 0x61, 0x69, 0x6c, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b,
0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x27, 0x0a, 0x0f, 0x4d, 0x61, 0x69, 0x6c, 0x44, 0x65, 0x6c, 0x4d, 0x61, 0x69, 0x6c, 0x52, 0x65,
0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x05, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x22, 0x35, 0x0a, 0x12, 0x4d, 0x61, 0x69, 0x6c,
0x47, 0x65, 0x74, 0x4e, 0x65, 0x77, 0x4d, 0x61, 0x69, 0x6c, 0x50, 0x75, 0x73, 0x68, 0x12, 0x1f,
0x0a, 0x04, 0x4d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x44,
0x42, 0x4d, 0x61, 0x69, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4d, 0x61, 0x69, 0x6c, 0x42,
0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -504,13 +503,12 @@ var file_mail_mail_msg_proto_depIdxs = []int32{
9, // 0: MailGetListResp.Mails:type_name -> DBMailData
9, // 1: MailReadMailResp.Mail:type_name -> DBMailData
9, // 2: MailGetUserMailAttachmentResp.Mail:type_name -> DBMailData
9, // 3: MailDelMailResp.Mail:type_name -> DBMailData
9, // 4: MailGetNewMailPush.Mail:type_name -> DBMailData
5, // [5:5] is the sub-list for method output_type
5, // [5:5] is the sub-list for method input_type
5, // [5:5] is the sub-list for extension type_name
5, // [5:5] is the sub-list for extension extendee
0, // [0:5] is the sub-list for field type_name
9, // 3: MailGetNewMailPush.Mail:type_name -> DBMailData
4, // [4:4] is the sub-list for method output_type
4, // [4:4] is the sub-list for method input_type
4, // [4:4] is the sub-list for extension type_name
4, // [4:4] is the sub-list for extension extendee
0, // [0:4] is the sub-list for field type_name
}
func init() { file_mail_mail_msg_proto_init() }

View File

@ -34,6 +34,7 @@ enum ErrorCode {
VeriCodeExpired = 1008; //
UserResetData = 1009; //
ModifynameCount = 1010; //
MailErr = 1011; //
// friend
FriendNotSelf = 1100; //

View File

@ -35,7 +35,7 @@ message MailDelMailReq {
}
message MailDelMailResp {
repeated DBMailData Mail = 1;
string ObjID = 1; // id
}
//

View File

@ -89,4 +89,12 @@ message UserModifynameReq {
message UserModifynameResp {
string uid = 1;
uint32 count = 2; //
}
message UserGetTujianReq{
}
message UserGetTujianResp{
repeated int32 heroids = 1;
}

View File

@ -10,4 +10,5 @@ message DBUserExpand {
uint32 initdataCount = 5; //
int32 chatchannel = 6; //
int32 modifynameCount = 7; //
map<int32,bool> tujian = 8; //
}

View File

@ -1074,6 +1074,91 @@ func (x *UserModifynameResp) GetCount() uint32 {
return 0
}
type UserGetTujianReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *UserGetTujianReq) Reset() {
*x = UserGetTujianReq{}
if protoimpl.UnsafeEnabled {
mi := &file_user_user_msg_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UserGetTujianReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UserGetTujianReq) ProtoMessage() {}
func (x *UserGetTujianReq) ProtoReflect() protoreflect.Message {
mi := &file_user_user_msg_proto_msgTypes[22]
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 UserGetTujianReq.ProtoReflect.Descriptor instead.
func (*UserGetTujianReq) Descriptor() ([]byte, []int) {
return file_user_user_msg_proto_rawDescGZIP(), []int{22}
}
type UserGetTujianResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Heroids []int32 `protobuf:"varint,1,rep,packed,name=heroids,proto3" json:"heroids"`
}
func (x *UserGetTujianResp) Reset() {
*x = UserGetTujianResp{}
if protoimpl.UnsafeEnabled {
mi := &file_user_user_msg_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UserGetTujianResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UserGetTujianResp) ProtoMessage() {}
func (x *UserGetTujianResp) ProtoReflect() protoreflect.Message {
mi := &file_user_user_msg_proto_msgTypes[23]
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 UserGetTujianResp.ProtoReflect.Descriptor instead.
func (*UserGetTujianResp) Descriptor() ([]byte, []int) {
return file_user_user_msg_proto_rawDescGZIP(), []int{23}
}
func (x *UserGetTujianResp) GetHeroids() []int32 {
if x != nil {
return x.Heroids
}
return nil
}
var File_user_user_msg_proto protoreflect.FileDescriptor
var file_user_user_msg_proto_rawDesc = []byte{
@ -1147,8 +1232,12 @@ var file_user_user_msg_proto_rawDesc = []byte{
0x6f, 0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a,
0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12,
0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x47, 0x65, 0x74,
0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x22, 0x2d, 0x0a, 0x11, 0x55, 0x73, 0x65,
0x72, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18,
0x0a, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52,
0x07, 0x68, 0x65, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -1163,7 +1252,7 @@ func file_user_user_msg_proto_rawDescGZIP() []byte {
return file_user_user_msg_proto_rawDescData
}
var file_user_user_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
var file_user_user_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
var file_user_user_msg_proto_goTypes = []interface{}{
(*UserLoginReq)(nil), // 0: UserLoginReq
(*UserLoginResp)(nil), // 1: UserLoginResp
@ -1187,22 +1276,24 @@ var file_user_user_msg_proto_goTypes = []interface{}{
(*UserInitdataResp)(nil), // 19: UserInitdataResp
(*UserModifynameReq)(nil), // 20: UserModifynameReq
(*UserModifynameResp)(nil), // 21: UserModifynameResp
(*DBUser)(nil), // 22: DBUser
(*DBUserExpand)(nil), // 23: DBUserExpand
(ErrorCode)(0), // 24: ErrorCode
(*CacheUser)(nil), // 25: CacheUser
(*UserAssets)(nil), // 26: UserAssets
(*DBUserSetting)(nil), // 27: DBUserSetting
(*UserGetTujianReq)(nil), // 22: UserGetTujianReq
(*UserGetTujianResp)(nil), // 23: UserGetTujianResp
(*DBUser)(nil), // 24: DBUser
(*DBUserExpand)(nil), // 25: DBUserExpand
(ErrorCode)(0), // 26: ErrorCode
(*CacheUser)(nil), // 27: CacheUser
(*UserAssets)(nil), // 28: UserAssets
(*DBUserSetting)(nil), // 29: DBUserSetting
}
var file_user_user_msg_proto_depIdxs = []int32{
22, // 0: UserLoginResp.data:type_name -> DBUser
23, // 1: UserLoginResp.ex:type_name -> DBUserExpand
24, // 2: UserRegisterResp.Code:type_name -> ErrorCode
25, // 3: UserLoadResp.data:type_name -> CacheUser
26, // 4: UserAddResReq.res:type_name -> UserAssets
26, // 5: UserAddResResp.res:type_name -> UserAssets
27, // 6: UserGetSettingResp.setting:type_name -> DBUserSetting
27, // 7: UserUpdateSettingReq.setting:type_name -> DBUserSetting
24, // 0: UserLoginResp.data:type_name -> DBUser
25, // 1: UserLoginResp.ex:type_name -> DBUserExpand
26, // 2: UserRegisterResp.Code:type_name -> ErrorCode
27, // 3: UserLoadResp.data:type_name -> CacheUser
28, // 4: UserAddResReq.res:type_name -> UserAssets
28, // 5: UserAddResResp.res:type_name -> UserAssets
29, // 6: UserGetSettingResp.setting:type_name -> DBUserSetting
29, // 7: UserUpdateSettingReq.setting:type_name -> DBUserSetting
8, // [8:8] is the sub-list for method output_type
8, // [8:8] is the sub-list for method input_type
8, // [8:8] is the sub-list for extension type_name
@ -1484,6 +1575,30 @@ func file_user_user_msg_proto_init() {
return nil
}
}
file_user_user_msg_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UserGetTujianReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_user_user_msg_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UserGetTujianResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
@ -1491,7 +1606,7 @@ func file_user_user_msg_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_user_user_msg_proto_rawDesc,
NumEnums: 0,
NumMessages: 22,
NumMessages: 24,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -26,13 +26,14 @@ type DBUserExpand struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` //主键id
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"` //用户id
Lastreadnotiftime int64 `protobuf:"varint,3,opt,name=lastreadnotiftime,proto3" json:"lastreadnotiftime"` //最后阅读公告时间
LastInitdataTime int64 `protobuf:"varint,4,opt,name=lastInitdataTime,proto3" json:"lastInitdataTime"` //上次初始数据时间
InitdataCount uint32 `protobuf:"varint,5,opt,name=initdataCount,proto3" json:"initdataCount"` //今日初始累计次数
Chatchannel int32 `protobuf:"varint,6,opt,name=chatchannel,proto3" json:"chatchannel"` //跨服聊天频道
ModifynameCount int32 `protobuf:"varint,7,opt,name=modifynameCount,proto3" json:"modifynameCount"` //修改昵称次数
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` //主键id
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"` //用户id
Lastreadnotiftime int64 `protobuf:"varint,3,opt,name=lastreadnotiftime,proto3" json:"lastreadnotiftime"` //最后阅读公告时间
LastInitdataTime int64 `protobuf:"varint,4,opt,name=lastInitdataTime,proto3" json:"lastInitdataTime"` //上次初始数据时间
InitdataCount uint32 `protobuf:"varint,5,opt,name=initdataCount,proto3" json:"initdataCount"` //今日初始累计次数
Chatchannel int32 `protobuf:"varint,6,opt,name=chatchannel,proto3" json:"chatchannel"` //跨服聊天频道
ModifynameCount int32 `protobuf:"varint,7,opt,name=modifynameCount,proto3" json:"modifynameCount"` //修改昵称次数
Tujian map[int32]bool `protobuf:"bytes,8,rep,name=tujian,proto3" json:"tujian" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 图鉴
}
func (x *DBUserExpand) Reset() {
@ -116,11 +117,18 @@ func (x *DBUserExpand) GetModifynameCount() int32 {
return 0
}
func (x *DBUserExpand) GetTujian() map[int32]bool {
if x != nil {
return x.Tujian
}
return nil
}
var File_userexpand_proto protoreflect.FileDescriptor
var file_userexpand_proto_rawDesc = []byte{
0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x22, 0xfc, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x70,
0x74, 0x6f, 0x22, 0xea, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x70,
0x61, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x72, 0x65, 0x61,
@ -136,8 +144,14 @@ var file_userexpand_proto_rawDesc = []byte{
0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x6f, 0x64, 0x69, 0x66,
0x79, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e,
0x74, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
0x74, 0x12, 0x31, 0x0a, 0x06, 0x74, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x19, 0x2e, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64,
0x2e, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x74, 0x75,
0x6a, 0x69, 0x61, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42,
0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -152,16 +166,18 @@ func file_userexpand_proto_rawDescGZIP() []byte {
return file_userexpand_proto_rawDescData
}
var file_userexpand_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_userexpand_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_userexpand_proto_goTypes = []interface{}{
(*DBUserExpand)(nil), // 0: DBUserExpand
nil, // 1: DBUserExpand.TujianEntry
}
var file_userexpand_proto_depIdxs = []int32{
0, // [0:0] is the sub-list for method output_type
0, // [0:0] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
1, // 0: DBUserExpand.tujian:type_name -> DBUserExpand.TujianEntry
1, // [1:1] is the sub-list for method output_type
1, // [1:1] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
}
func init() { file_userexpand_proto_init() }
@ -189,7 +205,7 @@ func file_userexpand_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_userexpand_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumMessages: 2,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -1,3 +0,0 @@
@echo off
pb2go.exe
pause

View File

@ -84,8 +84,8 @@ func (this *SCompGateRoute) Init(service core.IService, comp core.IServiceComp,
//组件启动时注册rpc服务监听
func (this *SCompGateRoute) Start() (err error) {
this.service.RegisterFunctionName(string(comm.Rpc_GatewayRoute), this.ReceiveMsg) //注册网关路由接收接口
this.service.RegisterFunctionName(string(comm.Rpc_NoticeUserClose), this.NoticeUserClose) //注册用户离线通知
this.service.RegisterFunctionName(string(comm.Rpc_GatewayRoute), this.ReceiveMsg) //注册网关路由接收接口
this.service.RegisterFunctionName(string(comm.Rpc_GatewayNoticeUserClose), this.NoticeUserClose) //注册用户离线通知
err = this.ServiceCompBase.Start()
return
}

View File

@ -18,9 +18,9 @@ const (
)
//打印函数处理信息
func TraceFunc(uid string, module string, funcName string, funcArgs interface{}, rsp interface{}) {
log.Debugf("traceFunc uid:%s module:%s funcName:%s funcArgs:%v", uid, module, funcName, funcArgs)
}
// func TraceFunc(uid string, module string, funcName string, funcArgs interface{}, rsp interface{}) {
// log.Debugf("traceFunc uid:%s module:%s funcName:%s funcArgs:%v", uid, module, funcName, funcArgs)
// }
//打印函数处理时间
func TraceTimeCost(funcName string, invocation time.Time) {