This commit is contained in:
zhaocy 2022-06-16 15:13:08 +08:00
commit db0df37526
60 changed files with 1336 additions and 789 deletions

View File

@ -152,7 +152,7 @@ func (r *Robot) AccountRegister(account string) {
//打印响应 //打印响应
func printReply(msg *pb.UserMessage, rsp interface{}) { func printReply(msg *pb.UserMessage, rsp interface{}) {
log.Printf("rsp [%s.%s] [%d] [%v]", msg.MainType, msg.SubType, msg.Code, rsp) log.Printf("rsp [%s.%s] [%v]", msg.MainType, msg.SubType, rsp)
} }
//方法参数跟踪 //方法参数跟踪

View File

@ -73,6 +73,12 @@ const (
LogHandleType_Delete LogHandleType = "delete" LogHandleType_Delete LogHandleType = "delete"
) )
//Api Check 错误返回结构
type ErrorCode struct {
Code pb.ErrorCode
Data interface{}
}
//用户会话 //用户会话
type IUserSession interface { type IUserSession interface {
GetSessionId() string GetSessionId() string
@ -82,7 +88,7 @@ type IUserSession interface {
IsLogin() bool IsLogin() bool
Bind(uid string, wokerId string) (err error) Bind(uid string, wokerId string) (err error)
UnBind() (err error) UnBind() (err error)
SendMsg(mainType, subType string, code pb.ErrorCode, msg proto.Message) (err error) SendMsg(mainType, subType string, msg proto.Message) (err error)
Close() (err error) Close() (err error)
ToString() string ToString() string
} }

View File

@ -86,15 +86,14 @@ func (this *UserSession) UnBind() (err error) {
} }
//向用户发送消息 //向用户发送消息
func (this *UserSession) SendMsg(mainType, subType string, code pb.ErrorCode, msg proto.Message) (err error) { func (this *UserSession) SendMsg(mainType, subType string, msg proto.Message) (err error) {
reply := &pb.RPCMessageReply{} reply := &pb.RPCMessageReply{}
data, _ := ptypes.MarshalAny(msg) data, _ := ptypes.MarshalAny(msg)
log.Debugf("SendMsg to SessionId:[%s] UserId:[%s] Code:%d Data: %v", this.UserId, code, msg) log.Debugf("SendMsg to SessionId:[%s] UserId:[%s] Data: %v", this.UserId, msg)
if err := this.service.RpcCall(context.Background(), fmt.Sprintf("%s/%s", Service_Gateway, this.GatewayServiceId), string(Rpc_GatewayAgentSendMsg), &pb.AgentSendMessageReq{ if err := this.service.RpcCall(context.Background(), fmt.Sprintf("%s/%s", Service_Gateway, this.GatewayServiceId), string(Rpc_GatewayAgentSendMsg), &pb.AgentSendMessageReq{
UserSessionId: this.SessionId, UserSessionId: this.SessionId,
MainType: mainType, MainType: mainType,
SubType: subType, SubType: subType,
Code: code,
Data: data, Data: data,
}, reply); err != nil { }, reply); err != nil {
log.Errorf("SendMsg:%s UserSession:%s UserId:%s err:%v", mainType, this.SessionId, this.UserId, err) log.Errorf("SendMsg:%s UserSession:%s UserId:%s err:%v", mainType, this.SessionId, this.UserId, err)

View File

@ -13,7 +13,7 @@ import (
"strings" "strings"
"time" "time"
"go_dreamfactory/lego/utils/convert" "go_dreamfactory/lego/utils/codec"
) )
var ( var (
@ -236,9 +236,9 @@ func setWithProperType(val string, value reflect.Value, field reflect.StructFiel
case time.Time: case time.Time:
return setTimeField(val, field, value) return setTimeField(val, field, value)
} }
return json.Unmarshal(convert.StringToBytes(val), value.Addr().Interface()) return json.Unmarshal(codec.StringToBytes(val), value.Addr().Interface())
case reflect.Map: case reflect.Map:
return json.Unmarshal(convert.StringToBytes(val), value.Addr().Interface()) return json.Unmarshal(codec.StringToBytes(val), value.Addr().Interface())
default: default:
return errUnknownType return errUnknownType
} }

View File

@ -9,7 +9,7 @@ import (
"sync" "sync"
"go_dreamfactory/lego/sys/gin/render" "go_dreamfactory/lego/sys/gin/render"
"go_dreamfactory/lego/utils/convert" "go_dreamfactory/lego/utils/codec"
"golang.org/x/net/http2" "golang.org/x/net/http2"
"golang.org/x/net/http2/h2c" "golang.org/x/net/http2/h2c"
@ -418,7 +418,7 @@ func (this *Engine) redirectFixedPath(c *Context, root *node, trailingSlash bool
rPath := req.URL.Path rPath := req.URL.Path
if fixedPath, ok := root.findCaseInsensitivePath(cleanPath(rPath), trailingSlash); ok { if fixedPath, ok := root.findCaseInsensitivePath(cleanPath(rPath), trailingSlash); ok {
req.URL.Path = convert.BytesToString(fixedPath) req.URL.Path = codec.BytesToString(fixedPath)
this.redirectRequest(c) this.redirectRequest(c)
return true return true
} }

View File

@ -7,7 +7,7 @@ import (
"unicode" "unicode"
"unicode/utf8" "unicode/utf8"
"go_dreamfactory/lego/utils/convert" "go_dreamfactory/lego/utils/codec"
) )
var ( var (
@ -107,7 +107,7 @@ walk:
n.children = []*node{&child} n.children = []*node{&child}
// []byte for proper unicode char conversion, see #65 // []byte for proper unicode char conversion, see #65
n.indices = convert.BytesToString([]byte{n.path[i]}) n.indices = codec.BytesToString([]byte{n.path[i]})
n.path = path[:i] n.path = path[:i]
n.handlers = nil n.handlers = nil
n.wildChild = false n.wildChild = false
@ -140,7 +140,7 @@ walk:
// Otherwise insert it // Otherwise insert it
if c != ':' && c != '*' && n.nType != catchAll { if c != ':' && c != '*' && n.nType != catchAll {
// []byte for proper unicode char conversion, see #65 // []byte for proper unicode char conversion, see #65
n.indices += convert.BytesToString([]byte{c}) n.indices += codec.BytesToString([]byte{c})
child := &node{ child := &node{
fullPath: fullPath, fullPath: fullPath,
} }
@ -820,14 +820,14 @@ func findWildcard(path string) (wildcard string, i int, valid bool) {
func countParams(path string) uint16 { func countParams(path string) uint16 {
var n uint16 var n uint16
s := convert.StringToBytes(path) s := codec.StringToBytes(path)
n += uint16(bytes.Count(s, strColon)) n += uint16(bytes.Count(s, strColon))
n += uint16(bytes.Count(s, strStar)) n += uint16(bytes.Count(s, strStar))
return n return n
} }
func countSections(path string) uint16 { func countSections(path string) uint16 {
s := convert.StringToBytes(path) s := codec.StringToBytes(path)
return uint16(bytes.Count(s, strSlash)) return uint16(bytes.Count(s, strSlash))
} }
func min(a, b int) int { func min(a, b int) int {

View File

@ -7,7 +7,7 @@ import (
"html/template" "html/template"
"net/http" "net/http"
"go_dreamfactory/lego/utils/convert" "go_dreamfactory/lego/utils/codec"
) )
// JSON contains the given interface object. // JSON contains the given interface object.
@ -96,9 +96,9 @@ func (r SecureJSON) Render(w http.ResponseWriter) error {
return err return err
} }
// if the jsonBytes is array values // if the jsonBytes is array values
if bytes.HasPrefix(jsonBytes, convert.StringToBytes("[")) && bytes.HasSuffix(jsonBytes, if bytes.HasPrefix(jsonBytes, codec.StringToBytes("[")) && bytes.HasSuffix(jsonBytes,
convert.StringToBytes("]")) { codec.StringToBytes("]")) {
if _, err = w.Write(convert.StringToBytes(r.Prefix)); err != nil { if _, err = w.Write(codec.StringToBytes(r.Prefix)); err != nil {
return err return err
} }
} }
@ -125,11 +125,11 @@ func (r JsonpJSON) Render(w http.ResponseWriter) (err error) {
} }
callback := template.JSEscapeString(r.Callback) callback := template.JSEscapeString(r.Callback)
if _, err = w.Write(convert.StringToBytes(callback)); err != nil { if _, err = w.Write(codec.StringToBytes(callback)); err != nil {
return err return err
} }
if _, err = w.Write(convert.StringToBytes("(")); err != nil { if _, err = w.Write(codec.StringToBytes("(")); err != nil {
return err return err
} }
@ -137,7 +137,7 @@ func (r JsonpJSON) Render(w http.ResponseWriter) (err error) {
return err return err
} }
if _, err = w.Write(convert.StringToBytes(");")); err != nil { if _, err = w.Write(codec.StringToBytes(");")); err != nil {
return err return err
} }
@ -158,7 +158,7 @@ func (r AsciiJSON) Render(w http.ResponseWriter) (err error) {
} }
var buffer bytes.Buffer var buffer bytes.Buffer
for _, r := range convert.BytesToString(ret) { for _, r := range codec.BytesToString(ret) {
cvt := string(r) cvt := string(r)
if r >= 128 { if r >= 128 {
cvt = fmt.Sprintf("\\u%04x", int64(r)) cvt = fmt.Sprintf("\\u%04x", int64(r))

View File

@ -4,7 +4,7 @@ import (
"fmt" "fmt"
"net/http" "net/http"
"go_dreamfactory/lego/utils/convert" "go_dreamfactory/lego/utils/codec"
) )
// String contains the given interface object slice and its format. // String contains the given interface object slice and its format.
@ -32,6 +32,6 @@ func WriteString(w http.ResponseWriter, format string, data []interface{}) (err
_, err = fmt.Fprintf(w, format, data...) _, err = fmt.Fprintf(w, format, data...)
return return
} }
_, err = w.Write(convert.StringToBytes(format)) _, err = w.Write(codec.StringToBytes(format))
return return
} }

View File

@ -2,14 +2,15 @@ package cluster
import ( import (
"context" "context"
"go_dreamfactory/lego/utils/codec"
"time" "time"
"github.com/go-redis/redis/v8" "github.com/go-redis/redis/v8"
) )
func NewSys(RedisUrl []string, RedisPassword string, timeOut time.Duration, func NewSys(RedisUrl []string, RedisPassword string, timeOut time.Duration,
encode func(value interface{}) (result []byte, err error), encode codec.IEncoder,
decode func(value []byte, result interface{}) (err error), decode codec.IDecoder,
) (sys *Redis, err error) { ) (sys *Redis, err error) {
var ( var (
client *redis.ClusterClient client *redis.ClusterClient
@ -21,8 +22,8 @@ func NewSys(RedisUrl []string, RedisPassword string, timeOut time.Duration,
sys = &Redis{ sys = &Redis{
client: client, client: client,
timeOut: timeOut, timeOut: timeOut,
Encode: encode, encode: encode,
Decode: decode, decode: decode,
} }
_, err = sys.Ping() _, err = sys.Ping()
return return
@ -31,8 +32,8 @@ func NewSys(RedisUrl []string, RedisPassword string, timeOut time.Duration,
type Redis struct { type Redis struct {
client *redis.ClusterClient client *redis.ClusterClient
timeOut time.Duration timeOut time.Duration
Encode func(value interface{}) (result []byte, err error) encode codec.IEncoder
Decode func(value []byte, result interface{}) (err error) decode codec.IDecoder
} }
func (this *Redis) getContext() (ctx context.Context) { func (this *Redis) getContext() (ctx context.Context) {

View File

@ -28,13 +28,34 @@ func (this *Redis) HExists(key string, field string) (result bool, err error) {
return return
} }
/*
Redis Hmset 命令用于同时将多个 field-value (字段-)对设置到哈希表中
此命令会覆盖哈希表中已存在的字段
如果哈希表不存在会创建一个空哈希表并执行 HMSET 操作
*/
func (this *Redis) HMSet(key string, v interface{}) (err error) {
agrs := make([]interface{}, 0)
agrs = append(agrs, "HMSET")
agrs = append(agrs, key)
var data map[string][]byte
if data, err = this.encode.EncoderToMap(v); err != nil {
return
}
for k, v := range data {
result, _ := this.encode.Encoder(v)
agrs = append(agrs, k, result)
}
err = this.client.Do(this.getContext(), agrs...).Err()
return
}
/* /*
Redis Hget 命令用于返回哈希表中指定字段的值 Redis Hget 命令用于返回哈希表中指定字段的值
*/ */
func (this *Redis) HGet(key string, field string, value interface{}) (err error) { func (this *Redis) HGet(key string, field string, value interface{}) (err error) {
var resultvalue string var resultvalue string
if resultvalue = this.client.Do(this.getContext(), "HSET", key, field).String(); resultvalue != string(redis.Nil) { if resultvalue = this.client.Do(this.getContext(), "HSET", key, field).String(); resultvalue != string(redis.Nil) {
err = this.Decode([]byte(resultvalue), value) err = this.decode.Decoder([]byte(resultvalue), value)
} }
return return
} }
@ -43,18 +64,12 @@ func (this *Redis) HGet(key string, field string, value interface{}) (err error)
Redis Hgetall 命令用于返回哈希表中所有的字段和值 Redis Hgetall 命令用于返回哈希表中所有的字段和值
在返回值里紧跟每个字段名(field name)之后是字段的值(value)所以返回值的长度是哈希表大小的两倍 在返回值里紧跟每个字段名(field name)之后是字段的值(value)所以返回值的长度是哈希表大小的两倍
*/ */
func (this *Redis) HGetAll(key string, valuetype reflect.Type) (result []interface{}, err error) { func (this *Redis) HGetAll(key string, v interface{}) (err error) {
cmd := redis.NewStringSliceCmd(this.getContext(), "HGETALL", key) cmd := redis.NewStringStringMapCmd(this.getContext(), "HGETALL", key)
this.client.Process(this.getContext(), cmd) this.client.Process(this.getContext(), cmd)
var _result []string var _result map[string]string
if _result, err = cmd.Result(); err == nil { if _result, err = cmd.Result(); err == nil {
result = make([]interface{}, len(_result)) err = this.decode.DecoderMap(_result, v)
for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil {
result[i] = temp
}
}
} }
return return
} }
@ -117,7 +132,7 @@ func (this *Redis) HMGet(key string, valuetype reflect.Type, fields ...string) (
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -125,23 +140,6 @@ func (this *Redis) HMGet(key string, valuetype reflect.Type, fields ...string) (
return return
} }
/*
Redis Hmset 命令用于同时将多个 field-value (字段-)对设置到哈希表中
此命令会覆盖哈希表中已存在的字段
如果哈希表不存在会创建一个空哈希表并执行 HMSET 操作
*/
func (this *Redis) HMSet(key string, value map[string]interface{}) (err error) {
agrs := make([]interface{}, 0)
agrs = append(agrs, "HMSET")
agrs = append(agrs, key)
for k, v := range value {
result, _ := this.Encode(v)
agrs = append(agrs, k, result)
}
err = this.client.Do(this.getContext(), agrs...).Err()
return
}
/* /*
Redis Hset 命令用于为哈希表中的字段赋值 Redis Hset 命令用于为哈希表中的字段赋值
如果哈希表不存在一个新的哈希表被创建并进行 HSET 操作 如果哈希表不存在一个新的哈希表被创建并进行 HSET 操作
@ -149,7 +147,7 @@ Redis Hset 命令用于为哈希表中的字段赋值
*/ */
func (this *Redis) HSet(key string, field string, value interface{}) (err error) { func (this *Redis) HSet(key string, field string, value interface{}) (err error) {
var resultvalue []byte var resultvalue []byte
if resultvalue, err = this.Encode(value); err == nil { if resultvalue, err = this.encode.Encoder(value); err == nil {
err = this.client.Do(this.getContext(), "HSET", key, field, resultvalue).Err() err = this.client.Do(this.getContext(), "HSET", key, field, resultvalue).Err()
} }
return return
@ -163,7 +161,7 @@ Redis Hsetnx 命令用于为哈希表中不存在的的字段赋值
*/ */
func (this *Redis) HSetNX(key string, field string, value interface{}) (err error) { func (this *Redis) HSetNX(key string, field string, value interface{}) (err error) {
var resultvalue []byte var resultvalue []byte
if resultvalue, err = this.Encode(value); err == nil { if resultvalue, err = this.encode.Encoder(value); err == nil {
err = this.client.Do(this.getContext(), "HSETNX", key, field, resultvalue).Err() err = this.client.Do(this.getContext(), "HSETNX", key, field, resultvalue).Err()
} }
return return

View File

@ -13,7 +13,7 @@ Redis Lindex 命令用于通过索引获取列表中的元素。你也可以使
func (this *Redis) Lindex(key string, value interface{}) (err error) { func (this *Redis) Lindex(key string, value interface{}) (err error) {
var data string var data string
if data = this.client.Do(this.getContext(), "LINDEX", key).String(); data != string(redis.Nil) { if data = this.client.Do(this.getContext(), "LINDEX", key).String(); data != string(redis.Nil) {
err = this.Decode([]byte(data), value) err = this.decode.Decoder([]byte(data), value)
} else { } else {
err = fmt.Errorf(string(redis.Nil)) err = fmt.Errorf(string(redis.Nil))
} }
@ -30,8 +30,8 @@ func (this *Redis) Linsert(key string, isbefore bool, tager interface{}, value i
tagervalue []byte tagervalue []byte
resultvalue []byte resultvalue []byte
) )
if tagervalue, err = this.Encode(tager); err == nil { if tagervalue, err = this.encode.Encoder(tager); err == nil {
if resultvalue, err = this.Encode(value); err == nil { if resultvalue, err = this.encode.Encoder(value); err == nil {
if isbefore { if isbefore {
err = this.client.Do(this.getContext(), "LINSERT", key, "BEFORE", tagervalue, resultvalue).Err() err = this.client.Do(this.getContext(), "LINSERT", key, "BEFORE", tagervalue, resultvalue).Err()
} else { } else {
@ -56,7 +56,7 @@ Redis Lpop 命令用于移除并返回列表的第一个元素
func (this *Redis) LPop(key string, value interface{}) (err error) { func (this *Redis) LPop(key string, value interface{}) (err error) {
var data string var data string
if data = this.client.Do(this.getContext(), "LPOP", key).String(); data != string(redis.Nil) { if data = this.client.Do(this.getContext(), "LPOP", key).String(); data != string(redis.Nil) {
err = this.Decode([]byte(data), value) err = this.decode.Decoder([]byte(data), value)
} else { } else {
err = fmt.Errorf(string(redis.Nil)) err = fmt.Errorf(string(redis.Nil))
} }
@ -70,7 +70,7 @@ func (this *Redis) LPush(key string, values ...interface{}) (err error) {
agrs := make([]interface{}, 0) agrs := make([]interface{}, 0)
agrs = append(agrs, "LPUSH") agrs = append(agrs, "LPUSH")
for _, v := range values { for _, v := range values {
result, _ := this.Encode(v) result, _ := this.encode.Encoder(v)
agrs = append(agrs, result) agrs = append(agrs, result)
} }
err = this.client.Do(this.getContext(), agrs...).Err() err = this.client.Do(this.getContext(), agrs...).Err()
@ -84,7 +84,7 @@ func (this *Redis) LPushX(key string, values ...interface{}) (err error) {
agrs := make([]interface{}, 0) agrs := make([]interface{}, 0)
agrs = append(agrs, "LPUSHX") agrs = append(agrs, "LPUSHX")
for _, v := range values { for _, v := range values {
result, _ := this.Encode(v) result, _ := this.encode.Encoder(v)
agrs = append(agrs, result) agrs = append(agrs, result)
} }
err = this.client.Do(this.getContext(), agrs...).Err() err = this.client.Do(this.getContext(), agrs...).Err()
@ -103,7 +103,7 @@ func (this *Redis) LRange(key string, start, end int, valuetype reflect.Type) (r
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -120,7 +120,7 @@ count = 0 : 移除表中所有与 VALUE 相等的值
*/ */
func (this *Redis) LRem(key string, count int, target interface{}) (err error) { func (this *Redis) LRem(key string, count int, target interface{}) (err error) {
var resultvalue []byte var resultvalue []byte
if resultvalue, err = this.Encode(target); err == nil { if resultvalue, err = this.encode.Encoder(target); err == nil {
err = this.client.Do(this.getContext(), "LREM", key, count, resultvalue).Err() err = this.client.Do(this.getContext(), "LREM", key, count, resultvalue).Err()
} }
return return
@ -132,7 +132,7 @@ Redis Lset 通过索引来设置元素的值。
*/ */
func (this *Redis) LSet(key string, index int, value interface{}) (err error) { func (this *Redis) LSet(key string, index int, value interface{}) (err error) {
var resultvalue []byte var resultvalue []byte
if resultvalue, err = this.Encode(value); err == nil { if resultvalue, err = this.encode.Encoder(value); err == nil {
err = this.client.Do(this.getContext(), "LSET", key, index, resultvalue).Err() err = this.client.Do(this.getContext(), "LSET", key, index, resultvalue).Err()
} }
return return
@ -154,7 +154,7 @@ Redis Rpop 命令用于移除列表的最后一个元素,返回值为移除的
func (this *Redis) Rpop(key string, value interface{}) (err error) { func (this *Redis) Rpop(key string, value interface{}) (err error) {
var data string var data string
if data = this.client.Do(this.getContext(), "RPOP", key).String(); data != string(redis.Nil) { if data = this.client.Do(this.getContext(), "RPOP", key).String(); data != string(redis.Nil) {
err = this.Decode([]byte(data), value) err = this.decode.Decoder([]byte(data), value)
} else { } else {
err = fmt.Errorf(string(redis.Nil)) err = fmt.Errorf(string(redis.Nil))
} }
@ -167,7 +167,7 @@ Redis Rpoplpush 命令用于移除列表的最后一个元素,并将该元素
func (this *Redis) RPopLPush(oldkey string, newkey string, value interface{}) (err error) { func (this *Redis) RPopLPush(oldkey string, newkey string, value interface{}) (err error) {
var data string var data string
if data = this.client.Do(this.getContext(), "RPOPLPUSH", oldkey, newkey).String(); data != string(redis.Nil) { if data = this.client.Do(this.getContext(), "RPOPLPUSH", oldkey, newkey).String(); data != string(redis.Nil) {
err = this.Decode([]byte(data), value) err = this.decode.Decoder([]byte(data), value)
} else { } else {
err = fmt.Errorf(string(redis.Nil)) err = fmt.Errorf(string(redis.Nil))
} }
@ -183,7 +183,7 @@ func (this *Redis) RPush(key string, values ...interface{}) (err error) {
agrs := make([]interface{}, 0) agrs := make([]interface{}, 0)
agrs = append(agrs, "RPUSH") agrs = append(agrs, "RPUSH")
for _, v := range values { for _, v := range values {
result, _ := this.Encode(v) result, _ := this.encode.Encoder(v)
agrs = append(agrs, result) agrs = append(agrs, result)
} }
err = this.client.Do(this.getContext(), agrs...).Err() err = this.client.Do(this.getContext(), agrs...).Err()
@ -197,7 +197,7 @@ func (this *Redis) RPushX(key string, values ...interface{}) (err error) {
agrs := make([]interface{}, 0) agrs := make([]interface{}, 0)
agrs = append(agrs, "RPUSHX") agrs = append(agrs, "RPUSHX")
for _, v := range values { for _, v := range values {
result, _ := this.Encode(v) result, _ := this.encode.Encoder(v)
agrs = append(agrs, result) agrs = append(agrs, result)
} }
err = this.client.Do(this.getContext(), agrs...).Err() err = this.client.Do(this.getContext(), agrs...).Err()

View File

@ -12,7 +12,7 @@ func (this *Redis) SAdd(key string, values ...interface{}) (err error) {
agrs = append(agrs, "SADD") agrs = append(agrs, "SADD")
agrs = append(agrs, key) agrs = append(agrs, key)
for _, v := range values { for _, v := range values {
result, _ := this.Encode(v) result, _ := this.encode.Encoder(v)
agrs = append(agrs, result) agrs = append(agrs, result)
} }
err = this.client.Do(this.getContext(), agrs...).Err() err = this.client.Do(this.getContext(), agrs...).Err()
@ -39,7 +39,7 @@ func (this *Redis) SDiff(valuetype reflect.Type, keys ...string) (result []inter
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -65,7 +65,7 @@ func (this *Redis) SInter(valuetype reflect.Type, keys ...string) (result []inte
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -99,7 +99,7 @@ func (this *Redis) SMembers(valuetype reflect.Type, key string) (result []interf
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -160,7 +160,7 @@ func (this *Redis) SUnion(valuetype reflect.Type, keys ...string) (result []inte
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }

View File

@ -13,7 +13,7 @@ import (
*/ */
func (this *Redis) Set(key string, value interface{}, expiration time.Duration) (err error) { func (this *Redis) Set(key string, value interface{}, expiration time.Duration) (err error) {
var result []byte var result []byte
if result, err = this.Encode(value); err == nil { if result, err = this.encode.Encoder(value); err == nil {
err = this.client.Set(this.getContext(), string(key), result, expiration).Err() err = this.client.Set(this.getContext(), string(key), result, expiration).Err()
} }
return return
@ -40,7 +40,7 @@ func (this *Redis) MSet(keyvalues map[string]interface{}) (err error) {
agrs := make([]interface{}, 0) agrs := make([]interface{}, 0)
agrs = append(agrs, "MSET") agrs = append(agrs, "MSET")
for k, v := range keyvalues { for k, v := range keyvalues {
result, _ := this.Encode(v) result, _ := this.encode.Encoder(v)
agrs = append(agrs, k, result) agrs = append(agrs, k, result)
} }
err = this.client.Do(this.getContext(), agrs...).Err() err = this.client.Do(this.getContext(), agrs...).Err()
@ -54,7 +54,7 @@ func (this *Redis) MSetNX(keyvalues map[string]interface{}) (err error) {
agrs := make([]interface{}, 0) agrs := make([]interface{}, 0)
agrs = append(agrs, "MSETNX") agrs = append(agrs, "MSETNX")
for k, v := range keyvalues { for k, v := range keyvalues {
result, _ := this.Encode(v) result, _ := this.encode.Encoder(v)
agrs = append(agrs, k, result) agrs = append(agrs, k, result)
} }
err = this.client.Do(this.getContext(), agrs...).Err() err = this.client.Do(this.getContext(), agrs...).Err()
@ -121,7 +121,7 @@ Redis Append 命令用于为指定的 key 追加值。
*/ */
func (this *Redis) Append(key string, value interface{}) (err error) { func (this *Redis) Append(key string, value interface{}) (err error) {
var result []byte var result []byte
if result, err = this.Encode(value); err == nil { if result, err = this.encode.Encoder(value); err == nil {
err = this.client.Do(this.getContext(), "APPEND", key, result).Err() err = this.client.Do(this.getContext(), "APPEND", key, result).Err()
} }
return return
@ -133,7 +133,7 @@ func (this *Redis) Append(key string, value interface{}) (err error) {
func (this *Redis) Get(key string, value interface{}) (err error) { func (this *Redis) Get(key string, value interface{}) (err error) {
var result []byte var result []byte
if result, err = this.client.Get(this.getContext(), key).Bytes(); err == nil { if result, err = this.client.Get(this.getContext(), key).Bytes(); err == nil {
err = this.Decode(result, value) err = this.decode.Decoder(result, value)
} }
return return
} }
@ -146,9 +146,9 @@ func (this *Redis) GetSet(key string, value interface{}, result interface{}) (er
data string data string
_value []byte _value []byte
) )
if _value, err = this.Encode(value); err == nil { if _value, err = this.encode.Encoder(value); err == nil {
if data = this.client.Do(this.getContext(), "GETSET", key, _value).String(); data != string(redis.Nil) { if data = this.client.Do(this.getContext(), "GETSET", key, _value).String(); data != string(redis.Nil) {
err = this.Decode([]byte(data), result) err = this.decode.Decoder([]byte(data), result)
} else { } else {
err = fmt.Errorf(string(redis.Nil)) err = fmt.Errorf(string(redis.Nil))
} }

View File

@ -64,7 +64,7 @@ func (this *Redis) ZRange(valuetype reflect.Type, key string, start int64, stop
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -82,7 +82,7 @@ func (this *Redis) ZRangeByLex(valuetype reflect.Type, key string, opt *redis.ZR
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -100,7 +100,7 @@ func (this *Redis) ZRangeByScore(valuetype reflect.Type, key string, opt *redis.
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -158,7 +158,7 @@ func (this *Redis) ZRevRange(valuetype reflect.Type, key string, start int64, st
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -176,7 +176,7 @@ func (this *Redis) ZRevRangeByScore(valuetype reflect.Type, key string, opt *red
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }

View File

@ -65,13 +65,13 @@ type (
HDel(key string, fields ...string) (err error) HDel(key string, fields ...string) (err error)
HExists(key string, field string) (result bool, err error) HExists(key string, field string) (result bool, err error)
HGet(key string, field string, value interface{}) (err error) HGet(key string, field string, value interface{}) (err error)
HGetAll(key string, valuetype reflect.Type) (result []interface{}, err error) HGetAll(key string, v interface{}) (err error)
HIncrBy(key string, field string, value int) (err error) HIncrBy(key string, field string, value int) (err error)
HIncrByFloat(key string, field string, value float32) (err error) HIncrByFloat(key string, field string, value float32) (err error)
Hkeys(key string) (result []string, err error) Hkeys(key string) (result []string, err error)
Hlen(key string) (result int, err error) Hlen(key string) (result int, err error)
HMGet(key string, valuetype reflect.Type, fields ...string) (result []interface{}, err error) HMGet(key string, valuetype reflect.Type, fields ...string) (result []interface{}, err error)
HMSet(key string, value map[string]interface{}) (err error) HMSet(key string, v interface{}) (err error)
HSet(key string, field string, value interface{}) (err error) HSet(key string, field string, value interface{}) (err error)
HSetNX(key string, field string, value interface{}) (err error) HSetNX(key string, field string, value interface{}) (err error)
/*Set*/ /*Set*/
@ -115,8 +115,6 @@ type (
ISys interface { ISys interface {
IRedis IRedis
Encode(value interface{}) (result []byte, err error)
Decode(value []byte, result interface{}) (err error)
/*Lock*/ /*Lock*/
NewRedisMutex(key string, opt ...RMutexOption) (result *RedisMutex, err error) NewRedisMutex(key string, opt ...RMutexOption) (result *RedisMutex, err error)
} }
@ -155,19 +153,11 @@ func TxPipelined(ctx context.Context, fn func(pipe redis.Pipeliner) error) (err
func Watch(ctx context.Context, fn func(*redis.Tx) error, keys ...string) (err error) { func Watch(ctx context.Context, fn func(*redis.Tx) error, keys ...string) (err error) {
return defsys.Watch(ctx, fn) return defsys.Watch(ctx, fn)
} }
func Encode(value interface{}) (result []byte, err error) {
return defsys.Encode(value)
}
func Decode(value []byte, result interface{}) (err error) {
return defsys.Decode(value, result)
}
func Delete(key string) (err error) { func Delete(key string) (err error) {
return defsys.Delete(key) return defsys.Delete(key)
} }
func ExistsKey(key string) (iskeep bool, err error) { func ExistsKey(key string) (iskeep bool, err error) {
return defsys.ExistsKey(key) return defsys.ExistsKey(key)
} }
func ExpireKey(key string, expire int) (err error) { func ExpireKey(key string, expire int) (err error) {
return defsys.ExpireKey(key, expire) return defsys.ExpireKey(key, expire)
@ -315,8 +305,8 @@ func HExists(key string, field string) (result bool, err error) {
func HGet(key string, field string, value interface{}) (err error) { func HGet(key string, field string, value interface{}) (err error) {
return defsys.HGet(key, field, value) return defsys.HGet(key, field, value)
} }
func HGetAll(key string, valuetype reflect.Type) (result []interface{}, err error) { func HGetAll(key string, v interface{}) (err error) {
return defsys.HGetAll(key, valuetype) return defsys.HGetAll(key, v)
} }
func HIncrBy(key string, field string, value int) (err error) { func HIncrBy(key string, field string, value int) (err error) {
return defsys.HIncrBy(key, field, value) return defsys.HIncrBy(key, field, value)
@ -333,8 +323,8 @@ func Hlen(key string) (result int, err error) {
func HMGet(key string, valuetype reflect.Type, fields ...string) (result []interface{}, err error) { func HMGet(key string, valuetype reflect.Type, fields ...string) (result []interface{}, err error) {
return defsys.HMGet(key, valuetype, fields...) return defsys.HMGet(key, valuetype, fields...)
} }
func HMSet(key string, value map[string]interface{}) (err error) { func HMSet(key string, v interface{}) (err error) {
return defsys.HMSet(key, value) return defsys.HMSet(key, v)
} }
func HSet(key string, field string, value interface{}) (err error) { func HSet(key string, field string, value interface{}) (err error) {
return defsys.HSet(key, field, value) return defsys.HSet(key, field, value)

View File

@ -10,6 +10,7 @@ import (
"go_dreamfactory/lego/sys/redis/cluster" "go_dreamfactory/lego/sys/redis/cluster"
"go_dreamfactory/lego/sys/redis/single" "go_dreamfactory/lego/sys/redis/single"
"go_dreamfactory/lego/utils/codec"
"github.com/go-redis/redis/v8" "github.com/go-redis/redis/v8"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
@ -17,6 +18,13 @@ import (
func newSys(options Options) (sys *Redis, err error) { func newSys(options Options) (sys *Redis, err error) {
sys = &Redis{options: options} sys = &Redis{options: options}
if options.RedisStorageType == JsonData {
sys.decoder = &codec.Decoder{DefDecoder: jsoniter.Unmarshal}
sys.encoder = &codec.Encoder{DefEncoder: jsoniter.Marshal}
} else {
sys.decoder = &codec.Decoder{DefDecoder: func(buf []byte, v interface{}) error { return proto.Unmarshal(buf, v.(proto.Message)) }}
sys.encoder = &codec.Encoder{DefEncoder: func(v interface{}) (data []byte, err error) { return proto.Marshal(v.(proto.Message)) }}
}
err = sys.init() err = sys.init()
return return
} }
@ -24,6 +32,8 @@ func newSys(options Options) (sys *Redis, err error) {
type Redis struct { type Redis struct {
options Options options Options
client IRedis client IRedis
decoder codec.IDecoder
encoder codec.IEncoder
} }
func (this *Redis) init() (err error) { func (this *Redis) init() (err error) {
@ -34,16 +44,16 @@ func (this *Redis) init() (err error) {
this.options.Redis_Single_DB, this.options.Redis_Single_DB,
this.options.Redis_Single_PoolSize, this.options.Redis_Single_PoolSize,
this.options.TimeOut, this.options.TimeOut,
this.Encode, this.encoder,
this.Decode, this.decoder,
) )
} else if this.options.RedisType == Redis_Cluster { } else if this.options.RedisType == Redis_Cluster {
this.client, err = cluster.NewSys( this.client, err = cluster.NewSys(
this.options.Redis_Cluster_Addr, this.options.Redis_Cluster_Addr,
this.options.Redis_Cluster_Password, this.options.Redis_Cluster_Password,
this.options.TimeOut, this.options.TimeOut,
this.Encode, this.encoder,
this.Decode, this.decoder,
) )
} else { } else {
err = fmt.Errorf("init Redis err:RedisType - %d", this.options.RedisType) err = fmt.Errorf("init Redis err:RedisType - %d", this.options.RedisType)
@ -73,33 +83,6 @@ func (this *Redis) UnLock(key string) (err error) {
return this.client.UnLock(key) return this.client.UnLock(key)
} }
///数据编码
func (this *Redis) Encode(value interface{}) (result []byte, err error) {
if this.options.RedisStorageType == JsonData {
result, err = jsoniter.Marshal(value)
} else {
if _, ok := value.(proto.Message); ok {
result, err = proto.Marshal(value.(proto.Message))
} else {
result, err = jsoniter.Marshal(value)
}
}
return
}
func (this *Redis) Decode(value []byte, result interface{}) (err error) {
if this.options.RedisStorageType == JsonData {
err = jsoniter.Unmarshal(value, result)
} else {
if _, ok := result.(proto.Message); ok {
err = proto.Unmarshal(value, result.(proto.Message))
} else {
err = jsoniter.Unmarshal(value, result)
}
}
return
}
func (this *Redis) Delete(key string) (err error) { func (this *Redis) Delete(key string) (err error) {
return this.client.Delete(key) return this.client.Delete(key)
} }
@ -242,8 +225,8 @@ func (this *Redis) HExists(key string, field string) (result bool, err error) {
func (this *Redis) HGet(key string, field string, value interface{}) (err error) { func (this *Redis) HGet(key string, field string, value interface{}) (err error) {
return this.client.HGet(key, field, value) return this.client.HGet(key, field, value)
} }
func (this *Redis) HGetAll(key string, valuetype reflect.Type) (result []interface{}, err error) { func (this *Redis) HGetAll(key string, v interface{}) (err error) {
return this.client.HGetAll(key, valuetype) return this.client.HGetAll(key, v)
} }
func (this *Redis) HIncrBy(key string, field string, value int) (err error) { func (this *Redis) HIncrBy(key string, field string, value int) (err error) {
return this.client.HIncrBy(key, field, value) return this.client.HIncrBy(key, field, value)
@ -260,8 +243,8 @@ func (this *Redis) Hlen(key string) (result int, err error) {
func (this *Redis) HMGet(key string, valuetype reflect.Type, fields ...string) (result []interface{}, err error) { func (this *Redis) HMGet(key string, valuetype reflect.Type, fields ...string) (result []interface{}, err error) {
return this.client.HMGet(key, valuetype, fields...) return this.client.HMGet(key, valuetype, fields...)
} }
func (this *Redis) HMSet(key string, value map[string]interface{}) (err error) { func (this *Redis) HMSet(key string, v interface{}) (err error) {
return this.client.HMSet(key, value) return this.client.HMSet(key, v)
} }
func (this *Redis) HSet(key string, field string, value interface{}) (err error) { func (this *Redis) HSet(key string, field string, value interface{}) (err error) {
return this.client.HSet(key, field, value) return this.client.HSet(key, field, value)

View File

@ -2,14 +2,15 @@ package single
import ( import (
"context" "context"
"go_dreamfactory/lego/utils/codec"
"time" "time"
"github.com/go-redis/redis/v8" "github.com/go-redis/redis/v8"
) )
func NewSys(RedisUrl, RedisPassword string, RedisDB, PoolSize int, timeOut time.Duration, func NewSys(RedisUrl, RedisPassword string, RedisDB, PoolSize int, timeOut time.Duration,
encode func(value interface{}) (result []byte, err error), encode codec.IEncoder,
decode func(value []byte, result interface{}) (err error), decode codec.IDecoder,
) (sys *Redis, err error) { ) (sys *Redis, err error) {
var ( var (
client *redis.Client client *redis.Client
@ -23,8 +24,8 @@ func NewSys(RedisUrl, RedisPassword string, RedisDB, PoolSize int, timeOut time.
sys = &Redis{ sys = &Redis{
client: client, client: client,
timeOut: timeOut, timeOut: timeOut,
Encode: encode, encode: encode,
Decode: decode, decode: decode,
} }
_, err = sys.Ping() _, err = sys.Ping()
return return
@ -33,8 +34,8 @@ func NewSys(RedisUrl, RedisPassword string, RedisDB, PoolSize int, timeOut time.
type Redis struct { type Redis struct {
client *redis.Client client *redis.Client
timeOut time.Duration timeOut time.Duration
Encode func(value interface{}) (result []byte, err error) encode codec.IEncoder
Decode func(value []byte, result interface{}) (err error) decode codec.IDecoder
} }
func (this *Redis) getContext() (ctx context.Context) { func (this *Redis) getContext() (ctx context.Context) {

View File

@ -29,13 +29,23 @@ func (this *Redis) HExists(key string, field string) (result bool, err error) {
} }
/* /*
Redis Hget 命令用于返回哈希表中指定字段的值 Redis Hmset 命令用于同时将多个 field-value (字段-)对设置到哈希表中
此命令会覆盖哈希表中已存在的字段
如果哈希表不存在会创建一个空哈希表并执行 HMSET 操作
*/ */
func (this *Redis) HGet(key string, field string, value interface{}) (err error) { func (this *Redis) HMSet(key string, v interface{}) (err error) {
var resultvalue string agrs := make([]interface{}, 0)
if resultvalue = this.client.Do(this.getContext(), "HSET", key, field).String(); resultvalue != string(redis.Nil) { agrs = append(agrs, "HMSET")
err = this.Decode([]byte(resultvalue), value) agrs = append(agrs, key)
var data map[string][]byte
if data, err = this.encode.EncoderToMap(v); err != nil {
return
} }
for k, v := range data {
result, _ := this.encode.Encoder(v)
agrs = append(agrs, k, result)
}
err = this.client.Do(this.getContext(), agrs...).Err()
return return
} }
@ -43,18 +53,36 @@ func (this *Redis) HGet(key string, field string, value interface{}) (err error)
Redis Hgetall 命令用于返回哈希表中所有的字段和值 Redis Hgetall 命令用于返回哈希表中所有的字段和值
在返回值里紧跟每个字段名(field name)之后是字段的值(value)所以返回值的长度是哈希表大小的两倍 在返回值里紧跟每个字段名(field name)之后是字段的值(value)所以返回值的长度是哈希表大小的两倍
*/ */
func (this *Redis) HGetAll(key string, valuetype reflect.Type) (result []interface{}, err error) { func (this *Redis) HGetAll(key string, v interface{}) (err error) {
cmd := redis.NewStringSliceCmd(this.getContext(), "HGETALL", key) cmd := redis.NewStringStringMapCmd(this.getContext(), "HGETALL", key)
this.client.Process(this.getContext(), cmd) this.client.Process(this.getContext(), cmd)
var _result []string var _result map[string]string
if _result, err = cmd.Result(); err == nil { if _result, err = cmd.Result(); err == nil {
result = make([]interface{}, len(_result)) err = this.decode.DecoderMap(_result, v)
for i, v := range _result { }
temp := reflect.New(valuetype.Elem()).Interface() return
if err = this.Decode([]byte(v), &temp); err == nil { }
result[i] = temp
} /*
} Redis Hset 命令用于为哈希表中的字段赋值
如果哈希表不存在一个新的哈希表被创建并进行 HSET 操作
如果字段已经存在于哈希表中旧值将被覆盖
*/
func (this *Redis) HSet(key string, field string, value interface{}) (err error) {
var resultvalue []byte
if resultvalue, err = this.encode.Encoder(value); err == nil {
err = this.client.Do(this.getContext(), "HSET", key, field, resultvalue).Err()
}
return
}
/*
Redis Hget 命令用于返回哈希表中指定字段的值
*/
func (this *Redis) HGet(key string, field string, value interface{}) (err error) {
var resultvalue string
if resultvalue = this.client.Do(this.getContext(), "HSET", key, field).String(); resultvalue != string(redis.Nil) {
err = this.decode.Decoder([]byte(resultvalue), value)
} }
return return
} }
@ -117,7 +145,7 @@ func (this *Redis) HMGet(key string, valuetype reflect.Type, fields ...string) (
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -125,36 +153,6 @@ func (this *Redis) HMGet(key string, valuetype reflect.Type, fields ...string) (
return return
} }
/*
Redis Hmset 命令用于同时将多个 field-value (字段-)对设置到哈希表中
此命令会覆盖哈希表中已存在的字段
如果哈希表不存在会创建一个空哈希表并执行 HMSET 操作
*/
func (this *Redis) HMSet(key string, value map[string]interface{}) (err error) {
agrs := make([]interface{}, 0)
agrs = append(agrs, "HMSET")
agrs = append(agrs, key)
for k, v := range value {
result, _ := this.Encode(v)
agrs = append(agrs, k, result)
}
err = this.client.Do(this.getContext(), agrs...).Err()
return
}
/*
Redis Hset 命令用于为哈希表中的字段赋值
如果哈希表不存在一个新的哈希表被创建并进行 HSET 操作
如果字段已经存在于哈希表中旧值将被覆盖
*/
func (this *Redis) HSet(key string, field string, value interface{}) (err error) {
var resultvalue []byte
if resultvalue, err = this.Encode(value); err == nil {
err = this.client.Do(this.getContext(), "HSET", key, field, resultvalue).Err()
}
return
}
/* /*
Redis Hsetnx 命令用于为哈希表中不存在的的字段赋值 Redis Hsetnx 命令用于为哈希表中不存在的的字段赋值
如果哈希表不存在一个新的哈希表被创建并进行 HSET 操作 如果哈希表不存在一个新的哈希表被创建并进行 HSET 操作
@ -163,7 +161,7 @@ Redis Hsetnx 命令用于为哈希表中不存在的的字段赋值
*/ */
func (this *Redis) HSetNX(key string, field string, value interface{}) (err error) { func (this *Redis) HSetNX(key string, field string, value interface{}) (err error) {
var resultvalue []byte var resultvalue []byte
if resultvalue, err = this.Encode(value); err == nil { if resultvalue, err = this.encode.Encoder(value); err == nil {
err = this.client.Do(this.getContext(), "HSETNX", key, field, resultvalue).Err() err = this.client.Do(this.getContext(), "HSETNX", key, field, resultvalue).Err()
} }
return return

View File

@ -13,7 +13,7 @@ Redis Lindex 命令用于通过索引获取列表中的元素。你也可以使
func (this *Redis) Lindex(key string, value interface{}) (err error) { func (this *Redis) Lindex(key string, value interface{}) (err error) {
var data string var data string
if data = this.client.Do(this.getContext(), "LINDEX", key).String(); data != string(redis.Nil) { if data = this.client.Do(this.getContext(), "LINDEX", key).String(); data != string(redis.Nil) {
err = this.Decode([]byte(data), value) err = this.decode.Decoder([]byte(data), value)
} else { } else {
err = fmt.Errorf(string(redis.Nil)) err = fmt.Errorf(string(redis.Nil))
} }
@ -30,8 +30,8 @@ func (this *Redis) Linsert(key string, isbefore bool, tager interface{}, value i
tagervalue []byte tagervalue []byte
resultvalue []byte resultvalue []byte
) )
if tagervalue, err = this.Encode(tager); err == nil { if tagervalue, err = this.encode.Encoder(tager); err == nil {
if resultvalue, err = this.Encode(value); err == nil { if resultvalue, err = this.encode.Encoder(value); err == nil {
if isbefore { if isbefore {
err = this.client.Do(this.getContext(), "LINSERT", key, "BEFORE", tagervalue, resultvalue).Err() err = this.client.Do(this.getContext(), "LINSERT", key, "BEFORE", tagervalue, resultvalue).Err()
} else { } else {
@ -56,7 +56,7 @@ Redis Lpop 命令用于移除并返回列表的第一个元素
func (this *Redis) LPop(key string, value interface{}) (err error) { func (this *Redis) LPop(key string, value interface{}) (err error) {
var data string var data string
if data = this.client.Do(this.getContext(), "LPOP", key).String(); data != string(redis.Nil) { if data = this.client.Do(this.getContext(), "LPOP", key).String(); data != string(redis.Nil) {
err = this.Decode([]byte(data), value) err = this.decode.Decoder([]byte(data), value)
} else { } else {
err = fmt.Errorf(string(redis.Nil)) err = fmt.Errorf(string(redis.Nil))
} }
@ -70,7 +70,7 @@ func (this *Redis) LPush(key string, values ...interface{}) (err error) {
agrs := make([]interface{}, 0) agrs := make([]interface{}, 0)
agrs = append(agrs, "LPUSH") agrs = append(agrs, "LPUSH")
for _, v := range values { for _, v := range values {
result, _ := this.Encode(v) result, _ := this.encode.Encoder(v)
agrs = append(agrs, result) agrs = append(agrs, result)
} }
err = this.client.Do(this.getContext(), agrs...).Err() err = this.client.Do(this.getContext(), agrs...).Err()
@ -84,7 +84,7 @@ func (this *Redis) LPushX(key string, values ...interface{}) (err error) {
agrs := make([]interface{}, 0) agrs := make([]interface{}, 0)
agrs = append(agrs, "LPUSHX") agrs = append(agrs, "LPUSHX")
for _, v := range values { for _, v := range values {
result, _ := this.Encode(v) result, _ := this.encode.Encoder(v)
agrs = append(agrs, result) agrs = append(agrs, result)
} }
err = this.client.Do(this.getContext(), agrs...).Err() err = this.client.Do(this.getContext(), agrs...).Err()
@ -103,7 +103,7 @@ func (this *Redis) LRange(key string, start, end int, valuetype reflect.Type) (r
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -120,7 +120,7 @@ count = 0 : 移除表中所有与 VALUE 相等的值
*/ */
func (this *Redis) LRem(key string, count int, target interface{}) (err error) { func (this *Redis) LRem(key string, count int, target interface{}) (err error) {
var resultvalue []byte var resultvalue []byte
if resultvalue, err = this.Encode(target); err == nil { if resultvalue, err = this.encode.Encoder(target); err == nil {
err = this.client.Do(this.getContext(), "LREM", key, count, resultvalue).Err() err = this.client.Do(this.getContext(), "LREM", key, count, resultvalue).Err()
} }
return return
@ -132,7 +132,7 @@ Redis Lset 通过索引来设置元素的值。
*/ */
func (this *Redis) LSet(key string, index int, value interface{}) (err error) { func (this *Redis) LSet(key string, index int, value interface{}) (err error) {
var resultvalue []byte var resultvalue []byte
if resultvalue, err = this.Encode(value); err == nil { if resultvalue, err = this.encode.Encoder(value); err == nil {
err = this.client.Do(this.getContext(), "LSET", key, index, resultvalue).Err() err = this.client.Do(this.getContext(), "LSET", key, index, resultvalue).Err()
} }
return return
@ -154,7 +154,7 @@ Redis Rpop 命令用于移除列表的最后一个元素,返回值为移除的
func (this *Redis) Rpop(key string, value interface{}) (err error) { func (this *Redis) Rpop(key string, value interface{}) (err error) {
var data string var data string
if data = this.client.Do(this.getContext(), "RPOP", key).String(); data != string(redis.Nil) { if data = this.client.Do(this.getContext(), "RPOP", key).String(); data != string(redis.Nil) {
err = this.Decode([]byte(data), value) err = this.decode.Decoder([]byte(data), value)
} else { } else {
err = fmt.Errorf(string(redis.Nil)) err = fmt.Errorf(string(redis.Nil))
} }
@ -167,7 +167,7 @@ Redis Rpoplpush 命令用于移除列表的最后一个元素,并将该元素
func (this *Redis) RPopLPush(oldkey string, newkey string, value interface{}) (err error) { func (this *Redis) RPopLPush(oldkey string, newkey string, value interface{}) (err error) {
var data string var data string
if data = this.client.Do(this.getContext(), "RPOPLPUSH", oldkey, newkey).String(); data != string(redis.Nil) { if data = this.client.Do(this.getContext(), "RPOPLPUSH", oldkey, newkey).String(); data != string(redis.Nil) {
err = this.Decode([]byte(data), value) err = this.decode.Decoder([]byte(data), value)
} else { } else {
err = fmt.Errorf(string(redis.Nil)) err = fmt.Errorf(string(redis.Nil))
} }
@ -183,7 +183,7 @@ func (this *Redis) RPush(key string, values ...interface{}) (err error) {
agrs := make([]interface{}, 0) agrs := make([]interface{}, 0)
agrs = append(agrs, "RPUSH") agrs = append(agrs, "RPUSH")
for _, v := range values { for _, v := range values {
result, _ := this.Encode(v) result, _ := this.encode.Encoder(v)
agrs = append(agrs, result) agrs = append(agrs, result)
} }
err = this.client.Do(this.getContext(), agrs...).Err() err = this.client.Do(this.getContext(), agrs...).Err()
@ -197,7 +197,7 @@ func (this *Redis) RPushX(key string, values ...interface{}) (err error) {
agrs := make([]interface{}, 0) agrs := make([]interface{}, 0)
agrs = append(agrs, "RPUSHX") agrs = append(agrs, "RPUSHX")
for _, v := range values { for _, v := range values {
result, _ := this.Encode(v) result, _ := this.encode.Encoder(v)
agrs = append(agrs, result) agrs = append(agrs, result)
} }
err = this.client.Do(this.getContext(), agrs...).Err() err = this.client.Do(this.getContext(), agrs...).Err()

View File

@ -12,7 +12,7 @@ func (this *Redis) SAdd(key string, values ...interface{}) (err error) {
agrs = append(agrs, "SADD") agrs = append(agrs, "SADD")
agrs = append(agrs, key) agrs = append(agrs, key)
for _, v := range values { for _, v := range values {
result, _ := this.Encode(v) result, _ := this.encode.Encoder(v)
agrs = append(agrs, result) agrs = append(agrs, result)
} }
err = this.client.Do(this.getContext(), agrs...).Err() err = this.client.Do(this.getContext(), agrs...).Err()
@ -39,7 +39,7 @@ func (this *Redis) SDiff(valuetype reflect.Type, keys ...string) (result []inter
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -65,7 +65,7 @@ func (this *Redis) SInter(valuetype reflect.Type, keys ...string) (result []inte
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -99,7 +99,7 @@ func (this *Redis) SMembers(valuetype reflect.Type, key string) (result []interf
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -160,7 +160,7 @@ func (this *Redis) SUnion(valuetype reflect.Type, keys ...string) (result []inte
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }

View File

@ -13,7 +13,7 @@ import (
*/ */
func (this *Redis) Set(key string, value interface{}, expiration time.Duration) (err error) { func (this *Redis) Set(key string, value interface{}, expiration time.Duration) (err error) {
var result []byte var result []byte
if result, err = this.Encode(value); err == nil { if result, err = this.encode.Encoder(value); err == nil {
err = this.client.Set(this.getContext(), string(key), result, expiration).Err() err = this.client.Set(this.getContext(), string(key), result, expiration).Err()
} }
return return
@ -40,7 +40,7 @@ func (this *Redis) MSet(keyvalues map[string]interface{}) (err error) {
agrs := make([]interface{}, 0) agrs := make([]interface{}, 0)
agrs = append(agrs, "MSET") agrs = append(agrs, "MSET")
for k, v := range keyvalues { for k, v := range keyvalues {
result, _ := this.Encode(v) result, _ := this.encode.Encoder(v)
agrs = append(agrs, k, result) agrs = append(agrs, k, result)
} }
err = this.client.Do(this.getContext(), agrs...).Err() err = this.client.Do(this.getContext(), agrs...).Err()
@ -54,7 +54,7 @@ func (this *Redis) MSetNX(keyvalues map[string]interface{}) (err error) {
agrs := make([]interface{}, 0) agrs := make([]interface{}, 0)
agrs = append(agrs, "MSETNX") agrs = append(agrs, "MSETNX")
for k, v := range keyvalues { for k, v := range keyvalues {
result, _ := this.Encode(v) result, _ := this.encode.Encoder(v)
agrs = append(agrs, k, result) agrs = append(agrs, k, result)
} }
err = this.client.Do(this.getContext(), agrs...).Err() err = this.client.Do(this.getContext(), agrs...).Err()
@ -121,7 +121,7 @@ Redis Append 命令用于为指定的 key 追加值。
*/ */
func (this *Redis) Append(key string, value interface{}) (err error) { func (this *Redis) Append(key string, value interface{}) (err error) {
var result []byte var result []byte
if result, err = this.Encode(value); err == nil { if result, err = this.encode.Encoder(value); err == nil {
err = this.client.Do(this.getContext(), "APPEND", key, result).Err() err = this.client.Do(this.getContext(), "APPEND", key, result).Err()
} }
return return
@ -133,7 +133,7 @@ func (this *Redis) Append(key string, value interface{}) (err error) {
func (this *Redis) Get(key string, value interface{}) (err error) { func (this *Redis) Get(key string, value interface{}) (err error) {
var result []byte var result []byte
if result, err = this.client.Get(this.getContext(), key).Bytes(); err == nil { if result, err = this.client.Get(this.getContext(), key).Bytes(); err == nil {
err = this.Decode(result, value) err = this.decode.Decoder(result, value)
} }
return return
} }
@ -146,9 +146,9 @@ func (this *Redis) GetSet(key string, value interface{}, result interface{}) (er
data string data string
_value []byte _value []byte
) )
if _value, err = this.Encode(value); err == nil { if _value, err = this.encode.Encoder(value); err == nil {
if data = this.client.Do(this.getContext(), "GETSET", key, _value).String(); data != string(redis.Nil) { if data = this.client.Do(this.getContext(), "GETSET", key, _value).String(); data != string(redis.Nil) {
err = this.Decode([]byte(data), result) err = this.decode.Decoder([]byte(data), result)
} else { } else {
err = fmt.Errorf(string(redis.Nil)) err = fmt.Errorf(string(redis.Nil))
} }

View File

@ -64,7 +64,7 @@ func (this *Redis) ZRange(valuetype reflect.Type, key string, start int64, stop
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -82,7 +82,7 @@ func (this *Redis) ZRangeByLex(valuetype reflect.Type, key string, opt *redis.ZR
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -100,7 +100,7 @@ func (this *Redis) ZRangeByScore(valuetype reflect.Type, key string, opt *redis.
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -158,7 +158,7 @@ func (this *Redis) ZRevRange(valuetype reflect.Type, key string, start int64, st
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }
@ -176,7 +176,7 @@ func (this *Redis) ZRevRangeByScore(valuetype reflect.Type, key string, opt *red
result = make([]interface{}, len(_result)) result = make([]interface{}, len(_result))
for i, v := range _result { for i, v := range _result {
temp := reflect.New(valuetype.Elem()).Interface() temp := reflect.New(valuetype.Elem()).Interface()
if err = this.Decode([]byte(v), &temp); err == nil { if err = this.decode.Decoder([]byte(v), &temp); err == nil {
result[i] = temp result[i] = temp
} }
} }

View File

@ -3,6 +3,7 @@ package redis_test
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"os"
"sync" "sync"
"testing" "testing"
"time" "time"
@ -10,6 +11,23 @@ import (
"go_dreamfactory/lego/sys/redis" "go_dreamfactory/lego/sys/redis"
) )
func TestMain(m *testing.M) {
if err := redis.OnInit(nil,
redis.SetRedisType(redis.Redis_Cluster),
redis.SetRedis_Cluster_Addr([]string{"10.0.0.9:9001", "10.0.0.9:9002", "10.0.0.9:9003", "10.0.1.45:9004", "10.0.1.45:9005", "10.0.1.45:9006"}),
redis.SetRedis_Cluster_Password(""),
redis.SetRedisStorageType(redis.JsonData),
); err != nil {
fmt.Println("err:", err)
return
}
defer os.Exit(m.Run())
// if err := cache.OnInit(nil, cache.Set_Redis_Addr([]string{"10.0.0.9:9001", "10.0.0.9:9002", "10.0.0.9:9003", "10.0.1.45:9004", "10.0.1.45:9005", "10.0.1.45:9006"}), cache.Set_Redis_Password("")); err != nil {
// fmt.Printf("err:%v\n", err)
// return
// }
}
func Test_SysIPV6(t *testing.T) { func Test_SysIPV6(t *testing.T) {
err := redis.OnInit(map[string]interface{}{ err := redis.OnInit(map[string]interface{}{
"Redis_Single_Addr": "172.27.100.143:6382", "Redis_Single_Addr": "172.27.100.143:6382",
@ -139,5 +157,36 @@ func Test_Redis_Type(t *testing.T) {
} else { } else {
fmt.Printf("Test_Redis_Type:%s \n", ty) fmt.Printf("Test_Redis_Type:%s \n", ty)
} }
}
type TestData struct {
Name string
Agr int
}
func Test_Redis_Encoder_Struct(t *testing.T) {
err := redis.Set("test:1001", &TestData{Name: "liwei1dao", Agr: 12}, -1)
fmt.Printf("err:%v\n", err)
}
func Test_Redis_Encoder_int(t *testing.T) {
err := redis.Set("test:1002", 856, -1)
fmt.Printf("err:%v \n", err)
data := 0
err = redis.Get("test:1002", &data)
fmt.Printf("data:%d err:%v\n", data, err)
}
func Test_Redis_Encoder_Hash(t *testing.T) {
// err := redis.HMSet("test:1003", &TestData{Name: "liwei1dao", Agr: 12})
// fmt.Printf("err:%v\n", err)
// data := &TestData{}
// err = redis.HGetAll("test:1003", data)
// fmt.Printf("data:%v err:%v\n", data, err)
data1 := map[string]*TestData{"li_1": {Name: "liwei2dao", Agr: 56}, "li_2": {Name: "liwei3dao", Agr: 78}}
err := redis.HMSet("test:1004", data1)
fmt.Printf("err:%v\n", err)
data2 := make(map[string]*TestData)
err = redis.HGetAll("test:1004", data2)
fmt.Printf("data2:%v err:%v\n", data2, err)
} }

View File

@ -0,0 +1,29 @@
package codec
import (
"fmt"
"testing"
)
type TestData struct {
Fild_1 string
Fild_3 int
Fild_4 float32
}
func Test_Encoder(t *testing.T) {
encoder := &Encoder{}
// data, err := encoder.EncoderToMap(map[string]interface{}{"liwei": 106, "sasd": "2564"})
// fmt.Printf("EncoderToMap data1:%v err:%v", data, err)
data, err := encoder.EncoderToMap([]interface{}{"liwei", 106, "sasd", "2564"})
fmt.Printf("EncoderToMap data1:%v err:%v", data, err)
// data, err := encoder.EncoderToMap(&TestData{Fild_1: "liwei1dao", Fild_3: 25, Fild_4: 3.54})
// fmt.Printf("EncoderToMap data2:%v err:%v", data, err)
}
func Test_Decoder(t *testing.T) {
decoder := &Decoder{}
data := &TestData{}
err := decoder.DecoderMap(map[string]string{"Fild_1": "liwei1dao"}, data)
fmt.Printf("DecoderMap data1:%v err:%v", data, err)
}

View File

@ -1,4 +1,4 @@
package convert package codec
import ( import (
"encoding/binary" "encoding/binary"
@ -6,68 +6,22 @@ import (
"unsafe" "unsafe"
) )
func ByteToBytes(v byte) []byte { const host32bit = ^uint(0)>>32 == 0
return []byte{v}
}
func BoolToBytes(v bool) []byte { type (
var buf = make([]byte, 1) IDecoder interface {
if v { Decoder(buf []byte, v interface{}) error
buf[0] = 1 DecoderMap(data map[string]string, v interface{}) error
} else {
buf[0] = 0
} }
return buf IEncoder interface {
} Encoder(v interface{}) (data []byte, err error)
func Int8ToBytes(v int8) []byte { EncoderToMap(v interface{}) (data map[string][]byte, err error)
return []byte{(byte(v))} }
} )
func Int16ToBytes(v int16) []byte {
var buf = make([]byte, 2) // string
binary.BigEndian.PutUint16(buf, uint16(v)) func BytesToString(b []byte) string {
return buf return *(*string)(unsafe.Pointer(&b))
}
func UInt16ToBytes(v uint16) []byte {
var buf = make([]byte, 2)
binary.BigEndian.PutUint16(buf, v)
return buf
}
func IntToBytes(v int) []byte {
var buf = make([]byte, 4)
binary.BigEndian.PutUint32(buf, uint32(v))
return buf
}
func Int32ToBytes(v int32) []byte {
var buf = make([]byte, 4)
binary.BigEndian.PutUint32(buf, uint32(v))
return buf
}
func UInt32ToBytes(v uint32) []byte {
var buf = make([]byte, 4)
binary.BigEndian.PutUint32(buf, v)
return buf
}
func Int64ToBytes(v int64) []byte {
var buf = make([]byte, 8)
binary.BigEndian.PutUint64(buf, uint64(v))
return buf
}
func UInt64ToBytes(v uint64) []byte {
var buf = make([]byte, 8)
binary.BigEndian.PutUint64(buf, v)
return buf
}
func Float32ToBytes(v float32) []byte {
bits := math.Float32bits(v)
bytes := make([]byte, 4)
binary.LittleEndian.PutUint32(bytes, bits)
return bytes
}
func Float64ToBytes(v float64) []byte {
bits := math.Float64bits(v)
bytes := make([]byte, 8)
binary.LittleEndian.PutUint64(bytes, bits)
return bytes
} }
func StringToBytes(s string) []byte { func StringToBytes(s string) []byte {
return *(*[]byte)(unsafe.Pointer( return *(*[]byte)(unsafe.Pointer(
@ -78,48 +32,150 @@ func StringToBytes(s string) []byte {
)) ))
} }
func BytesTobyte(buf []byte) byte { // int
var data byte = buf[0] func IntToBytes(v int) []byte {
return data if host32bit {
return Int32ToBytes(int32(v))
} else {
return Int64ToBytes(int64(v))
}
} }
func BytesToBool(buf []byte) bool { func BytesToInt(buf []byte) int {
var data bool = buf[0] != 0 if host32bit {
return data return int(BytesToInt32(buf))
} else {
return int(BytesToInt64(buf))
}
}
//int8
func Int8ToBytes(v int8) []byte {
return []byte{(byte(v))}
} }
func BytesToInt8(buf []byte) int8 { func BytesToInt8(buf []byte) int8 {
var data int8 = int8(buf[0]) return int8(buf[0])
return data }
//int16
func Int16ToBytes(v int16) []byte {
var buf = make([]byte, 2)
binary.BigEndian.PutUint16(buf, uint16(v))
return buf
} }
func BytesToInt16(buf []byte) int16 { func BytesToInt16(buf []byte) int16 {
return int16(binary.BigEndian.Uint16(buf)) return int16(binary.BigEndian.Uint16(buf))
} }
func BytesToUInt16(buf []byte) uint16 {
return binary.BigEndian.Uint16(buf) //int32
} func Int32ToBytes(v int32) []byte {
func BytesToInt(buf []byte) int { var buf = make([]byte, 4)
return int(binary.BigEndian.Uint32(buf)) binary.BigEndian.PutUint32(buf, uint32(v))
return buf
} }
func BytesToInt32(buf []byte) int32 { func BytesToInt32(buf []byte) int32 {
return int32(binary.BigEndian.Uint32(buf)) return int32(binary.BigEndian.Uint32(buf))
} }
func BytesToUInt32(buf []byte) uint32 {
return binary.BigEndian.Uint32(buf) //int64
func Int64ToBytes(v int64) []byte {
var buf = make([]byte, 8)
binary.BigEndian.PutUint64(buf, uint64(v))
return buf
} }
func BytesToInt64(buf []byte) int64 { func BytesToInt64(buf []byte) int64 {
return int64(binary.BigEndian.Uint64(buf)) return int64(binary.BigEndian.Uint64(buf))
} }
//uint
func UIntToBytes(v uint) []byte {
if host32bit {
return Int32ToBytes(int32(v))
} else {
return Int64ToBytes(int64(v))
}
}
func BytesToUInt(buf []byte) uint {
if host32bit {
return uint(BytesToUInt32(buf))
} else {
return uint(BytesToUInt64(buf))
}
}
//uint8
func UInt8ToBytes(v uint8) []byte {
return []byte{v}
}
func BytesToUInt8(buf []byte) uint8 {
var data uint8 = uint8(buf[0])
return data
}
//uint16
func UInt16ToBytes(v uint16) []byte {
var buf = make([]byte, 2)
binary.BigEndian.PutUint16(buf, v)
return buf
}
func BytesToUInt16(buf []byte) uint16 {
return binary.BigEndian.Uint16(buf)
}
//uint32
func UInt32ToBytes(v uint32) []byte {
var buf = make([]byte, 4)
binary.BigEndian.PutUint32(buf, v)
return buf
}
func BytesToUInt32(buf []byte) uint32 {
return binary.BigEndian.Uint32(buf)
}
//uint64
func BytesToUInt64(buf []byte) uint64 { func BytesToUInt64(buf []byte) uint64 {
return binary.BigEndian.Uint64(buf) return binary.BigEndian.Uint64(buf)
} }
func UInt64ToBytes(v uint64) []byte {
var buf = make([]byte, 8)
binary.BigEndian.PutUint64(buf, v)
return buf
}
//float32
func Float32ToBytes(v float32) []byte {
bits := math.Float32bits(v)
bytes := make([]byte, 4)
binary.LittleEndian.PutUint32(bytes, bits)
return bytes
}
func BytesToFloat32(buf []byte) float32 { func BytesToFloat32(buf []byte) float32 {
bits := binary.LittleEndian.Uint32(buf) bits := binary.LittleEndian.Uint32(buf)
return math.Float32frombits(bits) return math.Float32frombits(bits)
} }
//float64
func Float64ToBytes(v float64) []byte {
bits := math.Float64bits(v)
bytes := make([]byte, 8)
binary.LittleEndian.PutUint64(bytes, bits)
return bytes
}
func BytesToFloat64(buf []byte) float64 { func BytesToFloat64(buf []byte) float64 {
bits := binary.LittleEndian.Uint64(buf) bits := binary.LittleEndian.Uint64(buf)
return math.Float64frombits(bits) return math.Float64frombits(bits)
} }
func BytesToString(b []byte) string { //bool
return *(*string)(unsafe.Pointer(&b)) func BoolToBytes(v bool) []byte {
var buf = make([]byte, 1)
if v {
buf[0] = 1
} else {
buf[0] = 0
}
return buf
}
func BytesToBool(buf []byte) bool {
var data bool = buf[0] != 0
return data
} }

141
lego/utils/codec/decoder.go Normal file
View File

@ -0,0 +1,141 @@
package codec
import (
"fmt"
"reflect"
"time"
)
//解码器
type Decoder struct {
DefDecoder func(buf []byte, v interface{}) error //默认编码 扩展自定义编码方式
}
func (this *Decoder) Decoder(buf []byte, v interface{}) error {
switch v := v.(type) {
case nil:
return fmt.Errorf("decoder: Decoder(nil)")
case *string:
*v = BytesToString(buf)
return nil
case *[]byte:
*v = buf
return nil
case *int:
*v = BytesToInt(buf)
return nil
case *int8:
*v = BytesToInt8(buf)
return nil
case *int16:
*v = BytesToInt16(buf)
return nil
case *int32:
*v = BytesToInt32(buf)
return nil
case *int64:
*v = BytesToInt64(buf)
return nil
case *uint:
*v = BytesToUInt(buf)
return nil
case *uint8:
*v = BytesToUInt8(buf)
return nil
case *uint16:
*v = BytesToUInt16(buf)
return nil
case *uint32:
*v = BytesToUInt32(buf)
return nil
case *uint64:
*v = BytesToUInt64(buf)
return nil
case *float32:
*v = BytesToFloat32(buf)
return nil
case *float64:
*v = BytesToFloat64(buf)
return nil
case *bool:
*v = BytesToBool(buf)
return nil
case *time.Time:
var err error
*v, err = time.Parse(time.RFC3339Nano, BytesToString(buf))
return err
case *time.Duration:
*v = time.Duration(BytesToInt64(buf))
return nil
default:
if this.DefDecoder != nil {
return this.DefDecoder(buf, v)
} else {
return fmt.Errorf(
"decoder: can't marshal %T (implement decoder.DefDecoder)", v)
}
}
}
func (this *Decoder) DecoderMap(data map[string]string, v interface{}) error {
vof := reflect.ValueOf(v)
if !vof.IsValid() {
return fmt.Errorf("Decoder: DecoderMap(nil)")
}
if vof.Kind() != reflect.Ptr && vof.Kind() != reflect.Map && vof.Kind() != reflect.Slice {
return fmt.Errorf("Decoder: DecoderMap(non-pointer %T)", v)
}
if vof.Kind() == reflect.Map {
kt, vt := vof.Type().Key(), vof.Type().Elem()
for k, v := range data {
key := reflect.New(kt).Elem()
if key.Kind() != reflect.Ptr {
if err := this.Decoder(StringToBytes(k), key.Addr().Interface()); err != nil {
return fmt.Errorf("Decoder: Decoder(non-pointer %T) err:%v", key, err)
}
} else {
if err := this.Decoder(StringToBytes(k), key.Addr()); err != nil {
return fmt.Errorf("Decoder: Decoder(non-pointer %T) err:%v", key, err)
}
}
value := reflect.New(vt).Elem()
if value.Kind() != reflect.Ptr {
if err := this.Decoder(StringToBytes(v), value.Addr().Interface()); err != nil {
return fmt.Errorf("Decoder: Decoder(non-pointer %T) err:%v", value, err)
}
} else {
value.Interface()
if err := this.Decoder(StringToBytes(v), value.Addr().Interface()); err != nil {
return fmt.Errorf("Decoder: Decoder(non-pointer %T) err:%v", value, err)
}
}
vof.SetMapIndex(key, value)
}
} else if vof.Kind() == reflect.Ptr {
elem := vof.Elem()
relType := elem.Type()
for i := 0; i < relType.NumField(); i++ {
fieldInfo := relType.Field(i)
tag := fieldInfo.Tag
name := tag.Get("json")
if len(name) == 0 {
name = fieldInfo.Name
}
if value, ok := data[name]; ok {
v := reflect.New(fieldInfo.Type).Elem()
if fieldInfo.Type.Kind() != reflect.Ptr {
if err := this.Decoder(StringToBytes(value), v.Addr().Interface()); err != nil {
return fmt.Errorf("Decoder: Decoder(non-pointer %T) err:%v", value, err)
}
elem.FieldByName(fieldInfo.Name).Set(v)
} else {
if err := this.Decoder(StringToBytes(value), v); err != nil {
return fmt.Errorf("Decoder: Decoder(non-pointer %T) err:%v", value, err)
}
elem.FieldByName(fieldInfo.Name).Set(v)
}
}
}
}
return nil
}

112
lego/utils/codec/encoder.go Normal file
View File

@ -0,0 +1,112 @@
package codec
import (
"fmt"
"reflect"
"time"
)
//编码器
type Encoder struct {
DefEncoder func(v interface{}) (data []byte, err error) //默认编码 扩展自定义编码方式
}
func (this *Encoder) Encoder(v interface{}) (data []byte, err error) {
switch v := v.(type) {
case nil:
return StringToBytes(""), nil
case string:
return StringToBytes(v), nil
case []byte:
return v, nil
case int:
return IntToBytes(v), nil
case int8:
return Int8ToBytes(v), nil
case int16:
return Int16ToBytes(v), nil
case int32:
return Int32ToBytes(v), nil
case int64:
return Int64ToBytes(v), nil
case uint:
return UIntToBytes(v), nil
case uint8:
return UInt8ToBytes(v), nil
case uint16:
return UInt16ToBytes(v), nil
case uint32:
return UInt32ToBytes(v), nil
case uint64:
return UInt64ToBytes(v), nil
case float32:
return Float32ToBytes(v), nil
case float64:
return Float64ToBytes(v), nil
case bool:
return BoolToBytes(v), nil
case time.Time:
return v.AppendFormat([]byte{}, time.RFC3339Nano), nil
case time.Duration:
return Int64ToBytes(v.Nanoseconds()), nil
default:
if this.DefEncoder != nil {
return this.DefEncoder(v)
} else {
return nil, fmt.Errorf(
"encoder: can't marshal %T (implement encoder.DefEncoder)", v)
}
}
}
func (this *Encoder) EncoderToMap(v interface{}) (data map[string][]byte, err error) {
vof := reflect.ValueOf(v)
if !vof.IsValid() {
return nil, fmt.Errorf("Encoder: EncoderToMap(nil)")
}
if vof.Kind() != reflect.Ptr && vof.Kind() != reflect.Map && vof.Kind() != reflect.Slice {
return nil, fmt.Errorf("Encoder: EncoderToMap(non-pointer %T)", v)
}
// vof = vof.Elem()
data = make(map[string][]byte)
if vof.Kind() == reflect.Map {
keys := vof.MapKeys()
for _, k := range keys {
value := vof.MapIndex(k)
var keydata []byte
var valuedata []byte
if keydata, err = this.Encoder(k.Interface()); err != nil {
return nil, fmt.Errorf("Encoder: EncoderToMap(invalid type %T) err:%v", value.Interface(), err)
}
if valuedata, err = this.Encoder(value.Interface()); err != nil {
return nil, fmt.Errorf("Encoder: EncoderToMap(invalid type %T) err:%v", value.Interface(), err)
}
data[BytesToString(keydata)] = valuedata
}
return
} else if vof.Kind() == reflect.Slice {
for i := 0; i < vof.Len(); i++ {
value := vof.Index(i).Interface()
var valuedata []byte
if valuedata, err = this.Encoder(value); err != nil {
return nil, fmt.Errorf("Encoder: EncoderToMap(invalid type %T) err:%v", value, err)
}
data[BytesToString(IntToBytes(i))] = valuedata
}
return
} else if vof.Kind() == reflect.Ptr {
elem := vof.Elem()
relType := elem.Type()
for i := 0; i < relType.NumField(); i++ {
field := elem.Field(i).Interface()
var valuedata []byte
if valuedata, err = this.Encoder(field); err != nil {
return nil, fmt.Errorf("Encoder: EncoderToMap(invalid type %T) err:%v", field, err)
}
data[relType.Field(i).Name] = valuedata
}
return
} else {
return nil, fmt.Errorf("Encoder: EncoderToMap(invalid type %T)", v)
}
}

View File

@ -5,6 +5,7 @@ import (
"go_dreamfactory/pb" "go_dreamfactory/pb"
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
"go.mongodb.org/mongo-driver/bson"
) )
type ( type (
@ -26,7 +27,7 @@ type (
// 向db 写日志信息 // 向db 写日志信息
InsertModelLogs(table string, uID string, target interface{}) (err error) InsertModelLogs(table string, uID string, target interface{}) (err error)
DeleteModelLogs(table string, uID string, where interface{}) (err error) DeleteModelLogs(table string, uID string, where interface{}) (err error)
UpdateModelLogs(table string, uID string, where interface{}, target interface{}) (err error) UpdateModelLogs(table string, uID string, where bson.M, target interface{}) (err error)
} }
IDB_Comp interface { IDB_Comp interface {
} }

View File

@ -2,8 +2,6 @@ package dbservice
import ( import (
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go.mongodb.org/mongo-driver/bson"
) )
const ( const (
@ -16,11 +14,6 @@ var (
ErrorLogCount = make(map[string]uint32, 0) ErrorLogCount = make(map[string]uint32, 0)
) )
type QueryStruct struct {
Selector bson.M
Query bson.M
}
const ( const (
DB_ModelTable core.SqlTable = "model_log" DB_ModelTable core.SqlTable = "model_log"
) )

View File

@ -89,7 +89,7 @@ func (this *DB_Comp) Model_UpdateDBByLog(uid string) (err error) {
log.Errorf("insert db err max num %s db err:%v", data.ID, err) log.Errorf("insert db err max num %s db err:%v", data.ID, err)
_, err = this.DB.DeleteOne(DB_ModelTable, bson.M{"_id": data.ID}) _, err = this.DB.DeleteOne(DB_ModelTable, bson.M{"_id": data.ID})
if err != nil { if err != nil {
log.Errorf("insert %s db err:%v", data.ID, err) log.Errorf("insert %s db err:%+v", data.ID, err)
} }
} }
continue continue
@ -116,7 +116,7 @@ func (this *DB_Comp) Model_UpdateDBByLog(uid string) (err error) {
log.Errorf("del db err max num %s db err:%v", data.ID, err) log.Errorf("del db err max num %s db err:%v", data.ID, err)
_, err = this.DB.DeleteOne(DB_ModelTable, bson.M{"_id": data.ID}) _, err = this.DB.DeleteOne(DB_ModelTable, bson.M{"_id": data.ID})
if err != nil { if err != nil {
log.Errorf("insert %s db err:%v", data.ID, err) log.Errorf("insert %s db err:%+v", data.ID, err)
} }
} }
continue continue
@ -126,20 +126,19 @@ func (this *DB_Comp) Model_UpdateDBByLog(uid string) (err error) {
log.Errorf("parameter len _id : %s,uid : %s d.len:%v", data.ID, data.UID, len(data.D)) log.Errorf("parameter len _id : %s,uid : %s d.len:%v", data.ID, data.UID, len(data.D))
continue continue
} }
_key := data.D[0].(string) _key := data.D[0].(string)
where := data.D[1].(bson.D) Where := make(bson.M, 0)
_obj := &QueryStruct{ Query := make(bson.M, 0)
Selector: make(map[string]interface{}), Query1 := make(bson.M, 0)
Query: make(map[string]interface{}), Query1["$set"] = Query
for _, v := range data.D[1].(bson.D) {
Where[v.Key] = v
} }
for _, v := range where { for _, v := range data.D[2].(bson.D) {
_obj.Selector[v.Key] = v Query[v.Key] = v
} }
query := data.D[2].(bson.D) _, err := this.DB.UpdateMany(core.SqlTable(_key), Where, Query1)
for _, v := range query {
_obj.Query[v.Key] = v
}
_, err := this.DB.UpdateMany(core.SqlTable(_key), _obj.Selector, _obj.Query)
if err != nil { if err != nil {
log.Errorf("Update %s db err:%v", core.SqlTable(_key), err) log.Errorf("Update %s db err:%v", core.SqlTable(_key), err)
ErrorLogCount[data.ID]++ ErrorLogCount[data.ID]++
@ -147,7 +146,7 @@ func (this *DB_Comp) Model_UpdateDBByLog(uid string) (err error) {
log.Errorf("update db err max num %s db err:%v", data.ID, err) log.Errorf("update db err max num %s db err:%v", data.ID, err)
_, err = this.DB.DeleteOne(DB_ModelTable, bson.M{"_id": data.ID}) _, err = this.DB.DeleteOne(DB_ModelTable, bson.M{"_id": data.ID})
if err != nil { if err != nil {
log.Errorf("insert %s db err:%v", data.ID, err) log.Errorf("insert %s db err:%+v", data.ID, err)
} }
} }
continue continue

View File

@ -1,47 +0,0 @@
package dbservice
import (
"go_dreamfactory/pb"
"os"
"testing"
"time"
"go.mongodb.org/mongo-driver/bson/primitive"
)
var module = new(DBService)
func TestMain(m *testing.M) {
for i := 0; i < 50000; i++ {
//go func() {
_mail := &pb.DB_MailData{
ObjId: primitive.NewObjectID().Hex(),
UserId: "uid123",
Title: "系统邮件",
Contex: "恭喜获得专属礼包一份",
CreateTime: uint64(time.Now().Unix()),
DueTime: uint64(time.Now().Unix()) + 30*24*3600,
Check: false,
Reward: false,
}
module.db_comp.InsertModelLogs("mail", "uid123", _mail)
//db.InsertModelLogs("mail", "uid123", _mail)
//InsertModelLogs("mail", "uid123", _mail)
// data := &comm.Autogenerated{
// ID: primitive.NewObjectID().Hex(),
// UID: "uid123",
// Act: string(comm.LogHandleType_Insert),
// }
// data.D = append(data.D, "mail") // D[0]
// data.D = append(data.D, _mail) // D[1]
// _, err1 := module.db_comp.DB.InsertOne("model_log", data)
// if err1 != nil {
// log.Errorf("insert model db err %v", err1)
// }
//}()
}
time.Sleep(time.Second * 10)
defer os.Exit(m.Run())
}

View File

@ -21,6 +21,7 @@ import (
// var typeOfContext = reflect.TypeOf((*context.Context)(nil)).Elem() // var typeOfContext = reflect.TypeOf((*context.Context)(nil)).Elem()
var typeOfSession = reflect.TypeOf((*comm.IUserSession)(nil)).Elem() var typeOfSession = reflect.TypeOf((*comm.IUserSession)(nil)).Elem()
var typeOfMapStringIntface = reflect.TypeOf((map[string]interface{})(nil)).Elem() var typeOfMapStringIntface = reflect.TypeOf((map[string]interface{})(nil)).Elem()
var typeOfCode = reflect.TypeOf((*comm.ErrorCode)(nil)).Elem()
var typeOfErrorCode = reflect.TypeOf((*pb.ErrorCode)(nil)).Elem() var typeOfErrorCode = reflect.TypeOf((*pb.ErrorCode)(nil)).Elem()
var typeOfError = reflect.TypeOf((*error)(nil)).Elem() var typeOfError = reflect.TypeOf((*error)(nil)).Elem()
@ -96,7 +97,8 @@ func (this *MComp_GateComp) reflectionRouteHandle(method reflect.Method) {
if mtype.NumOut() != 1 { if mtype.NumOut() != 1 {
return return
} }
if returnType := mtype.Out(0); returnType != typeOfError { returnCodeType := mtype.Out(0)
if returnCodeType != typeOfErrorCode {
return return
} }
this.scomp.RegisterRoute(fmt.Sprintf("%s.%s", this.module.GetType(), strings.ToLower(mname)), reflect.ValueOf(this.comp), replyType, method) this.scomp.RegisterRoute(fmt.Sprintf("%s.%s", this.module.GetType(), strings.ToLower(mname)), reflect.ValueOf(this.comp), replyType, method)
@ -134,7 +136,7 @@ func (this *MComp_GateComp) reflectionRouteCheck(method reflect.Method) {
return return
} }
returnCodeType := mtype.Out(1) returnCodeType := mtype.Out(1)
if returnCodeType != typeOfErrorCode { if returnCodeType != typeOfCode {
return return
} }
this.scomp.RegisterRouteCheck(fmt.Sprintf("%s.%s", this.module.GetType(), strings.ToLower(mname[0])), reflect.ValueOf(this.comp), replyType, method) this.scomp.RegisterRouteCheck(fmt.Sprintf("%s.%s", this.module.GetType(), strings.ToLower(mname[0])), reflect.ValueOf(this.comp), replyType, method)

View File

@ -11,6 +11,7 @@ import (
"go_dreamfactory/lego/sys/log" "go_dreamfactory/lego/sys/log"
"go_dreamfactory/lego/utils/container/id" "go_dreamfactory/lego/utils/container/id"
"github.com/golang/protobuf/ptypes"
"github.com/gorilla/websocket" "github.com/gorilla/websocket"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
) )
@ -154,7 +155,14 @@ func (this *Agent) messageDistribution(msg *pb.UserMessage) {
Message: msg.Data, Message: msg.Data,
}, reply); err != nil { }, reply); err != nil {
log.Errorf("agent:%s uId:%s MessageDistribution err:%v", this.sessionId, this.uId, err) log.Errorf("agent:%s uId:%s MessageDistribution err:%v", this.sessionId, this.uId, err)
} else { return
log.Debugf("agent:%s uId:%s MessageDistribution reply:%v", this.sessionId, this.uId, reply) }
if reply.Code != pb.ErrorCode_Success {
data, _ := ptypes.MarshalAny(&pb.ErrorNotify{ReqMainType: msg.MainType, ReqSubType: msg.SubType, Code: reply.Code})
this.WriteMsg(&pb.UserMessage{
MainType: "notify",
SubType: "errornotify",
Data: data,
})
} }
} }

View File

@ -39,7 +39,7 @@ func (this *AgentMgr_Comp) Bind(ctx context.Context, args *pb.AgentBuildReq, rep
a.(IAgent).Bind(args.UserId, args.WorkerId) a.(IAgent).Bind(args.UserId, args.WorkerId)
} else { } else {
reply.Code = pb.ErrorCode_UserSessionNobeing reply.Code = pb.ErrorCode_UserSessionNobeing
reply.Msg = pb.GetErrorCodeMsg(pb.ErrorCode_UserSessionNobeing) reply.Message = pb.GetErrorCodeMsg(pb.ErrorCode_UserSessionNobeing)
} }
return nil return nil
} }
@ -50,7 +50,7 @@ func (this *AgentMgr_Comp) UnBind(ctx context.Context, args *pb.AgentUnBuildReq,
a.(IAgent).UnBind() a.(IAgent).UnBind()
} else { } else {
reply.Code = pb.ErrorCode_UserSessionNobeing reply.Code = pb.ErrorCode_UserSessionNobeing
reply.Msg = pb.GetErrorCodeMsg(pb.ErrorCode_UserSessionNobeing) reply.Message = pb.GetErrorCodeMsg(pb.ErrorCode_UserSessionNobeing)
} }
return nil return nil
} }
@ -61,12 +61,11 @@ func (this *AgentMgr_Comp) SendMsgToAgent(ctx context.Context, args *pb.AgentSen
a.(IAgent).WriteMsg(&pb.UserMessage{ a.(IAgent).WriteMsg(&pb.UserMessage{
MainType: args.MainType, MainType: args.MainType,
SubType: args.SubType, SubType: args.SubType,
Code: args.Code,
Data: args.Data, Data: args.Data,
}) })
} else { } else {
reply.Code = pb.ErrorCode_UserSessionNobeing reply.Code = pb.ErrorCode_UserSessionNobeing
reply.Msg = pb.GetErrorCodeMsg(pb.ErrorCode_UserSessionNobeing) reply.Message = pb.GetErrorCodeMsg(pb.ErrorCode_UserSessionNobeing)
} }
return nil return nil
} }
@ -106,7 +105,7 @@ func (this *AgentMgr_Comp) CloseAgent(ctx context.Context, args *pb.AgentCloseeR
a.(IAgent).Close() a.(IAgent).Close()
} else { } else {
reply.Code = pb.ErrorCode_UserSessionNobeing reply.Code = pb.ErrorCode_UserSessionNobeing
reply.Msg = pb.GetErrorCodeMsg(pb.ErrorCode_UserSessionNobeing) reply.Message = pb.GetErrorCodeMsg(pb.ErrorCode_UserSessionNobeing)
} }
return nil return nil
} }

View File

@ -12,12 +12,11 @@ func (this *Api_Comp) DelUserMailReq_Check(session comm.IUserSession, req *pb.De
} }
// 删除邮件 // 删除邮件
func (this *Api_Comp) DelUserMailReq(session comm.IUserSession, agrs map[string]interface{}, req *pb.DelUserMailReq) (err error) { func (this *Api_Comp) DelUserMailReq(session comm.IUserSession, agrs map[string]interface{}, req *pb.DelUserMailReq) (code pb.ErrorCode) {
var err error
code := pb.ErrorCode_Success
mailinfo := make([]*pb.DB_MailData, 0) mailinfo := make([]*pb.DB_MailData, 0)
defer func() { defer func() {
session.SendMsg(string(this.module.GetType()), DelUserMailResp, code, &pb.DelUserMailResp{Mail: mailinfo}) session.SendMsg(string(this.module.GetType()), DelUserMailResp, &pb.DelUserMailResp{Mail: mailinfo})
}() }()
if session.GetUserId() == "" { if session.GetUserId() == "" {
code = pb.ErrorCode_NoLogin code = pb.ErrorCode_NoLogin

View File

@ -5,19 +5,18 @@ import (
"go_dreamfactory/pb" "go_dreamfactory/pb"
) )
func (this *Api_Comp) GetUserMailAttachmentReq_Check(session comm.IUserSession, req *pb.GetUserMailAttachmentReq) (result map[string]interface{}, code pb.ErrorCode) { func (this *Api_Comp) GetUserMailAttachmentReq_Check(session comm.IUserSession, req *pb.GetUserMailAttachmentReq) (result map[string]interface{}, code comm.ErrorCode) {
return return
} }
// 领取附件 // 领取附件
func (this *Api_Comp) GetUserMailAttachmentReq(session comm.IUserSession, agrs map[string]interface{}, req *pb.GetUserMailAttachmentReq) (err error) { func (this *Api_Comp) GetUserMailAttachmentReq(session comm.IUserSession, agrs map[string]interface{}, req *pb.GetUserMailAttachmentReq) (code pb.ErrorCode) {
var ( var (
code pb.ErrorCode
mail *pb.DB_MailData mail *pb.DB_MailData
) )
defer func() { defer func() {
session.SendMsg(string(this.module.GetType()), GetUserMailAttachmentResp, code, &pb.GetUserMailAttachmentResp{Mail: mail}) session.SendMsg(string(this.module.GetType()), GetUserMailAttachmentResp, &pb.GetUserMailAttachmentResp{Mail: mail})
}() }()
if session.GetUserId() == "" { if session.GetUserId() == "" {
code = pb.ErrorCode_NoLogin code = pb.ErrorCode_NoLogin

View File

@ -6,17 +6,17 @@ import (
"go_dreamfactory/pb" "go_dreamfactory/pb"
) )
func (this *Api_Comp) QueryUserMailReq_Check(session comm.IUserSession, req *pb.QueryUserMailReq) (result map[string]interface{}, code pb.ErrorCode) { func (this *Api_Comp) QueryUserMailReq_Check(session comm.IUserSession, req *pb.QueryUserMailReq) (result map[string]interface{}, code comm.ErrorCode) {
return return
} }
// 查看所有邮件信息 // 查看所有邮件信息
func (this *Api_Comp) QueryUserMailReq(session comm.IUserSession, agrs map[string]interface{}, req *pb.QueryUserMailReq) (err error) { func (this *Api_Comp) QueryUserMailReq(session comm.IUserSession, agrs map[string]interface{}, req *pb.QueryUserMailReq) (code pb.ErrorCode) {
code := pb.ErrorCode_Success var err error
mailinfo := make([]*pb.DB_MailData, 0) mailinfo := make([]*pb.DB_MailData, 0)
defer func() { defer func() {
session.SendMsg(string(this.module.GetType()), QueryUserMailResp, code, &pb.QueryUserMailResp{Mails: mailinfo}) session.SendMsg(string(this.module.GetType()), QueryUserMailResp, &pb.QueryUserMailResp{Mails: mailinfo})
}() }()
if session.GetUserId() == "" { if session.GetUserId() == "" {
code = pb.ErrorCode_NoLogin code = pb.ErrorCode_NoLogin

View File

@ -5,18 +5,18 @@ import (
"go_dreamfactory/pb" "go_dreamfactory/pb"
) )
func (this *Api_Comp) ReadUserMailReq_Check(session comm.IUserSession, req *pb.ReadUserMailReq) (result map[string]interface{}, code pb.ErrorCode) { func (this *Api_Comp) ReadUserMailReq_Check(session comm.IUserSession, req *pb.ReadUserMailReq) (result map[string]interface{}, code comm.ErrorCode) {
return return
} }
// 查看某一封邮件 // 查看某一封邮件
func (this *Api_Comp) ReadUserMailReq(session comm.IUserSession, agrs map[string]interface{}, req *pb.ReadUserMailReq) (err error) { func (this *Api_Comp) ReadUserMailReq(session comm.IUserSession, agrs map[string]interface{}, req *pb.ReadUserMailReq) (code pb.ErrorCode) {
var ( var (
code pb.ErrorCode err error
mail *pb.DB_MailData mail *pb.DB_MailData
) )
defer func() { defer func() {
session.SendMsg(string(this.module.GetType()), ReadUserMailResp, code, &pb.ReadUserMailResp{Mail: mail}) session.SendMsg(string(this.module.GetType()), ReadUserMailResp, &pb.ReadUserMailResp{Mail: mail})
}() }()
if session.GetUserId() == "" { if session.GetUserId() == "" {
code = pb.ErrorCode_NoLogin code = pb.ErrorCode_NoLogin

View File

@ -79,7 +79,7 @@ func (this *Model_Comp) DeleteModelLogs(table string, uID string, where interfac
return err return err
} }
func (this *Model_Comp) UpdateModelLogs(table string, uID string, where interface{}, target interface{}) (err error) { func (this *Model_Comp) UpdateModelLogs(table string, uID string, where bson.M, target interface{}) (err error) {
data := &comm.Autogenerated{ data := &comm.Autogenerated{
ID: primitive.NewObjectID().Hex(), ID: primitive.NewObjectID().Hex(),

View File

@ -8,15 +8,15 @@ import (
) )
//参数校验 //参数校验
func (this *Api_Comp) Getlist_Check(session comm.IUserSession, req *pb.GetlistReq) (result map[string]interface{}, code pb.ErrorCode) { func (this *Api_Comp) Getlist_Check(session comm.IUserSession, req *pb.GetlistReq) (result map[string]interface{}, code comm.ErrorCode) {
result = map[string]interface{}{"ce": 123} result = map[string]interface{}{"ce": 123}
return return
} }
///获取用户道具 ///获取用户道具
func (this *Api_Comp) Getlist(session comm.IUserSession, agrs map[string]interface{}, req *pb.GetlistReq) (err error) { func (this *Api_Comp) Getlist(session comm.IUserSession, agrs map[string]interface{}, req *pb.GetlistReq) (code pb.ErrorCode) {
var ( var (
code pb.ErrorCode err error
items []*pb.DB_UserItemData items []*pb.DB_UserItemData
nt int64 nt int64
tempgrids []*pb.DB_UserItemData tempgrids []*pb.DB_UserItemData
@ -25,7 +25,7 @@ func (this *Api_Comp) Getlist(session comm.IUserSession, agrs map[string]interfa
dels []string dels []string
) )
defer func() { defer func() {
session.SendMsg(string(this.module.GetType()), GetlistResp, code, &pb.GetlistResp{Grids: grids}) session.SendMsg(string(this.module.GetType()), GetlistResp, &pb.GetlistResp{Grids: grids})
if code == pb.ErrorCode_Success { if code == pb.ErrorCode_Success {
go func() { //异步处理修改数据 go func() { //异步处理修改数据
this.module.cache_comp.Pack_UpdateUserPack(session.GetUserId(), modifys...) this.module.cache_comp.Pack_UpdateUserPack(session.GetUserId(), modifys...)

View File

@ -6,18 +6,15 @@ import (
) )
//参数校验 //参数校验
func (this *Api_Comp) SellItem_Check(session comm.IUserSession, req *pb.SellItemReq) (result map[string]interface{}, code pb.ErrorCode) { func (this *Api_Comp) SellItem_Check(session comm.IUserSession, req *pb.SellItemReq) (result map[string]interface{}, code comm.ErrorCode) {
return return
} }
//出售道具 //出售道具
func (this *Api_Comp) SellItem(session comm.IUserSession, agrs map[string]interface{}, req *pb.SellItemReq) (err error) { func (this *Api_Comp) SellItem(session comm.IUserSession, agrs map[string]interface{}, req *pb.SellItemReq) (code pb.ErrorCode) {
var (
code pb.ErrorCode
)
defer func() { defer func() {
session.SendMsg(string(this.module.GetType()), SellItemResp, code, &pb.SellItemResp{}) session.SendMsg(string(this.module.GetType()), SellItemResp, &pb.SellItemResp{})
}() }()
return return
} }

View File

@ -6,18 +6,15 @@ import (
) )
//参数校验 //参数校验
func (this *Api_Comp) Useitem_Check(session comm.IUserSession, req *pb.UseItemReq) (result map[string]interface{}, code pb.ErrorCode) { func (this *Api_Comp) Useitem_Check(session comm.IUserSession, req *pb.UseItemReq) (result map[string]interface{}, code comm.ErrorCode) {
return return
} }
//使用道具 //使用道具
func (this *Api_Comp) Useitem(session comm.IUserSession, agrs map[string]interface{}, req *pb.UseItemReq) (err error) { func (this *Api_Comp) Useitem(session comm.IUserSession, agrs map[string]interface{}, req *pb.UseItemReq) (code pb.ErrorCode) {
var (
code pb.ErrorCode
)
defer func() { defer func() {
session.SendMsg(string(this.module.GetType()), UseItemResp, code, &pb.UseItemResp{}) session.SendMsg(string(this.module.GetType()), UseItemResp, &pb.UseItemResp{})
}() }()
return return

View File

@ -7,7 +7,6 @@ import (
"go_dreamfactory/lego/sys/redis" "go_dreamfactory/lego/sys/redis"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"reflect"
"go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/bson/primitive"
) )
@ -27,27 +26,27 @@ func (this *Cache_Comp) Init(service core.IService, module core.IModule, comp co
///查询用户背包数据 ///查询用户背包数据
func (this *Cache_Comp) Pack_QueryUserPack(uId string) (itmes []*pb.DB_UserItemData, err error) { func (this *Cache_Comp) Pack_QueryUserPack(uId string) (itmes []*pb.DB_UserItemData, err error) {
var ( // var (
lists []interface{} // lists []interface{}
temp map[string]interface{} // temp map[string]interface{}
) // )
if lists, err = this.Redis.HGetAll(fmt.Sprintf(Redis_PackCache, uId), reflect.TypeOf(pb.DB_UserItemData{})); err == nil { // if lists, err = this.Redis.HGetAll(fmt.Sprintf(Redis_PackCache, uId), reflect.TypeOf(pb.DB_UserItemData{})); err == nil {
itmes = make([]*pb.DB_UserItemData, 0, len(lists)) // itmes = make([]*pb.DB_UserItemData, 0, len(lists))
for i, v := range lists { // for i, v := range lists {
itmes[i] = v.(*pb.DB_UserItemData) // itmes[i] = v.(*pb.DB_UserItemData)
} // }
return // return
} else if err == redis.RedisNil { // } else if err == redis.RedisNil {
if itmes, err = this.module.db_comp.Pack_QueryUserPack(uId); err == nil { // if itmes, err = this.module.db_comp.Pack_QueryUserPack(uId); err == nil {
temp = make(map[string]interface{}) // temp = make(map[string]interface{})
for _, v := range itmes { // for _, v := range itmes {
temp[v.GridId] = v // temp[v.GridId] = v
} // }
this.Redis.HMSet(fmt.Sprintf(Redis_PackCache, uId), temp) // this.Redis.HMSet(fmt.Sprintf(Redis_PackCache, uId), temp)
} else if err == mgo.MongodbNil { // } else if err == mgo.MongodbNil {
err = nil // err = nil
} // }
} // }
return return
} }

1
pb.bat
View File

@ -8,6 +8,7 @@ set SRC=%PROJECT_ROOT%\pb\proto
set TAR=%PROJECT_ROOT%\pb set TAR=%PROJECT_ROOT%\pb
protoc --proto_path=%SRC% --go_out=%TAR% --go_opt=paths=import %SRC%\*.proto protoc --proto_path=%SRC% --go_out=%TAR% --go_opt=paths=import %SRC%\*.proto
protoc --proto_path=%SRC% --go_out=%TAR% --go_opt=paths=import %SRC%\notify\*.proto
protoc --proto_path=%SRC% --go_out=%TAR% --go_opt=paths=import %SRC%\user\*.proto protoc --proto_path=%SRC% --go_out=%TAR% --go_opt=paths=import %SRC%\user\*.proto
protoc --proto_path=%SRC% --go_out=%TAR% --go_opt=paths=import %SRC%\friend\*.proto protoc --proto_path=%SRC% --go_out=%TAR% --go_opt=paths=import %SRC%\friend\*.proto
protoc --proto_path=%SRC% --go_out=%TAR% --go_opt=paths=import %SRC%\pack\*.proto protoc --proto_path=%SRC% --go_out=%TAR% --go_opt=paths=import %SRC%\pack\*.proto

View File

@ -27,10 +27,9 @@ type UserMessage struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
MainType string `protobuf:"bytes,1,opt,name=MainType,proto3" json:"MainType"` MainType string `protobuf:"bytes,1,opt,name=MainType,proto3" json:"MainType,omitempty"` //用户消息处理 模块名 例如:user 对应项目中 user的模块
SubType string `protobuf:"bytes,2,opt,name=SubType,proto3" json:"SubType"` SubType string `protobuf:"bytes,2,opt,name=SubType,proto3" json:"SubType,omitempty"` //用户消息处理函数名 例如:login 对应项目中 user的模块中 api_login 的处理函数
Code ErrorCode `protobuf:"varint,3,opt,name=Code,proto3,enum=ErrorCode" json:"Code"` Data *anypb.Any `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
Data *anypb.Any `protobuf:"bytes,4,opt,name=data,proto3" json:"data"`
} }
func (x *UserMessage) Reset() { func (x *UserMessage) Reset() {
@ -79,13 +78,6 @@ func (x *UserMessage) GetSubType() string {
return "" return ""
} }
func (x *UserMessage) GetCode() ErrorCode {
if x != nil {
return x.Code
}
return ErrorCode_Success
}
func (x *UserMessage) GetData() *anypb.Any { func (x *UserMessage) GetData() *anypb.Any {
if x != nil { if x != nil {
return x.Data return x.Data
@ -99,12 +91,12 @@ type AgentMessage struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Ip string `protobuf:"bytes,1,opt,name=Ip,proto3" json:"Ip"` Ip string `protobuf:"bytes,1,opt,name=Ip,proto3" json:"Ip,omitempty"`
UserSessionId string `protobuf:"bytes,2,opt,name=UserSessionId,proto3" json:"UserSessionId"` UserSessionId string `protobuf:"bytes,2,opt,name=UserSessionId,proto3" json:"UserSessionId,omitempty"`
UserId string `protobuf:"bytes,3,opt,name=UserId,proto3" json:"UserId"` UserId string `protobuf:"bytes,3,opt,name=UserId,proto3" json:"UserId,omitempty"`
GatewayServiceId string `protobuf:"bytes,4,opt,name=GatewayServiceId,proto3" json:"GatewayServiceId"` GatewayServiceId string `protobuf:"bytes,4,opt,name=GatewayServiceId,proto3" json:"GatewayServiceId,omitempty"`
Method string `protobuf:"bytes,5,opt,name=Method,proto3" json:"Method"` Method string `protobuf:"bytes,5,opt,name=Method,proto3" json:"Method,omitempty"`
Message *anypb.Any `protobuf:"bytes,6,opt,name=Message,proto3" json:"Message"` Message *anypb.Any `protobuf:"bytes,6,opt,name=Message,proto3" json:"Message,omitempty"`
} }
func (x *AgentMessage) Reset() { func (x *AgentMessage) Reset() {
@ -187,8 +179,9 @@ type RPCMessageReply struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Code ErrorCode `protobuf:"varint,1,opt,name=Code,proto3,enum=ErrorCode" json:"Code"` Code ErrorCode `protobuf:"varint,1,opt,name=Code,proto3,enum=ErrorCode" json:"Code,omitempty"`
Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg"` Message string `protobuf:"bytes,2,opt,name=Message,proto3" json:"Message,omitempty"`
Data string `protobuf:"bytes,3,opt,name=Data,proto3" json:"Data,omitempty"`
} }
func (x *RPCMessageReply) Reset() { func (x *RPCMessageReply) Reset() {
@ -230,9 +223,16 @@ func (x *RPCMessageReply) GetCode() ErrorCode {
return ErrorCode_Success return ErrorCode_Success
} }
func (x *RPCMessageReply) GetMsg() string { func (x *RPCMessageReply) GetMessage() string {
if x != nil { if x != nil {
return x.Msg return x.Message
}
return ""
}
func (x *RPCMessageReply) GetData() string {
if x != nil {
return x.Data
} }
return "" return ""
} }
@ -243,9 +243,9 @@ type AgentBuildReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
UserSessionId string `protobuf:"bytes,1,opt,name=UserSessionId,proto3" json:"UserSessionId"` UserSessionId string `protobuf:"bytes,1,opt,name=UserSessionId,proto3" json:"UserSessionId,omitempty"`
UserId string `protobuf:"bytes,2,opt,name=UserId,proto3" json:"UserId"` UserId string `protobuf:"bytes,2,opt,name=UserId,proto3" json:"UserId,omitempty"`
WorkerId string `protobuf:"bytes,3,opt,name=WorkerId,proto3" json:"WorkerId"` WorkerId string `protobuf:"bytes,3,opt,name=WorkerId,proto3" json:"WorkerId,omitempty"`
} }
func (x *AgentBuildReq) Reset() { func (x *AgentBuildReq) Reset() {
@ -307,7 +307,7 @@ type AgentUnBuildReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
UserSessionId string `protobuf:"bytes,1,opt,name=UserSessionId,proto3" json:"UserSessionId"` UserSessionId string `protobuf:"bytes,1,opt,name=UserSessionId,proto3" json:"UserSessionId,omitempty"`
} }
func (x *AgentUnBuildReq) Reset() { func (x *AgentUnBuildReq) Reset() {
@ -355,11 +355,10 @@ type AgentSendMessageReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
UserSessionId string `protobuf:"bytes,1,opt,name=UserSessionId,proto3" json:"UserSessionId"` UserSessionId string `protobuf:"bytes,1,opt,name=UserSessionId,proto3" json:"UserSessionId,omitempty"`
MainType string `protobuf:"bytes,2,opt,name=MainType,proto3" json:"MainType"` MainType string `protobuf:"bytes,2,opt,name=MainType,proto3" json:"MainType,omitempty"`
SubType string `protobuf:"bytes,3,opt,name=SubType,proto3" json:"SubType"` SubType string `protobuf:"bytes,3,opt,name=SubType,proto3" json:"SubType,omitempty"`
Code ErrorCode `protobuf:"varint,4,opt,name=Code,proto3,enum=ErrorCode" json:"Code"` Data *anypb.Any `protobuf:"bytes,4,opt,name=Data,proto3" json:"Data,omitempty"`
Data *anypb.Any `protobuf:"bytes,5,opt,name=Data,proto3" json:"Data"`
} }
func (x *AgentSendMessageReq) Reset() { func (x *AgentSendMessageReq) Reset() {
@ -415,13 +414,6 @@ func (x *AgentSendMessageReq) GetSubType() string {
return "" return ""
} }
func (x *AgentSendMessageReq) GetCode() ErrorCode {
if x != nil {
return x.Code
}
return ErrorCode_Success
}
func (x *AgentSendMessageReq) GetData() *anypb.Any { func (x *AgentSendMessageReq) GetData() *anypb.Any {
if x != nil { if x != nil {
return x.Data return x.Data
@ -435,10 +427,10 @@ type BatchMessageReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
UserSessionIds []string `protobuf:"bytes,1,rep,name=UserSessionIds,proto3" json:"UserSessionIds"` UserSessionIds []string `protobuf:"bytes,1,rep,name=UserSessionIds,proto3" json:"UserSessionIds,omitempty"`
MainType string `protobuf:"bytes,2,opt,name=MainType,proto3" json:"MainType"` MainType string `protobuf:"bytes,2,opt,name=MainType,proto3" json:"MainType,omitempty"`
SubType string `protobuf:"bytes,3,opt,name=SubType,proto3" json:"SubType"` SubType string `protobuf:"bytes,3,opt,name=SubType,proto3" json:"SubType,omitempty"`
Data *anypb.Any `protobuf:"bytes,4,opt,name=Data,proto3" json:"Data"` Data *anypb.Any `protobuf:"bytes,4,opt,name=Data,proto3" json:"Data,omitempty"`
} }
func (x *BatchMessageReq) Reset() { func (x *BatchMessageReq) Reset() {
@ -507,9 +499,9 @@ type BroadCastMessageReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
MainType string `protobuf:"bytes,1,opt,name=MainType,proto3" json:"MainType"` //服务名 MainType string `protobuf:"bytes,1,opt,name=MainType,proto3" json:"MainType,omitempty"` //服务名
SubType string `protobuf:"bytes,2,opt,name=SubType,proto3" json:"SubType"` SubType string `protobuf:"bytes,2,opt,name=SubType,proto3" json:"SubType,omitempty"`
Data *anypb.Any `protobuf:"bytes,3,opt,name=Data,proto3" json:"Data"` Data *anypb.Any `protobuf:"bytes,3,opt,name=Data,proto3" json:"Data,omitempty"`
} }
func (x *BroadCastMessageReq) Reset() { func (x *BroadCastMessageReq) Reset() {
@ -571,7 +563,7 @@ type AgentCloseeReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
UserSessionId string `protobuf:"bytes,1,opt,name=UserSessionId,proto3" json:"UserSessionId"` UserSessionId string `protobuf:"bytes,1,opt,name=UserSessionId,proto3" json:"UserSessionId,omitempty"`
} }
func (x *AgentCloseeReq) Reset() { func (x *AgentCloseeReq) Reset() {
@ -619,77 +611,75 @@ var file_comm_proto_rawDesc = []byte{
0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0f, 0x65, 0x72, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0f, 0x65, 0x72,
0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61,
0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x01, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6d, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72,
0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x69, 0x6e, 0x54,
0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4d, 0x61, 0x69, 0x6e, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4d, 0x61, 0x69, 0x6e, 0x54,
0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x18, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a,
0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x45, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f,
0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e,
0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd0, 0x01, 0x0a, 0x0c, 0x41, 0x67, 0x65, 0x6e,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x70, 0x18, 0x01,
0x6e, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd0, 0x01, 0x0a, 0x0c, 0x41, 0x67, 0x65, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72,
0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x70, 0x18, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16,
0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
0x52, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61,
0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x47, 0x61, 0x74, 0x65, 0x77, 0x52, 0x10, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01,
0x09, 0x52, 0x10, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x28, 0x09, 0x52, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x2e, 0x0a, 0x07, 0x4d, 0x65,
0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f,
0x01, 0x28, 0x09, 0x52, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x2e, 0x0a, 0x07, 0x4d, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e,
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x79, 0x52, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x5f, 0x0a, 0x0f, 0x52, 0x50,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x43, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1e, 0x0a,
0x6e, 0x79, 0x52, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x43, 0x0a, 0x0f, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x45, 0x72,
0x50, 0x43, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1e, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a,
0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x45, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18,
0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x69, 0x0a, 0x0d, 0x41,
0x22, 0x69, 0x0a, 0x0d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x12, 0x24, 0x0a, 0x0d,
0x71, 0x12, 0x24, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65,
0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49,
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12,
0x1a, 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x0f, 0x41,
0x67, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x12, 0x24,
0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69,
0x6f, 0x6e, 0x49, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x13, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x65,
0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x24, 0x0a, 0x0d,
0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4d, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x6f,
0x0a, 0x07, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x57, 0x6f,
0x07, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x0f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x55,
0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x12, 0x24, 0x0a, 0x0d, 0x55, 0x73, 0x65,
0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x52, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x44, 0x61, 0x9b, 0x01, 0x0a, 0x13, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73,
0x74, 0x61, 0x22, 0x99, 0x01, 0x0a, 0x0f, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x24, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x53,
0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65,
0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e,
0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1a,
0x0a, 0x08, 0x4d, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x08, 0x4d, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75,
0x62, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x75, 0x62,
0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x75,
0x0a, 0x13, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4d, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70,
0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x07, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x44,
0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52,
0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x36, 0x0a, 0x0e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6c,
0x6f, 0x73, 0x65, 0x65, 0x52, 0x65, 0x71, 0x12, 0x24, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x53,
0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x42, 0x06, 0x5a, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a,
0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x08, 0x4d, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x08, 0x4d, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x62,
0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x75, 0x62, 0x54,
0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x99, 0x01,
0x0a, 0x0f, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65,
0x71, 0x12, 0x26, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x53,
0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x69,
0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4d, 0x61, 0x69,
0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65,
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12,
0x28, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
0x41, 0x6e, 0x79, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x75, 0x0a, 0x13, 0x42, 0x72, 0x6f,
0x61, 0x64, 0x43, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71,
0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x08, 0x4d, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07,
0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53,
0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61,
0x22, 0x36, 0x0a, 0x0e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x65, 0x52,
0x65, 0x71, 0x12, 0x24, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f,
0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x53,
0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -715,23 +705,21 @@ var file_comm_proto_goTypes = []interface{}{
(*BatchMessageReq)(nil), // 6: BatchMessageReq (*BatchMessageReq)(nil), // 6: BatchMessageReq
(*BroadCastMessageReq)(nil), // 7: BroadCastMessageReq (*BroadCastMessageReq)(nil), // 7: BroadCastMessageReq
(*AgentCloseeReq)(nil), // 8: AgentCloseeReq (*AgentCloseeReq)(nil), // 8: AgentCloseeReq
(ErrorCode)(0), // 9: ErrorCode (*anypb.Any)(nil), // 9: google.protobuf.Any
(*anypb.Any)(nil), // 10: google.protobuf.Any (ErrorCode)(0), // 10: ErrorCode
} }
var file_comm_proto_depIdxs = []int32{ var file_comm_proto_depIdxs = []int32{
9, // 0: UserMessage.Code:type_name -> ErrorCode 9, // 0: UserMessage.data:type_name -> google.protobuf.Any
10, // 1: UserMessage.data:type_name -> google.protobuf.Any 9, // 1: AgentMessage.Message:type_name -> google.protobuf.Any
10, // 2: AgentMessage.Message:type_name -> google.protobuf.Any 10, // 2: RPCMessageReply.Code:type_name -> ErrorCode
9, // 3: RPCMessageReply.Code:type_name -> ErrorCode 9, // 3: AgentSendMessageReq.Data:type_name -> google.protobuf.Any
9, // 4: AgentSendMessageReq.Code:type_name -> ErrorCode 9, // 4: BatchMessageReq.Data:type_name -> google.protobuf.Any
10, // 5: AgentSendMessageReq.Data:type_name -> google.protobuf.Any 9, // 5: BroadCastMessageReq.Data:type_name -> google.protobuf.Any
10, // 6: BatchMessageReq.Data:type_name -> google.protobuf.Any 6, // [6:6] is the sub-list for method output_type
10, // 7: BroadCastMessageReq.Data:type_name -> google.protobuf.Any 6, // [6:6] is the sub-list for method input_type
8, // [8:8] is the sub-list for method output_type 6, // [6:6] is the sub-list for extension type_name
8, // [8:8] is the sub-list for method input_type 6, // [6:6] is the sub-list for extension extendee
8, // [8:8] is the sub-list for extension type_name 0, // [0:6] is the sub-list for field type_name
8, // [8:8] is the sub-list for extension extendee
0, // [0:8] is the sub-list for field type_name
} }
func init() { file_comm_proto_init() } func init() { file_comm_proto_init() }

View File

@ -25,17 +25,18 @@ type ErrorCode int32
const ( const (
ErrorCode_Success ErrorCode = 0 //成功 ErrorCode_Success ErrorCode = 0 //成功
ErrorCode_NoFindService ErrorCode = 10 //没有找到远程服务器 ErrorCode_NoFindService ErrorCode = 10 //没有找到远程服务器
ErrorCode_RpcFuncExecutionError ErrorCode = 11 //Rpc方法执行错误 ErrorCode_NoFindServiceHandleFunc ErrorCode = 11 //远程服务器未找到执行方法
ErrorCode_CacheReadError ErrorCode = 12 //缓存读取失败 ErrorCode_RpcFuncExecutionError ErrorCode = 12 //Rpc方法执行错误
ErrorCode_SqlExecutionError ErrorCode = 13 //数据库执行错误 ErrorCode_CacheReadError ErrorCode = 13 //缓存读取失败
ErrorCode_ReqParameterError ErrorCode = 14 //请求参数错误 ErrorCode_SqlExecutionError ErrorCode = 14 //数据库执行错误
ErrorCode_SignError ErrorCode = 15 //签名错误 ErrorCode_ReqParameterError ErrorCode = 15 //请求参数错误
ErrorCode_InsufficientPermissions ErrorCode = 16 //权限不足 ErrorCode_SignError ErrorCode = 16 //签名错误
ErrorCode_NoLogin ErrorCode = 17 //未登录 ErrorCode_InsufficientPermissions ErrorCode = 17 //权限不足
ErrorCode_UserSessionNobeing ErrorCode = 18 //用户不存在 ErrorCode_NoLogin ErrorCode = 18 //未登录
ErrorCode_StateInvalid ErrorCode = 21 //无效状态 ErrorCode_UserSessionNobeing ErrorCode = 19 //用户不存在
ErrorCode_DBError ErrorCode = 22 // 数据库操作失败 ErrorCode_StateInvalid ErrorCode = 20 //无效状态
ErrorCode_SystemError ErrorCode = 23 // 通用错误 ErrorCode_DBError ErrorCode = 21 // 数据库操作失败
ErrorCode_SystemError ErrorCode = 22 // 通用错误
//user //user
ErrorCode_SecKeyInvalid ErrorCode = 1000 //秘钥无效 ErrorCode_SecKeyInvalid ErrorCode = 1000 //秘钥无效
ErrorCode_SecKey ErrorCode = 1001 //秘钥格式错误 ErrorCode_SecKey ErrorCode = 1001 //秘钥格式错误
@ -58,17 +59,18 @@ var (
ErrorCode_name = map[int32]string{ ErrorCode_name = map[int32]string{
0: "Success", 0: "Success",
10: "NoFindService", 10: "NoFindService",
11: "RpcFuncExecutionError", 11: "NoFindServiceHandleFunc",
12: "CacheReadError", 12: "RpcFuncExecutionError",
13: "SqlExecutionError", 13: "CacheReadError",
14: "ReqParameterError", 14: "SqlExecutionError",
15: "SignError", 15: "ReqParameterError",
16: "InsufficientPermissions", 16: "SignError",
17: "NoLogin", 17: "InsufficientPermissions",
18: "UserSessionNobeing", 18: "NoLogin",
21: "StateInvalid", 19: "UserSessionNobeing",
22: "DBError", 20: "StateInvalid",
23: "SystemError", 21: "DBError",
22: "SystemError",
1000: "SecKeyInvalid", 1000: "SecKeyInvalid",
1001: "SecKey", 1001: "SecKey",
1100: "FriendNotSelf", 1100: "FriendNotSelf",
@ -86,17 +88,18 @@ var (
ErrorCode_value = map[string]int32{ ErrorCode_value = map[string]int32{
"Success": 0, "Success": 0,
"NoFindService": 10, "NoFindService": 10,
"RpcFuncExecutionError": 11, "NoFindServiceHandleFunc": 11,
"CacheReadError": 12, "RpcFuncExecutionError": 12,
"SqlExecutionError": 13, "CacheReadError": 13,
"ReqParameterError": 14, "SqlExecutionError": 14,
"SignError": 15, "ReqParameterError": 15,
"InsufficientPermissions": 16, "SignError": 16,
"NoLogin": 17, "InsufficientPermissions": 17,
"UserSessionNobeing": 18, "NoLogin": 18,
"StateInvalid": 21, "UserSessionNobeing": 19,
"DBError": 22, "StateInvalid": 20,
"SystemError": 23, "DBError": 21,
"SystemError": 22,
"SecKeyInvalid": 1000, "SecKeyInvalid": 1000,
"SecKey": 1001, "SecKey": 1001,
"FriendNotSelf": 1100, "FriendNotSelf": 1100,
@ -144,42 +147,43 @@ var File_errorcode_proto protoreflect.FileDescriptor
var file_errorcode_proto_rawDesc = []byte{ var file_errorcode_proto_rawDesc = []byte{
0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2a, 0x9d, 0x04, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x6f, 0x2a, 0xba, 0x04, 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, 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, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x10, 0x0a, 0x12,
0x19, 0x0a, 0x15, 0x52, 0x70, 0x63, 0x46, 0x75, 0x6e, 0x63, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x1b, 0x0a, 0x17, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x61, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x10, 0x0b, 0x12, 0x19, 0x0a, 0x15,
0x63, 0x68, 0x65, 0x52, 0x65, 0x61, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x0c, 0x12, 0x15, 0x52, 0x70, 0x63, 0x46, 0x75, 0x6e, 0x63, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e,
0x0a, 0x11, 0x53, 0x71, 0x6c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x61, 0x63, 0x68, 0x65,
0x72, 0x6f, 0x72, 0x10, 0x0d, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x50, 0x61, 0x72, 0x61, 0x52, 0x65, 0x61, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x0d, 0x12, 0x15, 0x0a, 0x11, 0x53,
0x6d, 0x65, 0x74, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x0e, 0x12, 0x0d, 0x0a, 0x09, 0x71, 0x6c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72,
0x53, 0x69, 0x67, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x0f, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x10, 0x0e, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
0x6e, 0x73, 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x0f, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x69, 0x67,
0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x10, 0x10, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x6f, 0x4c, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x10, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x6e, 0x73, 0x75,
0x67, 0x69, 0x6e, 0x10, 0x11, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69,
0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x10, 0x12, 0x12, 0x10, 0x0a, 0x6f, 0x6e, 0x73, 0x10, 0x11, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x6f, 0x4c, 0x6f, 0x67, 0x69, 0x6e,
0x0c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x15, 0x12, 0x10, 0x12, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f,
0x0b, 0x0a, 0x07, 0x44, 0x42, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x16, 0x12, 0x0f, 0x0a, 0x0b, 0x6e, 0x4e, 0x6f, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x10, 0x13, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x74,
0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x17, 0x12, 0x12, 0x0a, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x14, 0x12, 0x0b, 0x0a, 0x07,
0x0d, 0x53, 0x65, 0x63, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0xe8, 0x44, 0x42, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x15, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x79, 0x73,
0x07, 0x12, 0x0b, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x4b, 0x65, 0x79, 0x10, 0xe9, 0x07, 0x12, 0x12, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x16, 0x12, 0x12, 0x0a, 0x0d, 0x53, 0x65,
0x0a, 0x0d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4e, 0x6f, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x10, 0x63, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0xe8, 0x07, 0x12, 0x0b,
0xcc, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x4b, 0x65, 0x79, 0x10, 0xe9, 0x07, 0x12, 0x12, 0x0a, 0x0d, 0x46,
0x4d, 0x61, 0x78, 0x10, 0xcd, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4e, 0x6f, 0x74, 0x53, 0x65, 0x6c, 0x66, 0x10, 0xcc, 0x08, 0x12,
0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x78, 0x10, 0xce, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x12, 0x0a, 0x0d, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x4d, 0x61, 0x78,
0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x10, 0xcd, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x61, 0x72,
0x10, 0xcf, 0x08, 0x12, 0x17, 0x0a, 0x12, 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,
0x67, 0x65, 0x74, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x10, 0xd0, 0x08, 0x12, 0x0e, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x10, 0xcf, 0x08,
0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x59, 0x65, 0x74, 0x10, 0xd1, 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x12, 0x17, 0x0a, 0x12, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x59, 0x65, 0x74, 0x10, 0xd2, 0x4e, 0x6f, 0x44, 0x61, 0x74, 0x61, 0x10, 0xd0, 0x08, 0x12, 0x0e, 0x0a, 0x09, 0x46, 0x72, 0x69,
0x08, 0x12, 0x17, 0x0a, 0x12, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x42, 0x65, 0x6e, 0x64, 0x59, 0x65, 0x74, 0x10, 0xd1, 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x46, 0x72, 0x69,
0x6c, 0x61, 0x63, 0x6b, 0x59, 0x65, 0x74, 0x10, 0xd3, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x46, 0x72, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x59, 0x65, 0x74, 0x10, 0xd2, 0x08, 0x12, 0x17,
0x69, 0x65, 0x6e, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x59, 0x0a, 0x12, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x42, 0x6c, 0x61, 0x63,
0x65, 0x74, 0x10, 0xd4, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x6b, 0x59, 0x65, 0x74, 0x10, 0xd3, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x46, 0x72, 0x69, 0x65, 0x6e,
0x70, 0x70, 0x6c, 0x79, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xd5, 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x59, 0x65, 0x74, 0x10,
0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4d, 0x61, 0x78, 0x10, 0xd6, 0xd4, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c,
0x08, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x79, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xd5, 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x46, 0x72, 0x69,
0x33, 0x65, 0x6e, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4d, 0x61, 0x78, 0x10, 0xd6, 0x08, 0x42, 0x06,
0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (

View File

@ -25,10 +25,10 @@ type DB_FriendData struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
UserId string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId" bson:"_id"` // ID UserId string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty" bson:"_id"` // ID
FriendIds []string `protobuf:"bytes,2,rep,name=friendIds,proto3" json:"friendIds"` //好友ID FriendIds []string `protobuf:"bytes,2,rep,name=friendIds,proto3" json:"friendIds,omitempty"` //好友ID
ApplyIds []string `protobuf:"bytes,3,rep,name=applyIds,proto3" json:"applyIds"` //申请用户ID ApplyIds []string `protobuf:"bytes,3,rep,name=applyIds,proto3" json:"applyIds,omitempty"` //申请用户ID
BlackIds []string `protobuf:"bytes,4,rep,name=blackIds,proto3" json:"blackIds"` //黑名单ID BlackIds []string `protobuf:"bytes,4,rep,name=blackIds,proto3" json:"blackIds,omitempty"` //黑名单ID
} }
func (x *DB_FriendData) Reset() { func (x *DB_FriendData) Reset() {

View File

@ -25,13 +25,13 @@ type FriendBase struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
UserId string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId"` //ID UserId string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"` //ID
NickName string `protobuf:"bytes,2,opt,name=NickName,proto3" json:"NickName"` //昵称 NickName string `protobuf:"bytes,2,opt,name=NickName,proto3" json:"NickName,omitempty"` //昵称
Level int32 `protobuf:"varint,3,opt,name=level,proto3" json:"level"` //等级 Level int32 `protobuf:"varint,3,opt,name=level,proto3" json:"level,omitempty"` //等级
Avatar int32 `protobuf:"varint,4,opt,name=avatar,proto3" json:"avatar"` //头像 Avatar int32 `protobuf:"varint,4,opt,name=avatar,proto3" json:"avatar,omitempty"` //头像
Strength int64 `protobuf:"varint,5,opt,name=strength,proto3" json:"strength"` //战力 Strength int64 `protobuf:"varint,5,opt,name=strength,proto3" json:"strength,omitempty"` //战力
ServerId int32 `protobuf:"varint,6,opt,name=serverId,proto3" json:"serverId"` //服务编号 ServerId int32 `protobuf:"varint,6,opt,name=serverId,proto3" json:"serverId,omitempty"` //服务编号
OfflineTime int64 `protobuf:"varint,7,opt,name=offlineTime,proto3" json:"offlineTime"` //最近一次下线时间 0在线 OfflineTime int64 `protobuf:"varint,7,opt,name=offlineTime,proto3" json:"offlineTime,omitempty"` //最近一次下线时间 0在线
} }
func (x *FriendBase) Reset() { func (x *FriendBase) Reset() {
@ -159,7 +159,7 @@ type FriendListRsp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
List []*FriendBase `protobuf:"bytes,1,rep,name=list,proto3" json:"list"` List []*FriendBase `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
} }
func (x *FriendListRsp) Reset() { func (x *FriendListRsp) Reset() {
@ -207,7 +207,7 @@ type FriendApplyReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId"` //好友ID FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId,omitempty"` //好友ID
} }
func (x *FriendApplyReq) Reset() { func (x *FriendApplyReq) Reset() {
@ -254,8 +254,8 @@ type FriendApplyRsp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
UserId string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId"` //用户ID UserId string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"` //用户ID
FriendId string `protobuf:"bytes,2,opt,name=friendId,proto3" json:"friendId"` //好友ID FriendId string `protobuf:"bytes,2,opt,name=friendId,proto3" json:"friendId,omitempty"` //好友ID
} }
func (x *FriendApplyRsp) Reset() { func (x *FriendApplyRsp) Reset() {
@ -310,7 +310,7 @@ type FriendDelReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId"` //好友ID FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId,omitempty"` //好友ID
} }
func (x *FriendDelReq) Reset() { func (x *FriendDelReq) Reset() {
@ -357,8 +357,8 @@ type FriendDelRsp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId"` //好友ID FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId,omitempty"` //好友ID
UserId string `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId"` //用户ID UserId string `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId,omitempty"` //用户ID
} }
func (x *FriendDelRsp) Reset() { func (x *FriendDelRsp) Reset() {
@ -413,7 +413,7 @@ type FriendAgreeReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FriendIds []string `protobuf:"bytes,1,rep,name=friendIds,proto3" json:"friendIds"` //被同意的用户 FriendIds []string `protobuf:"bytes,1,rep,name=friendIds,proto3" json:"friendIds,omitempty"` //被同意的用户
} }
func (x *FriendAgreeReq) Reset() { func (x *FriendAgreeReq) Reset() {
@ -460,7 +460,7 @@ type FriendAgreeRsp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Num int32 `protobuf:"varint,1,opt,name=Num,proto3" json:"Num"` //操作的数量 Num int32 `protobuf:"varint,1,opt,name=Num,proto3" json:"Num,omitempty"` //操作的数量
} }
func (x *FriendAgreeRsp) Reset() { func (x *FriendAgreeRsp) Reset() {
@ -508,7 +508,7 @@ type FriendRefuseReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FriendIds []string `protobuf:"bytes,1,rep,name=friendIds,proto3" json:"friendIds"` //被拒绝的用户 FriendIds []string `protobuf:"bytes,1,rep,name=friendIds,proto3" json:"friendIds,omitempty"` //被拒绝的用户
} }
func (x *FriendRefuseReq) Reset() { func (x *FriendRefuseReq) Reset() {
@ -555,7 +555,7 @@ type FriendRefuseRsp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Num int32 `protobuf:"varint,1,opt,name=Num,proto3" json:"Num"` //操作的数量 Num int32 `protobuf:"varint,1,opt,name=Num,proto3" json:"Num,omitempty"` //操作的数量
} }
func (x *FriendRefuseRsp) Reset() { func (x *FriendRefuseRsp) Reset() {
@ -641,7 +641,7 @@ type FriendApplyListRsp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
List []*FriendBase `protobuf:"bytes,1,rep,name=list,proto3" json:"list"` List []*FriendBase `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
} }
func (x *FriendApplyListRsp) Reset() { func (x *FriendApplyListRsp) Reset() {
@ -689,7 +689,7 @@ type FriendSearchReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
NickName string `protobuf:"bytes,1,opt,name=nickName,proto3" json:"nickName"` //好友昵称 NickName string `protobuf:"bytes,1,opt,name=nickName,proto3" json:"nickName,omitempty"` //好友昵称
} }
func (x *FriendSearchReq) Reset() { func (x *FriendSearchReq) Reset() {
@ -736,7 +736,7 @@ type FriendSearchRsp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Friend *FriendBase `protobuf:"bytes,1,opt,name=friend,proto3" json:"friend"` Friend *FriendBase `protobuf:"bytes,1,opt,name=friend,proto3" json:"friend,omitempty"`
} }
func (x *FriendSearchRsp) Reset() { func (x *FriendSearchRsp) Reset() {
@ -822,7 +822,7 @@ type FriendBlackListRsp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Friends []*FriendBase `protobuf:"bytes,1,rep,name=friends,proto3" json:"friends"` Friends []*FriendBase `protobuf:"bytes,1,rep,name=friends,proto3" json:"friends,omitempty"`
} }
func (x *FriendBlackListRsp) Reset() { func (x *FriendBlackListRsp) Reset() {
@ -870,7 +870,7 @@ type FriendBlackAddReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId"` FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId,omitempty"`
} }
func (x *FriendBlackAddReq) Reset() { func (x *FriendBlackAddReq) Reset() {
@ -917,8 +917,8 @@ type FriendBlackAddRsp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId"` FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId,omitempty"`
UserId string `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId"` UserId string `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId,omitempty"`
} }
func (x *FriendBlackAddRsp) Reset() { func (x *FriendBlackAddRsp) Reset() {
@ -973,7 +973,7 @@ type FriendDelBlackReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId"` FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId,omitempty"`
} }
func (x *FriendDelBlackReq) Reset() { func (x *FriendDelBlackReq) Reset() {
@ -1020,8 +1020,8 @@ type FriendDelBlackRsp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId"` FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId,omitempty"`
UserId string `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId"` UserId string `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId,omitempty"`
} }
func (x *FriendDelBlackRsp) Reset() { func (x *FriendDelBlackRsp) Reset() {
@ -1076,7 +1076,7 @@ type FriendReceiveReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId"` FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId,omitempty"`
} }
func (x *FriendReceiveReq) Reset() { func (x *FriendReceiveReq) Reset() {
@ -1123,8 +1123,8 @@ type FriendReceiveRsp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId"` FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId,omitempty"`
UserId string `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId"` UserId string `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId,omitempty"`
} }
func (x *FriendReceiveRsp) Reset() { func (x *FriendReceiveRsp) Reset() {
@ -1179,7 +1179,7 @@ type FriendGiveReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId"` FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId,omitempty"`
} }
func (x *FriendGiveReq) Reset() { func (x *FriendGiveReq) Reset() {
@ -1226,8 +1226,8 @@ type FriendGiveRsp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId"` FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId,omitempty"`
UserId string `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId"` UserId string `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId,omitempty"`
} }
func (x *FriendGiveRsp) Reset() { func (x *FriendGiveRsp) Reset() {
@ -1282,7 +1282,7 @@ type FriendTotalReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId"` FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId,omitempty"`
} }
func (x *FriendTotalReq) Reset() { func (x *FriendTotalReq) Reset() {
@ -1329,8 +1329,8 @@ type FriendTotalRsp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId"` FriendId string `protobuf:"bytes,1,opt,name=friendId,proto3" json:"friendId,omitempty"`
Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total"` //好友数量 Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` //好友数量
} }
func (x *FriendTotalRsp) Reset() { func (x *FriendTotalRsp) Reset() {

View File

@ -25,8 +25,8 @@ type MailAttachment struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
ItemId uint32 `protobuf:"varint,1,opt,name=ItemId,proto3" json:"ItemId"` // 道具iD ItemId uint32 `protobuf:"varint,1,opt,name=ItemId,proto3" json:"ItemId,omitempty"` // 道具iD
ItemCount uint32 `protobuf:"varint,2,opt,name=ItemCount,proto3" json:"ItemCount"` // 数量 ItemCount uint32 `protobuf:"varint,2,opt,name=ItemCount,proto3" json:"ItemCount,omitempty"` // 数量
} }
func (x *MailAttachment) Reset() { func (x *MailAttachment) Reset() {
@ -80,15 +80,15 @@ type DB_MailData struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
ObjId string `protobuf:"bytes,1,opt,name=ObjId,proto3" json:"ObjId" bson:"_id"` // ID ObjId string `protobuf:"bytes,1,opt,name=ObjId,proto3" json:"ObjId,omitempty" bson:"_id"` // ID
UserId string `protobuf:"bytes,2,opt,name=UserId,proto3" json:"UserId"` UserId string `protobuf:"bytes,2,opt,name=UserId,proto3" json:"UserId,omitempty"`
Title string `protobuf:"bytes,3,opt,name=Title,proto3" json:"Title"` // 邮件标题 Title string `protobuf:"bytes,3,opt,name=Title,proto3" json:"Title,omitempty"` // 邮件标题
Contex string `protobuf:"bytes,4,opt,name=Contex,proto3" json:"Contex"` // 邮件内容 Contex string `protobuf:"bytes,4,opt,name=Contex,proto3" json:"Contex,omitempty"` // 邮件内容
CreateTime uint64 `protobuf:"varint,5,opt,name=CreateTime,proto3" json:"CreateTime"` // 发送时间 CreateTime uint64 `protobuf:"varint,5,opt,name=CreateTime,proto3" json:"CreateTime,omitempty"` // 发送时间
DueTime uint64 `protobuf:"varint,6,opt,name=DueTime,proto3" json:"DueTime"` // 过期时间 DueTime uint64 `protobuf:"varint,6,opt,name=DueTime,proto3" json:"DueTime,omitempty"` // 过期时间
Check bool `protobuf:"varint,7,opt,name=Check,proto3" json:"Check"` // 是否查看 Check bool `protobuf:"varint,7,opt,name=Check,proto3" json:"Check,omitempty"` // 是否查看
Reward bool `protobuf:"varint,8,opt,name=Reward,proto3" json:"Reward"` // 附件领取状态 Reward bool `protobuf:"varint,8,opt,name=Reward,proto3" json:"Reward,omitempty"` // 附件领取状态
Items []*MailAttachment `protobuf:"bytes,9,rep,name=Items,proto3" json:"Items"` // 附件 Items []*MailAttachment `protobuf:"bytes,9,rep,name=Items,proto3" json:"Items,omitempty"` // 附件
} }
func (x *DB_MailData) Reset() { func (x *DB_MailData) Reset() {

View File

@ -64,7 +64,7 @@ type QueryUserMailResp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Mails []*DB_MailData `protobuf:"bytes,1,rep,name=Mails,proto3" json:"Mails"` Mails []*DB_MailData `protobuf:"bytes,1,rep,name=Mails,proto3" json:"Mails,omitempty"`
} }
func (x *QueryUserMailResp) Reset() { func (x *QueryUserMailResp) Reset() {
@ -112,7 +112,7 @@ type ReadUserMailReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
ObjID string `protobuf:"bytes,1,opt,name=ObjID,proto3" json:"ObjID"` ObjID string `protobuf:"bytes,1,opt,name=ObjID,proto3" json:"ObjID,omitempty"`
} }
func (x *ReadUserMailReq) Reset() { func (x *ReadUserMailReq) Reset() {
@ -159,7 +159,7 @@ type ReadUserMailResp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Mail *DB_MailData `protobuf:"bytes,1,opt,name=Mail,proto3" json:"Mail"` Mail *DB_MailData `protobuf:"bytes,1,opt,name=Mail,proto3" json:"Mail,omitempty"`
} }
func (x *ReadUserMailResp) Reset() { func (x *ReadUserMailResp) Reset() {
@ -207,7 +207,7 @@ type GetUserMailAttachmentReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
ObjID string `protobuf:"bytes,1,opt,name=ObjID,proto3" json:"ObjID"` ObjID string `protobuf:"bytes,1,opt,name=ObjID,proto3" json:"ObjID,omitempty"`
} }
func (x *GetUserMailAttachmentReq) Reset() { func (x *GetUserMailAttachmentReq) Reset() {
@ -254,7 +254,7 @@ type GetUserMailAttachmentResp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Mail *DB_MailData `protobuf:"bytes,1,opt,name=Mail,proto3" json:"Mail"` Mail *DB_MailData `protobuf:"bytes,1,opt,name=Mail,proto3" json:"Mail,omitempty"`
} }
func (x *GetUserMailAttachmentResp) Reset() { func (x *GetUserMailAttachmentResp) Reset() {
@ -302,7 +302,7 @@ type DelUserMailReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
ObjID string `protobuf:"bytes,1,opt,name=ObjID,proto3" json:"ObjID"` ObjID string `protobuf:"bytes,1,opt,name=ObjID,proto3" json:"ObjID,omitempty"`
} }
func (x *DelUserMailReq) Reset() { func (x *DelUserMailReq) Reset() {
@ -349,7 +349,7 @@ type DelUserMailResp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Mail []*DB_MailData `protobuf:"bytes,1,rep,name=Mail,proto3" json:"Mail"` Mail []*DB_MailData `protobuf:"bytes,1,rep,name=Mail,proto3" json:"Mail,omitempty"`
} }
func (x *DelUserMailResp) Reset() { func (x *DelUserMailResp) Reset() {

186
pb/notify_msg.pb.go Normal file
View File

@ -0,0 +1,186 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.28.0
// protoc v3.20.0
// source: notify/notify_msg.proto
package pb
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
//统一错误码返回
type ErrorNotify struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ReqMainType string `protobuf:"bytes,1,opt,name=ReqMainType,proto3" json:"ReqMainType,omitempty"` // 请求协议模块 模块名 例如:user 对应项目中 user的模块
ReqSubType string `protobuf:"bytes,2,opt,name=ReqSubType,proto3" json:"ReqSubType,omitempty"` // 请求协议函数 例如:login 对应项目中 user的模块中 api_login 的处理函数
Code ErrorCode `protobuf:"varint,3,opt,name=Code,proto3,enum=ErrorCode" json:"Code,omitempty"` // 执行返回错误码 对应 errorcode.proto 枚举
Message string `protobuf:"bytes,4,opt,name=Message,proto3" json:"Message,omitempty"` // 错误消息
Data string `protobuf:"bytes,6,opt,name=Data,proto3" json:"Data,omitempty"` // 错误数据
}
func (x *ErrorNotify) Reset() {
*x = ErrorNotify{}
if protoimpl.UnsafeEnabled {
mi := &file_notify_notify_msg_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ErrorNotify) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ErrorNotify) ProtoMessage() {}
func (x *ErrorNotify) ProtoReflect() protoreflect.Message {
mi := &file_notify_notify_msg_proto_msgTypes[0]
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 ErrorNotify.ProtoReflect.Descriptor instead.
func (*ErrorNotify) Descriptor() ([]byte, []int) {
return file_notify_notify_msg_proto_rawDescGZIP(), []int{0}
}
func (x *ErrorNotify) GetReqMainType() string {
if x != nil {
return x.ReqMainType
}
return ""
}
func (x *ErrorNotify) GetReqSubType() string {
if x != nil {
return x.ReqSubType
}
return ""
}
func (x *ErrorNotify) GetCode() ErrorCode {
if x != nil {
return x.Code
}
return ErrorCode_Success
}
func (x *ErrorNotify) GetMessage() string {
if x != nil {
return x.Message
}
return ""
}
func (x *ErrorNotify) GetData() string {
if x != nil {
return x.Data
}
return ""
}
var File_notify_notify_msg_proto protoreflect.FileDescriptor
var file_notify_notify_msg_proto_rawDesc = []byte{
0x0a, 0x17, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f,
0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72,
0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9d, 0x01, 0x0a, 0x0b, 0x45,
0x72, 0x72, 0x6f, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65,
0x71, 0x4d, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0b, 0x52, 0x65, 0x71, 0x4d, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a,
0x52, 0x65, 0x71, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0a, 0x52, 0x65, 0x71, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x04,
0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x45, 0x72, 0x72,
0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07,
0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4d,
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x06,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b,
0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_notify_notify_msg_proto_rawDescOnce sync.Once
file_notify_notify_msg_proto_rawDescData = file_notify_notify_msg_proto_rawDesc
)
func file_notify_notify_msg_proto_rawDescGZIP() []byte {
file_notify_notify_msg_proto_rawDescOnce.Do(func() {
file_notify_notify_msg_proto_rawDescData = protoimpl.X.CompressGZIP(file_notify_notify_msg_proto_rawDescData)
})
return file_notify_notify_msg_proto_rawDescData
}
var file_notify_notify_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_notify_notify_msg_proto_goTypes = []interface{}{
(*ErrorNotify)(nil), // 0: ErrorNotify
(ErrorCode)(0), // 1: ErrorCode
}
var file_notify_notify_msg_proto_depIdxs = []int32{
1, // 0: ErrorNotify.Code:type_name -> ErrorCode
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_notify_notify_msg_proto_init() }
func file_notify_notify_msg_proto_init() {
if File_notify_notify_msg_proto != nil {
return
}
file_errorcode_proto_init()
if !protoimpl.UnsafeEnabled {
file_notify_notify_msg_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ErrorNotify); 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{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_notify_notify_msg_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_notify_notify_msg_proto_goTypes,
DependencyIndexes: file_notify_notify_msg_proto_depIdxs,
MessageInfos: file_notify_notify_msg_proto_msgTypes,
}.Build()
File_notify_notify_msg_proto = out.File
file_notify_notify_msg_proto_rawDesc = nil
file_notify_notify_msg_proto_goTypes = nil
file_notify_notify_msg_proto_depIdxs = nil
}

View File

@ -26,14 +26,14 @@ type DB_UserItemData struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
GridId string `protobuf:"bytes,1,opt,name=GridId,proto3" json:"GridId"` //背包格子Id GridId string `protobuf:"bytes,1,opt,name=GridId,proto3" json:"GridId,omitempty"` //背包格子Id
UId string `protobuf:"bytes,2,opt,name=UId,proto3" json:"UId"` //用户id UId string `protobuf:"bytes,2,opt,name=UId,proto3" json:"UId,omitempty"` //用户id
IsEmpty bool `protobuf:"varint,3,opt,name=IsEmpty,proto3" json:"IsEmpty"` //是否是空格子 IsEmpty bool `protobuf:"varint,3,opt,name=IsEmpty,proto3" json:"IsEmpty,omitempty"` //是否是空格子
ItemId int32 `protobuf:"varint,4,opt,name=ItemId,proto3" json:"ItemId"` //存放物品的Id ItemId int32 `protobuf:"varint,4,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //存放物品的Id
Amount uint32 `protobuf:"varint,5,opt,name=Amount,proto3" json:"Amount"` //存放物品的数量 Amount uint32 `protobuf:"varint,5,opt,name=Amount,proto3" json:"Amount,omitempty"` //存放物品的数量
CTime int64 `protobuf:"varint,6,opt,name=CTime,proto3" json:"CTime"` //物品获取时间 CTime int64 `protobuf:"varint,6,opt,name=CTime,proto3" json:"CTime,omitempty"` //物品获取时间
ETime int64 `protobuf:"varint,7,opt,name=ETime,proto3" json:"ETime"` //物品过期时间 ETime int64 `protobuf:"varint,7,opt,name=ETime,proto3" json:"ETime,omitempty"` //物品过期时间
IsNewItem bool `protobuf:"varint,8,opt,name=IsNewItem,proto3" json:"IsNewItem"` //是否是新的 IsNewItem bool `protobuf:"varint,8,opt,name=IsNewItem,proto3" json:"IsNewItem,omitempty"` //是否是新的
} }
func (x *DB_UserItemData) Reset() { func (x *DB_UserItemData) Reset() {

View File

@ -26,7 +26,7 @@ type GetlistReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
IType int32 `protobuf:"varint,1,opt,name=IType,proto3" json:"IType"` //道具类型 IType int32 `protobuf:"varint,1,opt,name=IType,proto3" json:"IType,omitempty"` //道具类型
} }
func (x *GetlistReq) Reset() { func (x *GetlistReq) Reset() {
@ -74,7 +74,7 @@ type GetlistResp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Grids []*DB_UserItemData `protobuf:"bytes,1,rep,name=Grids,proto3" json:"Grids"` //用户背包列表 Grids []*DB_UserItemData `protobuf:"bytes,1,rep,name=Grids,proto3" json:"Grids,omitempty"` //用户背包列表
} }
func (x *GetlistResp) Reset() { func (x *GetlistResp) Reset() {
@ -122,9 +122,9 @@ type UseItemReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
GridId int32 `protobuf:"varint,1,opt,name=GridId,proto3" json:"GridId"` //格子Id GridId int32 `protobuf:"varint,1,opt,name=GridId,proto3" json:"GridId,omitempty"` //格子Id
ItemId int32 `protobuf:"varint,2,opt,name=ItemId,proto3" json:"ItemId"` //物品Id ItemId int32 `protobuf:"varint,2,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //物品Id
Amount uint32 `protobuf:"varint,3,opt,name=Amount,proto3" json:"Amount"` //使用数量 Amount uint32 `protobuf:"varint,3,opt,name=Amount,proto3" json:"Amount,omitempty"` //使用数量
} }
func (x *UseItemReq) Reset() { func (x *UseItemReq) Reset() {
@ -225,9 +225,9 @@ type SellItemReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
GridId int32 `protobuf:"varint,1,opt,name=GridId,proto3" json:"GridId"` //格子Id GridId int32 `protobuf:"varint,1,opt,name=GridId,proto3" json:"GridId,omitempty"` //格子Id
ItemId int32 `protobuf:"varint,2,opt,name=ItemId,proto3" json:"ItemId"` //物品Id ItemId int32 `protobuf:"varint,2,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //物品Id
Amount uint32 `protobuf:"varint,3,opt,name=Amount,proto3" json:"Amount"` //使用数量 Amount uint32 `protobuf:"varint,3,opt,name=Amount,proto3" json:"Amount,omitempty"` //使用数量
} }
func (x *SellItemReq) Reset() { func (x *SellItemReq) Reset() {

View File

@ -5,10 +5,9 @@ import "google/protobuf/any.proto";
// //
message UserMessage { message UserMessage {
string MainType =1; string MainType =1; // :user user的模块
string SubType = 2; string SubType = 2; // :login user的模块中 api_login
ErrorCode Code = 3; google.protobuf.Any data = 3;
google.protobuf.Any data = 4;
} }
// //
@ -24,7 +23,8 @@ message AgentMessage {
//RPC //RPC
message RPCMessageReply { message RPCMessageReply {
ErrorCode Code = 1; ErrorCode Code = 1;
string Msg = 2; string Message = 2;
string Data = 3;
} }
//Uid请求 //Uid请求
@ -43,8 +43,7 @@ message AgentSendMessageReq {
string UserSessionId = 1; string UserSessionId = 1;
string MainType = 2; string MainType = 2;
string SubType = 3; string SubType = 3;
ErrorCode Code = 4; google.protobuf.Any Data = 4;
google.protobuf.Any Data = 5;
} }
// //

View File

@ -5,17 +5,18 @@ option go_package = ".;pb";
enum ErrorCode { enum ErrorCode {
Success = 0; // Success = 0; //
NoFindService = 10; // NoFindService = 10; //
RpcFuncExecutionError = 11; //Rpc方法执行错误 NoFindServiceHandleFunc = 11; //
CacheReadError = 12; // RpcFuncExecutionError = 12; //Rpc方法执行错误
SqlExecutionError = 13; // CacheReadError = 13; //
ReqParameterError = 14; // SqlExecutionError = 14; //
SignError = 15; // ReqParameterError = 15; //
InsufficientPermissions = 16; // SignError = 16; //
NoLogin = 17; // InsufficientPermissions = 17; //
UserSessionNobeing = 18; // NoLogin = 18; //
StateInvalid = 21; // UserSessionNobeing = 19; //
DBError = 22; // StateInvalid = 20; //
SystemError = 23; // DBError = 21; //
SystemError = 22; //
//user //user
SecKeyInvalid = 1000; // SecKeyInvalid = 1000; //

View File

@ -0,0 +1,12 @@
syntax = "proto3";
option go_package = ".;pb";
import "errorcode.proto";
//
message ErrorNotify {
string ReqMainType =1; // :user user的模块
string ReqSubType = 2; // :login user的模块中 api_login
ErrorCode Code = 3; // errorcode.proto
string Message = 4; //
string Data = 6; //
}

View File

@ -25,9 +25,9 @@ type Cache_UserData struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"` Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"`
SessionId string `protobuf:"bytes,2,opt,name=SessionId,proto3" json:"SessionId"` SessionId string `protobuf:"bytes,2,opt,name=SessionId,proto3" json:"SessionId,omitempty"`
GatewayServiceId string `protobuf:"bytes,3,opt,name=GatewayServiceId,proto3" json:"GatewayServiceId"` // DB_UserData UserData = 4; GatewayServiceId string `protobuf:"bytes,3,opt,name=GatewayServiceId,proto3" json:"GatewayServiceId,omitempty"` // DB_UserData UserData = 4;
} }
func (x *Cache_UserData) Reset() { func (x *Cache_UserData) Reset() {
@ -88,18 +88,18 @@ type DB_UserData struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` // ID Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty" bson:"_id"` // ID
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"` Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"`
Uuid string `protobuf:"bytes,3,opt,name=uuid,proto3" json:"uuid"` //玩家唯一uuid Uuid string `protobuf:"bytes,3,opt,name=uuid,proto3" json:"uuid,omitempty"` //玩家唯一uuid
Binduid string `protobuf:"bytes,4,opt,name=binduid,proto3" json:"binduid"` //玩家账号 Binduid string `protobuf:"bytes,4,opt,name=binduid,proto3" json:"binduid,omitempty"` //玩家账号
Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name"` //玩家名 Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` //玩家名
Sid int32 `protobuf:"varint,6,opt,name=sid,proto3" json:"sid"` //区服id Sid int32 `protobuf:"varint,6,opt,name=sid,proto3" json:"sid,omitempty"` //区服id
Createip string `protobuf:"bytes,7,opt,name=createip,proto3" json:"createip"` //创建账号时的ip Createip string `protobuf:"bytes,7,opt,name=createip,proto3" json:"createip,omitempty"` //创建账号时的ip
Lastloginip string `protobuf:"bytes,8,opt,name=lastloginip,proto3" json:"lastloginip"` //最后一次登录时的ip Lastloginip string `protobuf:"bytes,8,opt,name=lastloginip,proto3" json:"lastloginip,omitempty"` //最后一次登录时的ip
Ctime int64 `protobuf:"varint,9,opt,name=ctime,proto3" json:"ctime"` //玩家创号时间戳 Ctime int64 `protobuf:"varint,9,opt,name=ctime,proto3" json:"ctime,omitempty"` //玩家创号时间戳
Logintime int64 `protobuf:"varint,10,opt,name=logintime,proto3" json:"logintime"` //最后一次登录时间 Logintime int64 `protobuf:"varint,10,opt,name=logintime,proto3" json:"logintime,omitempty"` //最后一次登录时间
FriendPoint int32 `protobuf:"varint,11,opt,name=FriendPoint,proto3" json:"FriendPoint"` //友情点 FriendPoint int32 `protobuf:"varint,11,opt,name=FriendPoint,proto3" json:"FriendPoint,omitempty"` //友情点
Avatar int32 `protobuf:"varint,12,opt,name=avatar,proto3" json:"avatar"` //头像 Avatar int32 `protobuf:"varint,12,opt,name=avatar,proto3" json:"avatar,omitempty"` //头像
} }
func (x *DB_UserData) Reset() { func (x *DB_UserData) Reset() {

View File

@ -26,7 +26,7 @@ type UserLoginReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Sec string `protobuf:"bytes,1,opt,name=sec,proto3" json:"sec"` //密文 Sec string `protobuf:"bytes,1,opt,name=sec,proto3" json:"sec,omitempty"` //密文
} }
func (x *UserLoginReq) Reset() { func (x *UserLoginReq) Reset() {
@ -73,7 +73,7 @@ type UserLoginResp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Data *Cache_UserData `protobuf:"bytes,1,opt,name=data,proto3" json:"data"` Data *Cache_UserData `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
} }
func (x *UserLoginResp) Reset() { func (x *UserLoginResp) Reset() {
@ -120,7 +120,7 @@ type UserRegisterReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account"` Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"`
} }
func (x *UserRegisterReq) Reset() { func (x *UserRegisterReq) Reset() {
@ -167,8 +167,8 @@ type UserRegisterRsp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Code ErrorCode `protobuf:"varint,1,opt,name=Code,proto3,enum=ErrorCode" json:"Code"` Code ErrorCode `protobuf:"varint,1,opt,name=Code,proto3,enum=ErrorCode" json:"Code,omitempty"`
Account string `protobuf:"bytes,2,opt,name=account,proto3" json:"account"` Account string `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"`
} }
func (x *UserRegisterRsp) Reset() { func (x *UserRegisterRsp) Reset() {
@ -222,7 +222,7 @@ type UserLoadRsp struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Data *Cache_UserData `protobuf:"bytes,1,opt,name=data,proto3" json:"data"` Data *Cache_UserData `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
} }
func (x *UserLoadRsp) Reset() { func (x *UserLoadRsp) Reset() {
@ -270,7 +270,7 @@ type UserCreateReq struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
NickName string `protobuf:"bytes,1,opt,name=NickName,proto3" json:"NickName"` //昵称 NickName string `protobuf:"bytes,1,opt,name=NickName,proto3" json:"NickName,omitempty"` //昵称
} }
func (x *UserCreateReq) Reset() { func (x *UserCreateReq) Reset() {

View File

@ -7,11 +7,14 @@ import (
"reflect" "reflect"
"sync" "sync"
jsoniter "github.com/json-iterator/go"
"go_dreamfactory/lego/base" "go_dreamfactory/lego/base"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/lego/core/cbase" "go_dreamfactory/lego/core/cbase"
"go_dreamfactory/lego/sys/event" "go_dreamfactory/lego/sys/event"
"go_dreamfactory/lego/sys/log" "go_dreamfactory/lego/sys/log"
"go_dreamfactory/lego/utils/codec"
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
"github.com/golang/protobuf/ptypes" "github.com/golang/protobuf/ptypes"
@ -128,16 +131,32 @@ func (this *SComp_GateRouteComp) ReceiveMsg(ctx context.Context, args *pb.AgentM
} }
returnValues := msgcheck.fn.Func.Call([]reflect.Value{msgcheck.rcvr, reflect.ValueOf(session), reflect.ValueOf(msg)}) returnValues := msgcheck.fn.Func.Call([]reflect.Value{msgcheck.rcvr, reflect.ValueOf(session), reflect.ValueOf(msg)})
// The return value for the method is an error. // The return value for the method is an error.
code := returnValues[1].Int() code := returnValues[1].Interface().(comm.ErrorCode)
if pb.ErrorCode(code) != pb.ErrorCode_Success { if code.Code != pb.ErrorCode_Success {
log.Errorf("HandleUserMsg:%s msg:%v code:%d", args.Method, msg, code) log.Errorf("HandleUserMsg:%s msg:%v code:%d", args.Method, msg, code)
reply.Code = code.Code
reply.Message = pb.GetErrorCodeMsg(code.Code)
if code.Data != nil {
if d, err := jsoniter.Marshal(code.Data); err != nil {
log.Errorf("HandleUserMsg:%s msg:%v code:%d err:%v", args.Method, msg, code, err)
return nil
} else {
reply.Data = codec.BytesToString(d)
}
}
return nil return nil
} }
result := returnValues[0].Interface().(map[string]interface{}) result := returnValues[0].Interface().(map[string]interface{})
msghandle.fn.Func.Call([]reflect.Value{msghandle.rcvr, reflect.ValueOf(session), reflect.ValueOf(result), reflect.ValueOf(msg)}) returnValues = msghandle.fn.Func.Call([]reflect.Value{msghandle.rcvr, reflect.ValueOf(session), reflect.ValueOf(result), reflect.ValueOf(msg)})
errcode := pb.ErrorCode(returnValues[1].Int())
if errcode != pb.ErrorCode_Success {
log.Errorf("HandleUserMsg:%s msg:%v code:%d", args.Method, msg, code)
reply.Code = errcode
reply.Message = pb.GetErrorCodeMsg(errcode)
return nil
}
} else { } else {
reply.Code = pb.ErrorCode_ReqParameterError reply.Code = pb.ErrorCode_ReqParameterError
// reply.Msg = pb.GetErrorCodeMsg(pb.ErrorCode_ReqParameterError)
} }
return nil return nil
} }

102
sys/cache/init_test.go vendored
View File

@ -2,16 +2,19 @@ package cache_test
import ( import (
"fmt" "fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/cache" "go_dreamfactory/sys/cache"
"go_dreamfactory/sys/db" "go_dreamfactory/sys/db"
"os" "os"
"reflect"
"testing" "testing"
"time"
"go_dreamfactory/utils" "go_dreamfactory/utils"
"github.com/stretchr/testify/require" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
) )
//测试环境下初始化db和cache 系统 //测试环境下初始化db和cache 系统
@ -24,36 +27,68 @@ func TestMain(m *testing.M) {
fmt.Printf("err:%v\n", err) fmt.Printf("err:%v\n", err)
return return
} }
// for i := 0; i < 50000; i++ { for i := 0; i < 50000; i++ {
// //go func() { //go func() {
// _mail := &pb.DB_MailData{ _mail := &pb.DB_MailData{
// ObjId: primitive.NewObjectID().Hex(), ObjId: primitive.NewObjectID().Hex(),
// UserId: "uid123", UserId: "uid123",
// Title: "系统邮件", Title: "系统邮件",
// Contex: "恭喜获得专属礼包一份", Contex: "恭喜获得专属礼包一份",
// CreateTime: uint64(time.Now().Unix()), CreateTime: uint64(time.Now().Unix()),
// DueTime: uint64(time.Now().Unix()) + 30*24*3600, DueTime: uint64(time.Now().Unix()) + 30*24*3600,
// Check: false, Check: false,
// Reward: false, Reward: false,
// } }
// //db.InsertModelLogs("mail", "uid123", _mail) //db.InsertModelLogs("mail", "uid123", _mail)
// //InsertModelLogs("mail", "uid123", _mail) db.Defsys.Mgo().InsertOne("mail", _mail)
// data := &comm.Autogenerated{ data := &comm.Autogenerated{
// ID: primitive.NewObjectID().Hex(), ID: primitive.NewObjectID().Hex(),
// UID: "uid123", UID: "uid123",
// Act: string(comm.LogHandleType_Insert), Act: string(comm.LogHandleType_Insert),
// } }
// data.D = append(data.D, "mail") // D[0] data.D = append(data.D, "mail") // D[0]
// data.D = append(data.D, _mail) // D[1] data.D = append(data.D, _mail) // D[1]
// _, err1 := db.Defsys.Mgo().InsertOne("model_log", data) _, err1 := db.Defsys.Mgo().InsertOne("model_log", data)
// if err1 != nil { if err1 != nil {
// log.Errorf("insert model db err %v", err1) log.Errorf("insert model db err %v", err1)
// } }
// //}() //}()
// }
// time.Sleep(time.Second * 10) ///////////////////////////////////////
filter := bson.M{
"userid": "uid123",
"title": "系统邮件",
}
var nd *pb.DB_MailData
err := db.Defsys.Mgo().FindOne("mail", filter).Decode(&nd)
if err == nil {
nd.Check = true
nd.Reward = true
data1 := &comm.Autogenerated{
ID: primitive.NewObjectID().Hex(),
UID: "uid123",
Act: string(comm.LogHandleType_Update),
}
filter1 := bson.M{
"userid": "uid123",
"title": "系统邮件",
}
data1.D = make([]interface{}, 0)
data1.D = append(data1.D, "mail") // D[0]
data1.D = append(data1.D, &filter1) // D[1]
data1.D = append(data1.D, nd) // D[2]
_, err = db.Defsys.Mgo().InsertOne("model_log", data1)
if err != nil {
log.Errorf("insert model db err %v", err)
}
}
}
time.Sleep(time.Second * 10)
defer os.Exit(m.Run()) defer os.Exit(m.Run())
@ -76,10 +111,3 @@ func TestSet(t *testing.T) {
cache.Redis().HMSet("friend:222", data) cache.Redis().HMSet("friend:222", data)
} }
func TestGet(t *testing.T) {
result, err := cache.Redis().HGetAll("111", reflect.TypeOf(map[string]interface{}{}))
require.Nil(t, err)
fmt.Println(result...)
}