Commit 29a163bec708a503440123dd6cbdb0b580aed793
1 parent
0ce6c418
fix: CreateReq uid->token; random name
Showing
17 changed files
with
213 additions
and
50 deletions
Show diff stats
.gitignore
cmd/gameserver/action/RoleAction.go
1 | package action | 1 | package action |
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | + "fmt" | ||
4 | "github.com/golang/protobuf/proto" | 5 | "github.com/golang/protobuf/proto" |
5 | "pro2d/common" | 6 | "pro2d/common" |
6 | "pro2d/common/components" | 7 | "pro2d/common/components" |
8 | + "pro2d/common/db/redisproxy" | ||
7 | "pro2d/common/logger" | 9 | "pro2d/common/logger" |
8 | "pro2d/models" | 10 | "pro2d/models" |
9 | "pro2d/pb" | 11 | "pro2d/pb" |
@@ -14,19 +16,39 @@ func HeartRpc(msg components.IMessage) (int32, interface{}) { | @@ -14,19 +16,39 @@ func HeartRpc(msg components.IMessage) (int32, interface{}) { | ||
14 | return 0, nil | 16 | return 0, nil |
15 | } | 17 | } |
16 | 18 | ||
19 | +func getRandomName() string { | ||
20 | + name := "" | ||
21 | + for { | ||
22 | + name = common.RandomName(common.DefaultName) | ||
23 | + if name == "" { | ||
24 | + continue | ||
25 | + } | ||
26 | + | ||
27 | + relay, err := redisproxy.SETNX(fmt.Sprintf(common.NickNames, name), "1") | ||
28 | + if err != nil { | ||
29 | + continue | ||
30 | + } | ||
31 | + if relay.(int64) == 1 { | ||
32 | + break | ||
33 | + } | ||
34 | + } | ||
35 | + return name | ||
36 | +} | ||
37 | + | ||
17 | func CreateRpc(msg components.IMessage) (int32, interface{}) { | 38 | func CreateRpc(msg components.IMessage) (int32, interface{}) { |
18 | req := pb.CreateReq{} | 39 | req := pb.CreateReq{} |
19 | if err := proto.Unmarshal(msg.GetData(), &req); err != nil { | 40 | if err := proto.Unmarshal(msg.GetData(), &req); err != nil { |
20 | logger.Error("CreateRpc err: %v", err) | 41 | logger.Error("CreateRpc err: %v", err) |
21 | return 1, nil | 42 | return 1, nil |
22 | } | 43 | } |
23 | - role := models.RoleExistByUid(req.Uid) | 44 | + role := models.RoleExistByUid(req.Token) |
24 | if role != nil { | 45 | if role != nil { |
25 | return 2, nil | 46 | return 2, nil |
26 | } | 47 | } |
27 | 48 | ||
28 | roleId := common.SnowFlack.NextValStr() | 49 | roleId := common.SnowFlack.NextValStr() |
29 | role = models.NewRole(roleId) | 50 | role = models.NewRole(roleId) |
51 | + role.Role.Nick = getRandomName() | ||
30 | if err := role.Create(); err != nil { | 52 | if err := role.Create(); err != nil { |
31 | logger.Error("CreateRpc role create err: %v", err) | 53 | logger.Error("CreateRpc role create err: %v", err) |
32 | return 3, nil | 54 | return 3, nil |
@@ -0,0 +1,22 @@ | @@ -0,0 +1,22 @@ | ||
1 | +package action | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "math/rand" | ||
6 | + "pro2d/common" | ||
7 | + "pro2d/common/db/redisproxy" | ||
8 | + "pro2d/common/logger" | ||
9 | + "testing" | ||
10 | +) | ||
11 | + | ||
12 | +func TestGetActionMap(t *testing.T) { | ||
13 | + rand.Seed(common.Timex()) | ||
14 | + | ||
15 | + var redisConf = common.GlobalConf.GameConf.RedisConf | ||
16 | + if err := redisproxy.ConnectRedis(redisConf.DB, redisConf.Auth, redisConf.Address); err != nil { | ||
17 | + logger.Error(err) | ||
18 | + return | ||
19 | + } | ||
20 | + name := getRandomName() | ||
21 | + fmt.Println(name) | ||
22 | +} |
cmd/gameserver/agent.go
@@ -9,7 +9,6 @@ import ( | @@ -9,7 +9,6 @@ import ( | ||
9 | "pro2d/common/logger" | 9 | "pro2d/common/logger" |
10 | "pro2d/models" | 10 | "pro2d/models" |
11 | "pro2d/pb" | 11 | "pro2d/pb" |
12 | - "pro2d/utils" | ||
13 | "sync" | 12 | "sync" |
14 | "sync/atomic" | 13 | "sync/atomic" |
15 | ) | 14 | ) |
@@ -31,7 +30,7 @@ func NewAgent(s components.IServer) *Agent { | @@ -31,7 +30,7 @@ func NewAgent(s components.IServer) *Agent { | ||
31 | a.Server = s | 30 | a.Server = s |
32 | 31 | ||
33 | a.nextCheckTime = 0 | 32 | a.nextCheckTime = 0 |
34 | - a.lastHeartCheckTime = utils.Timex() | 33 | + a.lastHeartCheckTime = common.Timex() |
35 | a.heartTimeoutCount= 0 | 34 | a.heartTimeoutCount= 0 |
36 | return a | 35 | return a |
37 | } | 36 | } |
@@ -65,7 +64,7 @@ func (c *Agent) OnLogin(msg components.IMessage) { | @@ -65,7 +64,7 @@ func (c *Agent) OnLogin(msg components.IMessage) { | ||
65 | } | 64 | } |
66 | 65 | ||
67 | func (c *Agent) OnMessage(msg components.IMessage) { | 66 | func (c *Agent) OnMessage(msg components.IMessage) { |
68 | - atomic.StoreInt64(&c.lastHeartCheckTime, utils.Timex()) | 67 | + atomic.StoreInt64(&c.lastHeartCheckTime, common.Timex()) |
69 | 68 | ||
70 | if msg.GetHeader().GetMsgID() == uint32(pb.ProtoCode_LoginReq) { | 69 | if msg.GetHeader().GetMsgID() == uint32(pb.ProtoCode_LoginReq) { |
71 | c.OnLogin(msg) | 70 | c.OnLogin(msg) |
@@ -98,7 +97,7 @@ func (c *Agent) OnMessage(msg components.IMessage) { | @@ -98,7 +97,7 @@ func (c *Agent) OnMessage(msg components.IMessage) { | ||
98 | 97 | ||
99 | func (c *Agent) OnTimer() { | 98 | func (c *Agent) OnTimer() { |
100 | nextCheckTime := atomic.LoadInt64(&c.nextCheckTime) | 99 | nextCheckTime := atomic.LoadInt64(&c.nextCheckTime) |
101 | - now := utils.Timex() | 100 | + now := common.Timex() |
102 | if now >= nextCheckTime { | 101 | if now >= nextCheckTime { |
103 | //检查心跳 | 102 | //检查心跳 |
104 | c.checkHeartBeat(now) | 103 | c.checkHeartBeat(now) |
cmd/gameserver/game.go
@@ -2,12 +2,15 @@ package main | @@ -2,12 +2,15 @@ package main | ||
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | "fmt" | 4 | "fmt" |
5 | + "math/rand" | ||
5 | _ "net/http/pprof" | 6 | _ "net/http/pprof" |
6 | "pro2d/cmd/gameserver/action" | 7 | "pro2d/cmd/gameserver/action" |
7 | "pro2d/common" | 8 | "pro2d/common" |
8 | "pro2d/common/components" | 9 | "pro2d/common/components" |
9 | "pro2d/common/db/mongoproxy" | 10 | "pro2d/common/db/mongoproxy" |
11 | + "pro2d/common/db/redisproxy" | ||
10 | "pro2d/models" | 12 | "pro2d/models" |
13 | + "time" | ||
11 | 14 | ||
12 | "pro2d/common/etcd" | 15 | "pro2d/common/etcd" |
13 | ) | 16 | ) |
@@ -40,6 +43,11 @@ func NewGameServer(sconf *common.SConf) (*GameServer, error) { | @@ -40,6 +43,11 @@ func NewGameServer(sconf *common.SConf) (*GameServer, error) { | ||
40 | } | 43 | } |
41 | models.InitGameModels() | 44 | models.InitGameModels() |
42 | 45 | ||
46 | + //redis init | ||
47 | + if err = redisproxy.ConnectRedis(sconf.RedisConf.DB, sconf.RedisConf.Auth, sconf.RedisConf.Address); err != nil { | ||
48 | + return nil, err | ||
49 | + } | ||
50 | + | ||
43 | //Etcd 初始化 | 51 | //Etcd 初始化 |
44 | s.EtcdClient, err = etcd.NewEtcdClient(common.GlobalConf.Etcd) | 52 | s.EtcdClient, err = etcd.NewEtcdClient(common.GlobalConf.Etcd) |
45 | if err != nil { | 53 | if err != nil { |
@@ -51,6 +59,9 @@ func NewGameServer(sconf *common.SConf) (*GameServer, error) { | @@ -51,6 +59,9 @@ func NewGameServer(sconf *common.SConf) (*GameServer, error) { | ||
51 | } | 59 | } |
52 | 60 | ||
53 | func (s *GameServer) Start() error { | 61 | func (s *GameServer) Start() error { |
62 | + //设置随机种子 | ||
63 | + rand.Seed(time.Now().Unix()) | ||
64 | + | ||
54 | return s.IServer.Start() | 65 | return s.IServer.Start() |
55 | } | 66 | } |
56 | 67 | ||
@@ -58,6 +69,7 @@ func (s *GameServer) Stop() { | @@ -58,6 +69,7 @@ func (s *GameServer) Stop() { | ||
58 | s.IServer.Stop() | 69 | s.IServer.Stop() |
59 | 70 | ||
60 | mongoproxy.CloseMongo() | 71 | mongoproxy.CloseMongo() |
72 | + redisproxy.CloseRedis() | ||
61 | s.EtcdClient.Close() | 73 | s.EtcdClient.Close() |
62 | } | 74 | } |
63 | 75 |
cmd/httpserver/AccountAction.go
@@ -5,7 +5,6 @@ import ( | @@ -5,7 +5,6 @@ import ( | ||
5 | "pro2d/common" | 5 | "pro2d/common" |
6 | "pro2d/models" | 6 | "pro2d/models" |
7 | "pro2d/pb" | 7 | "pro2d/pb" |
8 | - "pro2d/utils" | ||
9 | ) | 8 | ) |
10 | 9 | ||
11 | type AccountAction struct { | 10 | type AccountAction struct { |
@@ -28,7 +27,7 @@ func (h *AccountAction) Register(c *gin.Context) (int, interface{}){ | @@ -28,7 +27,7 @@ func (h *AccountAction) Register(c *gin.Context) (int, interface{}){ | ||
28 | } | 27 | } |
29 | 28 | ||
30 | account.Uid = common.SnowFlack.NextValStr() | 29 | account.Uid = common.SnowFlack.NextValStr() |
31 | - account.Password = utils.Md5V(register.Password) | 30 | + account.Password = common.Md5V(register.Password) |
32 | if err := account.Create(); err != nil{ | 31 | if err := account.Create(); err != nil{ |
33 | return 4, "account register err: " + err.Error() | 32 | return 4, "account register err: " + err.Error() |
34 | } | 33 | } |
@@ -46,7 +45,7 @@ func (h *AccountAction) Login(c *gin.Context) (int,interface{}) { | @@ -46,7 +45,7 @@ func (h *AccountAction) Login(c *gin.Context) (int,interface{}) { | ||
46 | return 2, err.Error() | 45 | return 2, err.Error() |
47 | } | 46 | } |
48 | 47 | ||
49 | - if utils.Md5V(login.Password) != account.Password { | 48 | + if common.Md5V(login.Password) != account.Password { |
50 | return 3, "password error" | 49 | return 3, "password error" |
51 | } | 50 | } |
52 | 51 |
common/conf.go
@@ -38,6 +38,7 @@ type SConf struct { | @@ -38,6 +38,7 @@ type SConf struct { | ||
38 | Port int `yaml:"port"` | 38 | Port int `yaml:"port"` |
39 | DebugPort int `yaml:"debugport"` | 39 | DebugPort int `yaml:"debugport"` |
40 | MongoConf *MongoConf `yaml:"mongo"` | 40 | MongoConf *MongoConf `yaml:"mongo"` |
41 | + RedisConf *RedisConf `yaml:"redis"` | ||
41 | WorkerPoolSize int `yaml:"pool_size"` | 42 | WorkerPoolSize int `yaml:"pool_size"` |
42 | PluginPath string `yaml:"plugin_path"` | 43 | PluginPath string `yaml:"plugin_path"` |
43 | } | 44 | } |
@@ -85,7 +86,6 @@ type ServerConf struct { | @@ -85,7 +86,6 @@ type ServerConf struct { | ||
85 | DatacenterID int64 `yaml:"datacenterid"` | 86 | DatacenterID int64 `yaml:"datacenterid"` |
86 | AccountConf *SConf `yaml:"server_account"` | 87 | AccountConf *SConf `yaml:"server_account"` |
87 | GameConf *SConf `yaml:"server_game"` | 88 | GameConf *SConf `yaml:"server_game"` |
88 | - RedisConf *RedisConf `yaml:"redis"` | ||
89 | LogConf *LogConf `yaml:"logconf" json:"logconf"` | 89 | LogConf *LogConf `yaml:"logconf" json:"logconf"` |
90 | TestClient *TestClient `yaml:"test_client"` | 90 | TestClient *TestClient `yaml:"test_client"` |
91 | Etcd *Etcd `yaml:"etcd"` | 91 | Etcd *Etcd `yaml:"etcd"` |
common/const.go
common/db/redisproxy/redis.go
@@ -30,14 +30,28 @@ func CloseRedis() { | @@ -30,14 +30,28 @@ func CloseRedis() { | ||
30 | RedisPool.Close() | 30 | RedisPool.Close() |
31 | } | 31 | } |
32 | 32 | ||
33 | -func HKEYS(args ...interface{}) (reply interface{}, err error) { | 33 | +func redisCommand(command string, args ...interface{}) (reply interface{}, err error) { |
34 | conn := RedisPool.Get() | 34 | conn := RedisPool.Get() |
35 | defer conn.Close() | 35 | defer conn.Close() |
36 | - return conn.Do("HKEYS", args) | 36 | + return conn.Do(command , args...) |
37 | +} | ||
38 | + | ||
39 | +func SETNX(args ...interface{}) (reply interface{}, err error) { | ||
40 | + return redisCommand("SETNX", args...) | ||
41 | +} | ||
42 | + | ||
43 | +func SET(args ...interface{}) (reply interface{}, err error) { | ||
44 | + return redisCommand("SET", args...) | ||
45 | +} | ||
46 | + | ||
47 | +func GET(args ...interface{}) (reply interface{}, err error) { | ||
48 | + return redisCommand("GET", args...) | ||
49 | +} | ||
50 | + | ||
51 | +func HKEYS(args ...interface{}) (reply interface{}, err error) { | ||
52 | + return redisCommand("HKEYS", args...) | ||
37 | } | 53 | } |
38 | 54 | ||
39 | func HMSET(args ...interface{}) (reply interface{}, err error) { | 55 | func HMSET(args ...interface{}) (reply interface{}, err error) { |
40 | - conn := RedisPool.Get() | ||
41 | - defer conn.Close() | ||
42 | - return conn.Do("HMSET", args) | 56 | + return redisCommand("HMSET", args...) |
43 | } | 57 | } |
44 | \ No newline at end of file | 58 | \ No newline at end of file |
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
1 | +package common | ||
2 | + | ||
3 | +var DefaultName [][]string = [][]string { | ||
4 | +[]string{ | ||
5 | + "伊瑟尼亚", | ||
6 | + "结晶荒漠", | ||
7 | + "巨炮", | ||
8 | + "尼布尔", | ||
9 | + "虹光山脉", | ||
10 | + "东部湿地", | ||
11 | + "星之绿洲", | ||
12 | + "神圣之泉", | ||
13 | + "废弃军港", | ||
14 | +}, | ||
15 | + | ||
16 | +[]string{ | ||
17 | + "幻影", | ||
18 | + "星辰", | ||
19 | + "铁壁", | ||
20 | + "光明", | ||
21 | + "无常", | ||
22 | + "灵木", | ||
23 | + "荒海", | ||
24 | + "黄金", | ||
25 | + "真理", | ||
26 | + "猎潮", | ||
27 | + | ||
28 | +}, | ||
29 | +} | ||
30 | + |
@@ -0,0 +1,49 @@ | @@ -0,0 +1,49 @@ | ||
1 | +package common | ||
2 | + | ||
3 | +import ( | ||
4 | + "crypto/md5" | ||
5 | + "encoding/hex" | ||
6 | + "math/rand" | ||
7 | + "strings" | ||
8 | + "time" | ||
9 | +) | ||
10 | + | ||
11 | +func Md5V(str string) string { | ||
12 | + h := md5.New() | ||
13 | + h.Write([]byte(str)) | ||
14 | + return hex.EncodeToString(h.Sum(nil)) | ||
15 | +} | ||
16 | + | ||
17 | +func Timex() int64 { | ||
18 | + return time.Now().Unix() | ||
19 | +} | ||
20 | + | ||
21 | +var defaultLetters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") | ||
22 | +func RandomString(n int, allowedChars ...[]rune) string { | ||
23 | + var letters []rune | ||
24 | + | ||
25 | + if len(allowedChars) == 0 { | ||
26 | + letters = defaultLetters | ||
27 | + } else { | ||
28 | + letters = allowedChars[0] | ||
29 | + } | ||
30 | + | ||
31 | + b := make([]rune, n) | ||
32 | + for i := range b { | ||
33 | + b[i] = letters[rand.Intn(len(letters))] | ||
34 | + } | ||
35 | + | ||
36 | + return string(b) | ||
37 | +} | ||
38 | + | ||
39 | + | ||
40 | +func RandomName(name [][]string) string { | ||
41 | + idx1 := rand.Intn(len(name[0])) | ||
42 | + idx2 := rand.Intn(len(name[1])) | ||
43 | + | ||
44 | + var builder strings.Builder | ||
45 | + builder.WriteString(name[0][idx1]) | ||
46 | + builder.WriteString(name[1][idx2]) | ||
47 | + return builder.String() | ||
48 | +} | ||
49 | + |
@@ -0,0 +1,21 @@ | @@ -0,0 +1,21 @@ | ||
1 | +package common | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "math/rand" | ||
6 | + "pro2d/common/db/redisproxy" | ||
7 | + "pro2d/common/logger" | ||
8 | + "testing" | ||
9 | +) | ||
10 | + | ||
11 | +func TestRandomString(t *testing.T) { | ||
12 | + rand.Seed(Timex()) | ||
13 | + fmt.Println(RandomName(DefaultName)) | ||
14 | +} | ||
15 | + | ||
16 | +func TestRandomName(t *testing.T) { | ||
17 | + if err := redisproxy.ConnectRedis(GlobalConf.GameConf.RedisConf.DB, GlobalConf.GameConf.RedisConf.Auth, GlobalConf.GameConf.RedisConf.Address); err != nil { | ||
18 | + logger.Error(err) | ||
19 | + return | ||
20 | + } | ||
21 | +} |
conf/conf.yaml
@@ -11,6 +11,10 @@ mongo: &default-mongo | @@ -11,6 +11,10 @@ mongo: &default-mongo | ||
11 | timeout: 2 | 11 | timeout: 2 |
12 | maxnum: 50 | 12 | maxnum: 50 |
13 | 13 | ||
14 | +redis: &default-redis | ||
15 | + address: "127.0.0.1:6100" | ||
16 | + auth: "" | ||
17 | + | ||
14 | etcd: | 18 | etcd: |
15 | dialtimeout: 5 | 19 | dialtimeout: 5 |
16 | endpoints: | 20 | endpoints: |
@@ -38,6 +42,9 @@ server_game: | @@ -38,6 +42,9 @@ server_game: | ||
38 | mongo: | 42 | mongo: |
39 | <<: *default-mongo | 43 | <<: *default-mongo |
40 | dbname: "game" | 44 | dbname: "game" |
45 | + redis: | ||
46 | + <<: *default-redis | ||
47 | + db: 0 | ||
41 | 48 | ||
42 | test_client: | 49 | test_client: |
43 | ip: "127.0.0.1" | 50 | ip: "127.0.0.1" |
models/role.go
@@ -6,7 +6,6 @@ import ( | @@ -6,7 +6,6 @@ import ( | ||
6 | "pro2d/common/db/mongoproxy" | 6 | "pro2d/common/db/mongoproxy" |
7 | "pro2d/common/logger" | 7 | "pro2d/common/logger" |
8 | "pro2d/pb" | 8 | "pro2d/pb" |
9 | - "pro2d/utils" | ||
10 | "sync/atomic" | 9 | "sync/atomic" |
11 | ) | 10 | ) |
12 | 11 | ||
@@ -167,7 +166,7 @@ func (m *RoleModel) OnRecoverTimer(now int64) { | @@ -167,7 +166,7 @@ func (m *RoleModel) OnRecoverTimer(now int64) { | ||
167 | 166 | ||
168 | func (m *RoleModel) OnOfflineEvent() { | 167 | func (m *RoleModel) OnOfflineEvent() { |
169 | // 设置最新的登录时间 | 168 | // 设置最新的登录时间 |
170 | - m.saveRoleData(utils.Timex()) | 169 | + m.saveRoleData(common.Timex()) |
171 | } | 170 | } |
172 | 171 | ||
173 | func (m *RoleModel) saveRoleData(now int64) { | 172 | func (m *RoleModel) saveRoleData(now int64) { |
pb/game.pb.go
@@ -175,7 +175,7 @@ type CreateReq struct { | @@ -175,7 +175,7 @@ type CreateReq struct { | ||
175 | sizeCache protoimpl.SizeCache | 175 | sizeCache protoimpl.SizeCache |
176 | unknownFields protoimpl.UnknownFields | 176 | unknownFields protoimpl.UnknownFields |
177 | 177 | ||
178 | - Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"` | 178 | + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` |
179 | Device string `protobuf:"bytes,2,opt,name=device,proto3" json:"device,omitempty"` | 179 | Device string `protobuf:"bytes,2,opt,name=device,proto3" json:"device,omitempty"` |
180 | } | 180 | } |
181 | 181 | ||
@@ -211,9 +211,9 @@ func (*CreateReq) Descriptor() ([]byte, []int) { | @@ -211,9 +211,9 @@ func (*CreateReq) Descriptor() ([]byte, []int) { | ||
211 | return file_game_proto_rawDescGZIP(), []int{3} | 211 | return file_game_proto_rawDescGZIP(), []int{3} |
212 | } | 212 | } |
213 | 213 | ||
214 | -func (x *CreateReq) GetUid() string { | 214 | +func (x *CreateReq) GetToken() string { |
215 | if x != nil { | 215 | if x != nil { |
216 | - return x.Uid | 216 | + return x.Token |
217 | } | 217 | } |
218 | return "" | 218 | return "" |
219 | } | 219 | } |
@@ -300,19 +300,19 @@ var file_game_proto_rawDesc = []byte{ | @@ -300,19 +300,19 @@ var file_game_proto_rawDesc = []byte{ | ||
300 | 0x22, 0x38, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, | 300 | 0x22, 0x38, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, |
301 | 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, | 301 | 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, |
302 | 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, | 302 | 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, |
303 | - 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x35, 0x0a, 0x09, 0x43, 0x72, | ||
304 | - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, | ||
305 | - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x76, | ||
306 | - 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, | ||
307 | - 0x65, 0x22, 0x6f, 0x0a, 0x07, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x73, 0x70, 0x12, 0x20, 0x0a, 0x04, | ||
308 | - 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, | ||
309 | - 0x65, 0x6c, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x20, | ||
310 | - 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, | ||
311 | - 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, | ||
312 | - 0x12, 0x20, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, | ||
313 | - 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x04, 0x74, 0x65, | ||
314 | - 0x61, 0x6d, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x70, 0x62, 0x3b, 0x70, 0x62, 0x62, 0x06, | ||
315 | - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, | 303 | + 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x39, 0x0a, 0x09, 0x43, 0x72, |
304 | + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, | ||
305 | + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, | ||
306 | + 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, | ||
307 | + 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x6f, 0x0a, 0x07, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x73, 0x70, | ||
308 | + 0x12, 0x20, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, | ||
309 | + 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, | ||
310 | + 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, | ||
311 | + 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, | ||
312 | + 0x68, 0x65, 0x72, 0x6f, 0x12, 0x20, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x03, | ||
313 | + 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54, 0x65, 0x61, 0x6d, | ||
314 | + 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x70, 0x62, 0x3b, | ||
315 | + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, | ||
316 | } | 316 | } |
317 | 317 | ||
318 | var ( | 318 | var ( |
utils/utils.go deleted
@@ -1,17 +0,0 @@ | @@ -1,17 +0,0 @@ | ||
1 | -package utils | ||
2 | - | ||
3 | -import ( | ||
4 | - "crypto/md5" | ||
5 | - "encoding/hex" | ||
6 | - "time" | ||
7 | -) | ||
8 | - | ||
9 | -func Md5V(str string) string { | ||
10 | - h := md5.New() | ||
11 | - h.Write([]byte(str)) | ||
12 | - return hex.EncodeToString(h.Sum(nil)) | ||
13 | -} | ||
14 | - | ||
15 | -func Timex() int64 { | ||
16 | - return time.Now().Unix() | ||
17 | -} | ||
18 | \ No newline at end of file | 0 | \ No newline at end of file |