Blame view

common/commonFunc.go 3.3 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
  	"fmt"
  	"github.com/garyburd/redigo/redis"
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
8
  	"math"
101d1cc1   zhangqijia   feat: 一个基于redis的自...
9
  	"pro2d/common/db/redisproxy"
4a502dd5   zhangqijia   fix: game,account...
10
  	"strconv"
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
11
  	"strings"
101d1cc1   zhangqijia   feat: 一个基于redis的自...
12
13
14
  )
  
  func GetNextRoleId() (string, error) {
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
15
  	relay, err := redisproxy.HGET(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "role")
101d1cc1   zhangqijia   feat: 一个基于redis的自...
16
17
18
  	if err != nil {
  		return "", err
  	}
f415f471   zhangqijia   fix: roleID自增加上限制...
19
20
21
22
23
24
25
26
27
  	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的自...
28
  
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
29
  	relay, err = redisproxy.HINCRBY(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "role", 1)
f415f471   zhangqijia   fix: roleID自增加上限制...
30
  	ID, err = redis.Int64(relay, err)
101d1cc1   zhangqijia   feat: 一个基于redis的自...
31
32
33
34
35
36
37
  	if err != nil {
  		return "", err
  	}
  	return fmt.Sprintf("%d", ID), nil
  }
  
  func GetNextUId() (string, error) {
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
38
  	relay, err := redisproxy.HGET(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "uid")
101d1cc1   zhangqijia   feat: 一个基于redis的自...
39
40
41
42
43
44
45
  	if err != nil {
  		return "", err
  	}
  
  	var ID int64 = 0
  	if relay == nil {
  		ID = 90000
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
46
  		redisproxy.HSET(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "uid", ID)
101d1cc1   zhangqijia   feat: 一个基于redis的自...
47
  	} else {
a24dea4c   zhangqijia   fix: id自增做了写更新。阵容...
48
  		relay, err = redisproxy.HINCRBY(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "uid", 1)
101d1cc1   zhangqijia   feat: 一个基于redis的自...
49
50
51
52
53
54
55
  		ID, err = redis.Int64(relay, err)
  		if err != nil {
  			return "", err
  		}
  	}
  	return fmt.Sprintf("%d", ID), nil
  }
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
56
  
e172952c   zhangqijia   feat: email 系统搭建
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
  func GetNextEmail() (string, error) {
  	relay, err := redisproxy.HGET(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "email")
  	if err != nil {
  		return "", err
  	}
  
  	var ID int64 = 0
  	if relay == nil {
  		ID = 1
  		redisproxy.HSET(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "email", ID)
  	} else {
  		relay, err = redisproxy.HINCRBY(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "email", 1)
  		ID, err = redis.Int64(relay, err)
  		if err != nil {
  			return "", err
  		}
  	}
  	return fmt.Sprintf("%d", ID), nil
  }
  
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
77
  type IMapString map[string]interface{}
ddc88bac   zhangqijia   fix: 记录战斗
78
  type IMapStringNum map[string]int32
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
79
  
4a502dd5   zhangqijia   fix: game,account...
80
  func MapToString(params IMapString) string {
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
81
82
83
84
85
86
87
88
89
90
  	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...
91
  func StringToMap(items string, num bool) IMapString {
ddc88bac   zhangqijia   fix: 记录战斗
92
  	backPack := make(map[string]interface{})
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
93
94
95
96
97
  	for _, v := range strings.Split(items, " ") {
  		ii := strings.Split(v, "=")
  		if len(ii) < 2 {
  			continue
  		}
4a502dd5   zhangqijia   fix: game,account...
98
99
100
101
102
103
104
105
106
  		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: 增加装备相关数据和协议
107
108
109
  	}
  	return backPack
  }
ddc88bac   zhangqijia   fix: 记录战斗
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
  
  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
  }
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
137
  
35adfcdb   zhangqijia   fix: 裝備戒指类型特殊处理
138
  func EquipmentTyp(typ int32) int32 {
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
139
140
141
  	return int32(math.Floor(float64(typ / EquipmentInterval)))
  }
  
35adfcdb   zhangqijia   fix: 裝備戒指类型特殊处理
142
  func EquipmentPosToTyp(t int32) int32 {
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
143
  	switch t {
35adfcdb   zhangqijia   fix: 裝備戒指类型特殊处理
144
  	case WeaponPos:
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
145
  		return Weapon
35adfcdb   zhangqijia   fix: 裝備戒指类型特殊处理
146
  	case MailPos:
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
147
  		return Mail
35adfcdb   zhangqijia   fix: 裝備戒指类型特殊处理
148
  	case ShosePos:
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
149
  		return Shose
35adfcdb   zhangqijia   fix: 裝備戒指类型特殊处理
150
  	case NecklacePos:
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
151
  		return Necklace
35adfcdb   zhangqijia   fix: 裝備戒指类型特殊处理
152
  	case RingPosL:
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
153
  		return Ring
35adfcdb   zhangqijia   fix: 裝備戒指类型特殊处理
154
  	case RingPosR:
74286d71   zhangqijia   fix: 裝備 删除pos 添加 ...
155
156
157
158
159
  		return Ring
  	default:
  		return -1
  	}
  }