You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
3.9 KiB
71 lines
3.9 KiB
package models
|
|
|
|
import (
|
|
"github.com/ouxuanserver/osmanthuswine/src/core"
|
|
"hudongzhuanjia/utils/define"
|
|
"time"
|
|
)
|
|
|
|
const NewVoteActivityTableName = TableNamePrefix + "new_vote_activity"
|
|
|
|
type NewVoteActivity struct {
|
|
Id int64 `json:"id" xorm:"not null pk autoincr INT(11)"`
|
|
ActivityId int64 `json:"activity_id" xorm:"not null comment('互动id') INT(11)"`
|
|
VoteActivityLadders []*NewVoteActivityLadder `json:"vote_activity_ladders" xorm:"-"`
|
|
Theme string `json:"theme" xorm:"not null default('') comment('投票主题') VARCHAR(255)"`
|
|
JoinWay string `json:"join_way" xorm:"not null comment('参与方式说明') TEXT"`
|
|
Description string `json:"description" xorm:"not null comment('投票介绍') TEXT"`
|
|
Model string `json:"model" xorm:"not null default('单选') comment('投票类型[单选|多选]') VARCHAR(128)"`
|
|
ModelNum int64 `json:"model_num" xorm:"not null default(1) comment('投票类型选多少个') INT(11)"`
|
|
VoteLastTime string `json:"vote_last_time" description:"投票时长秒 0表示无时间限制"`
|
|
VoteEndTime int64 `json:"vote_end_time" xorm:"default(0)" description:"投票开始时间"`
|
|
ResultDisplay string `json:"result_display" description:"结果展示[百分比|票数]"`
|
|
ResultLimit int `json:"result_limit" description:"默认显示多少名"`
|
|
DisplayVoteNumber string `json:"display_vote_number" description:"[显示|不显示] 投票人数"`
|
|
PhoneVoteDisplayResult string `json:"phone_vote_display_result" description:"[显示|不显示] 手机端投票是否显示结果"`
|
|
VoteBySignUser string `json:"vote_by_sign_user" description:"[指定|不指定] 是否指定签到用户投票"`
|
|
VoteStatus string `json:"vote_status" description:"投票活动的状态 [可投票|不可投票]"`
|
|
IsDelete bool `json:"-" xorm:"default(0)"`
|
|
CreatedAt time.Time `json:"-" xorm:"created"`
|
|
UpdatedAt time.Time `json:"-" xorm:"updated"`
|
|
}
|
|
|
|
func (t *NewVoteActivity) TableName() string {
|
|
return NewVoteActivityTableName
|
|
}
|
|
|
|
//func (t *NewVoteActivity) GetByActivityId(aid int64, status string) (bool, error) {
|
|
// return core.GetXormAuto().Where("is_delete=0 and activity_id=? and vote_status=?", aid, status).
|
|
// Desc("created_at").Get(t)
|
|
//}
|
|
|
|
func (t *NewVoteActivity) UpdateToStatusByAid(aid int64, before string, after string) (int64, error) {
|
|
t.VoteStatus = after
|
|
t.UpdatedAt = time.Now()
|
|
return core.GetXormAuto().Where("is_delete=0 and vote_status=? and activity_id=?", before, aid).
|
|
Cols("vote_status", "updated_at").Update(t)
|
|
}
|
|
|
|
func (t *NewVoteActivity) UpdateStatusById(id int64, status string) (int64, error) {
|
|
t.VoteStatus = status
|
|
t.UpdatedAt = time.Now()
|
|
return core.GetXormAuto().Where("is_delete=0 and id=?", id).
|
|
Cols("vote_status", "updated_at").Update(t)
|
|
}
|
|
|
|
func (t *NewVoteActivity) GetCurrent(aid int64) (bool, error) {
|
|
return core.GetXormAuto().Where("is_delete=0 and activity_id=? and (vote_status=? or vote_status=?)",
|
|
aid, define.StatusReady, define.StatusRunning).Desc("created_at").Get(t)
|
|
}
|
|
|
|
func UpdateVoteStatusByActivityId(aid int64) (int64, error) {
|
|
return core.GetXormAuto().Where("is_delete=0 and activity_id=?", aid).
|
|
Update(&NewVoteActivity{VoteStatus: define.StatusNotBegin})
|
|
}
|
|
|
|
func GetVoteListByActivityId(activityId interface{}) ([]*NewVoteActivity, error) {
|
|
votes := make([]*NewVoteActivity, 0)
|
|
err := core.GetXormAuto().Where("is_delete=0 and activity_id=?", activityId).
|
|
Asc("created_at").Find(&votes)
|
|
return votes, err
|
|
}
|