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