Blame view

common/commonFunc.go 1.87 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
57
  
  type IMapString map[string]interface{}
  
4a502dd5   zhangqijia   fix: game,account...
58
  func MapToString(params IMapString) string {
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
59
60
61
62
63
64
65
66
67
68
  	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...
69
70
  func StringToMap(items string, num bool) IMapString {
  	backPack := make(map[string]interface{}, 10)
17fe96be   zhangqijia   feat: 增加装备相关数据和协议
71
72
73
74
75
  	for _, v := range strings.Split(items, " ") {
  		ii := strings.Split(v, "=")
  		if len(ii) < 2 {
  			continue
  		}
4a502dd5   zhangqijia   fix: game,account...
76
77
78
79
80
81
82
83
84
  		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: 增加装备相关数据和协议
85
86
87
  	}
  	return backPack
  }