Blame view

common/commonFunc.go 2.45 KB
101d1cc1   zhangqijia   feat: 一个基于redis的自...
1
2
3
  package common
  
  import (
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
4
  	"bytes"
f415f471   zhangqijia   fix: roleID自增加上限制...
5
  	"errors"
101d1cc1   zhangqijia   feat: 一个基于redis的自...
6
7
8
  	"fmt"
  	"github.com/garyburd/redigo/redis"
  	"pro2d/common/db/redisproxy"
4a502dd5   zhangqijia   fix: game,account...
9
  	"strconv"
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
10
  	"strings"
101d1cc1   zhangqijia   feat: 一个基于redis的自...
11
12
13
  )
  
  func GetNextRoleId() (string, error) {
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
14
  	relay, err := redisproxy.HGET(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "role")
101d1cc1   zhangqijia   feat: 一个基于redis的自...
15
16
17
  	if err != nil {
  		return "", err
  	}
f415f471   zhangqijia   fix: roleID自增加上限制...
18
19
20
21
22
23
24
25
26
  	ID, err := redis.Int64(relay, err)
  	if err != nil {
  		return "", err
  	}
  
  	//roleID的范围 [GlobalSconf.ID*MaxRoleNum, GlobalSconf.ID*MaxRoleNum + MaxRoleNum]
  	if ID-GlobalSconf.ID*MaxRoleNum >= MaxCommNum-1 {
  		return "", errors.New("DB_FULL")
  	}
101d1cc1   zhangqijia   feat: 一个基于redis的自...
27
  
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
28
  	relay, err = redisproxy.HINCRBY(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "role", 1)
f415f471   zhangqijia   fix: roleID自增加上限制...
29
  	ID, err = redis.Int64(relay, err)
101d1cc1   zhangqijia   feat: 一个基于redis的自...
30
31
32
33
34
35
36
  	if err != nil {
  		return "", err
  	}
  	return fmt.Sprintf("%d", ID), nil
  }
  
  func GetNextUId() (string, error) {
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
37
  	relay, err := redisproxy.HGET(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "uid")
101d1cc1   zhangqijia   feat: 一个基于redis的自...
38
39
40
41
42
43
44
  	if err != nil {
  		return "", err
  	}
  
  	var ID int64 = 0
  	if relay == nil {
  		ID = 90000
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
45
  		redisproxy.HSET(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "uid", ID)
101d1cc1   zhangqijia   feat: 一个基于redis的自...
46
  	} else {
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
47
  		relay, err = redisproxy.HINCRBY(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "uid", 1)
101d1cc1   zhangqijia   feat: 一个基于redis的自...
48
49
50
51
52
53
54
  		ID, err = redis.Int64(relay, err)
  		if err != nil {
  			return "", err
  		}
  	}
  	return fmt.Sprintf("%d", ID), nil
  }
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
55
56
  
  type IMapString map[string]interface{}
ddc88bac   zhangqijia   fix: 记录战斗
57
  type IMapStringNum map[string]int32
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
58
  
4a502dd5   zhangqijia   fix: game,account...
59
  func MapToString(params IMapString) string {
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
60
61
62
63
64
65
66
67
68
69
  	var items bytes.Buffer
  	for k, v := range params {
  		items.WriteString(k)
  		items.WriteString("=")
  		items.WriteString(fmt.Sprintf("%v", v))
  		items.WriteString(" ")
  	}
  	return items.String()
  }
  
4a502dd5   zhangqijia   fix: game,account...
70
  func StringToMap(items string, num bool) IMapString {
ddc88bac   zhangqijia   fix: 记录战斗
71
  	backPack := make(map[string]interface{})
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
72
73
74
75
76
  	for _, v := range strings.Split(items, " ") {
  		ii := strings.Split(v, "=")
  		if len(ii) < 2 {
  			continue
  		}
4a502dd5   zhangqijia   fix: game,account...
77
78
79
80
81
82
83
84
85
  		if num {
  			c, err := strconv.Atoi(ii[1])
  			if err != nil {
  				continue
  			}
  			backPack[ii[0]] = uint32(c)
  		} else {
  			backPack[ii[0]] = ii[1]
  		}
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
86
87
88
  	}
  	return backPack
  }
ddc88bac   zhangqijia   fix: 记录战斗
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
  
  func MapNumToString(params IMapStringNum) string {
  	var items bytes.Buffer
  	for k, v := range params {
  		items.WriteString(k)
  		items.WriteString("=")
  		items.WriteString(fmt.Sprintf("%v", v))
  		items.WriteString(" ")
  	}
  	return items.String()
  }
  
  func StringToMapNum(items string) IMapStringNum {
  	backPack := make(IMapStringNum)
  	for _, v := range strings.Split(items, " ") {
  		ii := strings.Split(v, "=")
  		if len(ii) < 2 {
  			continue
  		}
  		c, err := strconv.Atoi(ii[1])
  		if err != nil {
  			continue
  		}
  		backPack[ii[0]] = int32(c)
  	}
  	return backPack
  }