bilibili-backup/app/admin/main/growup/model/speical_award.go
2019-04-22 02:59:20 +00:00

202 lines
6.9 KiB
Go

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,
}
}