Bladeren bron

新增roll

neo 1 jaar geleden
bovenliggende
commit
a9f8fb688e
1 gewijzigde bestanden met toevoegingen van 151 en 0 verwijderingen
  1. 151 0
      models/roll.go

+ 151 - 0
models/roll.go

@@ -0,0 +1,151 @@
1
+package models
2
+
3
+// 兑换码
4
+import (
5
+	"box-gm/utils"
6
+	"errors"
7
+	"fmt"
8
+	"log"
9
+	"sync"
10
+
11
+	"github.com/astaxie/beego"
12
+	"github.com/astaxie/beego/validation"
13
+)
14
+
15
+type RollConditionInfo struct {
16
+	Conditions string `json:"c"`  // 条件
17
+	CValue     int    `json:"cv"` // 条件值
18
+}
19
+type RollInfo struct {
20
+	Id              int                  // 活动ID
21
+	Name            string               `orm:"size(64)" valid:"Required"` // 房间名
22
+	BandShareCode   string               `orm:"size(10)" valid:"Required"` // 限制绑定推广码
23
+	CreateTime      int64                `valid:"Required"`                // 创建时间
24
+	ShowStartTime   int64                `valid:"Required"`                // 开始展示时间
25
+	SignupStartTime int64                `valid:"Required"`                // 报名开始时间
26
+	SignupEndTime   int64                `valid:"Required"`                // 报名结束时间
27
+	AwardTime       int64                `valid:"Required"`                // 开奖时间
28
+	Conditions      []*RollConditionInfo // 参与条件列表
29
+	ItemIdList      []int                // 奖励物品ID列表
30
+	SignupUidList   []int                // 报名玩家ID列表列表
31
+}
32
+
33
+type RollInfoArray []*RollInfo
34
+
35
+var rollList RollInfoArray
36
+var riMutex sync.Mutex
37
+
38
+// 初始化兑换码
39
+func InitRollInfo() {
40
+
41
+	beego.Info("load exchange code info", len(rollList))
42
+}
43
+
44
+func checkRollInfo(hf *RollInfo) (err error) {
45
+	valid := validation.Validation{}
46
+	b, _ := valid.Valid(&hf)
47
+	if !b {
48
+		for _, err := range valid.Errors {
49
+			log.Println(err.Key, err.Message)
50
+			return errors.New(err.Message)
51
+		}
52
+	}
53
+	return nil
54
+}
55
+
56
+// 新增兑换码
57
+func AddRollInfo(hf *RollInfo) error {
58
+	pool := utils.GetAccountRedisPool()
59
+	if pool == nil {
60
+		return fmt.Errorf("get redis pool fail")
61
+	}
62
+	rd := pool.Get()
63
+	defer rd.Close()
64
+
65
+	if err := checkRollInfo(hf); err != nil {
66
+		return err
67
+	}
68
+
69
+	riMutex.Lock()
70
+	rollList = append(rollList, hf)
71
+	riMutex.Unlock()
72
+
73
+	return nil
74
+}
75
+
76
+// 修改兑换码
77
+func UpdateRollInfo(hf *RollInfo) error {
78
+	pool := utils.GetAccountRedisPool()
79
+	if pool == nil {
80
+		return fmt.Errorf("get redis pool fail")
81
+	}
82
+	rd := pool.Get()
83
+	defer rd.Close()
84
+
85
+	if err := checkRollInfo(hf); err != nil {
86
+		return err
87
+	}
88
+
89
+	riMutex.Lock()
90
+	for i := 0; i < len(rollList); i++ {
91
+		if hf.Id == rollList[i].Id {
92
+			old := rollList[i]
93
+
94
+			old.Name = hf.Name
95
+			old.BandShareCode = hf.BandShareCode
96
+			old.ShowStartTime = hf.ShowStartTime
97
+			old.SignupStartTime = hf.SignupStartTime
98
+			old.SignupEndTime = hf.SignupEndTime
99
+			old.AwardTime = hf.AwardTime
100
+			old.Conditions = hf.Conditions
101
+			old.ItemIdList = hf.ItemIdList
102
+			break
103
+		}
104
+	}
105
+	riMutex.Unlock()
106
+
107
+	return nil
108
+
109
+}
110
+
111
+// 删除兑换码
112
+func DelRollInfoById(id int) error {
113
+	pool := utils.GetAccountRedisPool()
114
+	if pool == nil {
115
+		return fmt.Errorf("get redis pool fail")
116
+	}
117
+	rd := pool.Get()
118
+	defer rd.Close()
119
+
120
+	riMutex.Lock()
121
+	defer riMutex.Unlock()
122
+
123
+	for i := 0; i < len(rollList); i++ {
124
+		if id == rollList[i].Id {
125
+			ii := i + 1
126
+			rollList = append(rollList[:i], rollList[ii:]...)
127
+		}
128
+	}
129
+
130
+	return nil
131
+}
132
+
133
+// 获取兑换码信息
134
+func GetRollInfoByCode(id int) (hf *RollInfo) {
135
+	riMutex.Lock()
136
+	defer riMutex.Unlock()
137
+
138
+	for i := 0; i < len(rollList); i++ {
139
+		if id == rollList[i].Id {
140
+			return rollList[i]
141
+		}
142
+	}
143
+
144
+	return nil
145
+}
146
+func GetRollInfo() RollInfoArray {
147
+	riMutex.Lock()
148
+	defer riMutex.Unlock()
149
+
150
+	return rollList
151
+}