-
Notifications
You must be signed in to change notification settings - Fork 0
/
speical_award.go
201 lines (181 loc) · 6.87 KB
/
speical_award.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
package model
import (
"strconv"
"time"
)
/* 奖项信息 */
// SaveAwardArg for saving an award
type SaveAwardArg struct {
// identity
AwardID int64 `json:"award_id"`
// properties
AddAwardArg
}
// AddAwardArg for adding an award
type AddAwardArg struct {
AwardName string `json:"award_name"` // 专项奖名称
DisplayStatus int `json:"display_status"` // 信息是否完整 1=不完整,不前台展示 2=完整,前台展示
CycleStart int64 `json:"cycle_start" ` // 评选开始
CycleEnd int64 `json:"cycle_end"` // 评选结束
AnnounceDate int64 `json:"announce_date"` // 公示日期
Divisions []*AwardDivision `json:"divisions"` // 赛区
Prizes []*AwardPrize `json:"prizes"` // 奖项
Resources *AwardResource `json:"resources"` // 物料
}
// AwardResource model
type AwardResource struct {
Rule string `json:"rule"`
Detail string `json:"detail"`
QA []*AwardQA `json:"qa"`
}
// AwardQA model
type AwardQA struct {
Index int `json:"-"`
Q string `json:"q"`
A string `json:"a"`
}
// AwardDivision model
type AwardDivision struct {
// identity
AwardID int64 `json:"-"`
DivisionID int64 `json:"-"`
// properties
DivisionName string `json:"division_name"`
TagID int64 `json:"tag_id"`
Tag string `json:"tag"`
}
// AwardPrize model
type AwardPrize struct {
// identity
AwardID int64 `json:"-"`
PrizeID int64 `json:"-"`
// properties
Bonus int `json:"bonus"`
Quota int `json:"quota"`
}
// AwardListModel .
type AwardListModel struct {
ID int64 `json:"id"`
AwardID int64 `json:"award_id"` // 专项奖ID
AwardName string `json:"award_name"` // 专项奖名称
//DisplayStatus int `json:"display_status"` // 是否前台展示(1不展示,2展示)
CycleStart int64 `json:"cycle_start"` // 评选开始
CycleEnd int64 `json:"cycle_end"` // 评选结束
TotalQuota int `json:"total_quota"` // 总中奖名额
TotalBonus int `json:"total_bonus"` // 奖金总金额
AnnounceDate int64 `json:"announce_date"` // 公示时间
OpenStatus int `json:"deliver_status"` // 发奖情况(1未发奖,2已发奖)
OpenTime int64 `json:"deliver_time"` // 发奖时间
CTime int64 `json:"created_at"` // 创建时间
CreatedBy string `json:"created_by"` // 创建人
SelectionStatus int `json:"selection_status"` // 评奖状态(1未评奖,2已评奖)
DivisionNames []string `json:"division_names"` // 分赛区名称列表
Tags []string `json:"tags"` // 分区名称列表
}
// Award model
type Award struct {
ID int64 `json:"id"`
AwardID int64 `json:"award_id"` // 专项奖ID
AwardName string `json:"award_name"` // 专项奖名称
DisplayStatus int `json:"display_status"` // 是否前台展示(1不展示,2展示)
CycleStart time.Time `json:"-"` // 评选周期开始
CycleEnd time.Time `json:"-"` // 评选周期结束
CycleStartTS int64 `json:"cycle_start"` // 评选开始
CycleEndTS int64 `json:"cycle_end"` // 评选结束
TotalQuota int `json:"total_quota"` // 总中奖名额
TotalBonus int `json:"total_bonus"` // 奖金总金额
AnnounceDate time.Time `json:"-"` // 公示日期
AnnounceDateTS int64 `json:"announce_date"` // 公示时间
OpenStatus int `json:"deliver_status"` // 发奖情况(1未发奖,2已发奖)
OpenTime time.Time `json:"-"` // 开奖时间
OpenTimeTS int64 `json:"deliver_time"` // 发奖时间
CTime time.Time `json:"-"` // 创建时间
CTimeTS int64 `json:"created_at"` // 创建时间
CreatedBy string `json:"created_by"` // 创建人
SelectionStatus int `json:"selection_status"` // 评奖状态(1未评奖,2已评奖)
IncentiveStart int64 `json:"incentive_start"`
IncentiveEnd int64 `json:"incentive_end"`
}
// GenStr .
func (v *Award) GenStr() {
v.CycleStartTS = v.CycleStart.Unix()
v.CycleEndTS = v.CycleEnd.Unix()
v.AnnounceDateTS = v.AnnounceDate.Unix()
v.OpenTimeTS = v.OpenTime.Unix()
v.CTimeTS = v.CTime.Unix()
v.IncentiveStart = time.Date(v.CycleEnd.Year(), time.Month(v.CycleEnd.Month()+1), 15, 0, 0, 0, 0, time.Local).Unix()
v.IncentiveEnd = time.Date(v.CycleEnd.Year(), time.Month(v.CycleEnd.Month()+1), 29, 0, 0, 0, 0, time.Local).Unix()
}
// AwardDetail wrapper
type AwardDetail struct {
Award *Award `json:"award"`
Divisions []*AwardDivision `json:"divisions"`
Prizes []*AwardPrize `json:"prizes"`
Resources *AwardResource `json:"resources"`
}
// AwardResult .
type AwardResult struct {
AwardID int64 `json:"award_id"`
OpenTime int64 `json:"deliver_time"`
AnnounceDate int64 `json:"announce_date"`
CycleEnd int64 `json:"cycle_end"`
Divisions []*AwardDivisionResult `json:"divisions"`
}
// AwardDivisionResult .
type AwardDivisionResult struct {
DivisionID int64 `json:"-"`
DivisionName string `json:"division_name"`
Prizes []*AwardPrizeResult `json:"prizes"`
}
// AwardPrizeResult .
type AwardPrizeResult struct {
PrizeID int64 `json:"-"`
MIDs []int64 `json:"mids"`
}
// AwardRecord model
type AwardRecord struct {
// identity
AwardID int64
MID int64
// properties
TagID int64
}
// AwardWinner model
type AwardWinner struct {
// identity
AwardID int64 `json:"award_id"`
MID int64 `json:"mid"`
// properties
DivisionID int64 `json:"division_id"` //赛区ID
PrizeID int64 `json:"prize_id"` //专项奖奖项ID
TagID int64 `json:"-"` //分区ID
// derived
Tag string `json:"tag"` //分区
Nickname string `json:"nickname"` //昵称
Bonus int `json:"bonus"` //专项奖奖项奖金
DivisionName string `json:"division"` //专项奖赛区
}
// QueryAwardWinnerArg .
type QueryAwardWinnerArg struct {
AwardID int64 `form:"award_id" validate:"required"`
MID int64 `form:"mid"`
Nickname string `form:"nickname"`
TagID int64 `form:"tag_id"`
From int `form:"from" validate:"min=0" default:"0"`
Limit int `form:"limit" validate:"min=1" default:"20"`
}
// AwardWinnerExportFields .
func AwardWinnerExportFields() []string {
return []string{"UID", "昵称", "分赛区", "奖项类型", "奖金", "分区"}
}
// ExportStrings of an AwardWinner
func (v *AwardWinner) ExportStrings() []string {
return []string{
strconv.FormatInt(v.MID, 10),
v.Nickname,
v.DivisionName,
"奖项" + strconv.FormatInt(v.PrizeID, 10),
strconv.FormatInt(int64(v.Bonus/100), 10),
v.Tag,
}
}