You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
2.1 KiB
Go

package model
import (
"joybuywork/internal/plugins/jsonm"
"joybuywork/internal/repository/mtype"
"time"
)
func (s *FissionCampaignVsSchedule) GetVsTeamIds() (val []int64) {
_ = jsonm.StrUnmarshal(s.VsTeamIds, &val)
return
}
func (s *FissionCampaignVsSchedule) SetVsTeamIds(val []int64) {
s.VsTeamIds, _ = jsonm.ToSliceString(val)
}
func (s *FissionCampaignVsSchedule) GetOtherVote() (val []string) {
_ = jsonm.StrUnmarshal(s.OtherVote, &val)
return
}
func (s *FissionCampaignVsSchedule) SetOtherVote(val []string) {
s.OtherVote, _ = jsonm.ToSliceString(val)
}
func (s *FissionCampaignVsSchedule) GetStatus() int32 {
if s.IsSettlement == mtype.Yes {
return mtype.FissionCampaignVsScheduleStatusSettlement
}
if (s.VoteStart == 0 && s.VoteEnd == 0) || s.VsAt == 0 {
return mtype.FissionCampaignVsScheduleStatusNotFinish
}
now := time.Now().Unix()
if s.VoteStart <= now && s.VoteEnd > now {
return mtype.FissionCampaignVsScheduleStatusVote
}
if s.VoteStart > now {
return mtype.FissionCampaignVsScheduleStatusWait
}
if s.IsSettlement == mtype.No && s.VsAt < now {
return mtype.FissionCampaignVsScheduleStatusRunning
}
if s.IsSettlement == mtype.No && s.VsAt >= now {
return mtype.FissionCampaignVsScheduleStatusWaitVs
}
return mtype.FissionCampaignVsScheduleStatusNotFinish
}
func (s *FissionCampaignVsSchedule) SetSettlement(val *mtype.FissionCampaignVsScheduleSettlement) {
s.Settlement, _ = jsonm.ToObjString(val)
}
func (s *FissionCampaignVsSchedule) GetSettlement() (val mtype.FissionCampaignVsScheduleSettlement) {
_ = jsonm.StrUnmarshal(s.Settlement, &val)
return
}
func (s *FissionCampaignVsSchedule) GetOdds() (val string) {
if s.OpenOdds == mtype.No {
return "1"
}
slt := s.GetSettlement()
if slt.WinType == mtype.FissionCampaignVsScheduleWinTypeDraw {
return s.OddsDraw
}
if slt.WinType == mtype.FissionCampaignVsScheduleWinTypeWin {
for i, v := range s.GetVsTeamIds() {
if v != slt.WinTeamId {
continue
}
switch i {
case 0:
return s.OddsLeft
case 1:
return s.OddsRight
}
}
}
return "1"
}