Documentation ¶
Index ¶
- Constants
- Variables
- func AllProjectItem() []projectItem
- func SorKeyMap() map[SorStatisticsKey][]Project
- func SortByAvg(in []Score)
- func SortByBest(in []Score)
- func SortScores(in []Score)
- type Contest
- type Model
- type Player
- type PlayerUser
- type PreScore
- type Project
- type ProjectClass
- type Record
- type Round
- type RouteType
- type Score
- type ScorePenalty
- type SorStatisticsKey
Constants ¶
View Source
const ( OnLine = "online" OfficialOffline = "official" )
View Source
const ( ProjectClassWCA = "WCA项目" ProjectClassWCABF = "WCA盲拧" ProjectClassWCAAlien = "WCA异型" ProjectClassWCACube = "WCA正阶" ProjectClassXCube = "趣味项目" ProjectClassXCubeBF = "趣味盲拧" ProjectClassXCubeOH = "单手" ProjectClassXCubeFm = "最少步" ProjectClassXCubeRelay = "趣味连拧" ProjectClassNotCube = "趣味非魔方" ProjectClassDigit = "记字" ProjectClassSuperHigh = "超高阶" ProjectClassBFGroup = "盲拧群系列" )
View Source
const ( SorWCA = "wca" SorXCube = "xcube" SorWCACubeLowLevel = "wca2345" SorWCACubeAllLevel = "wca234567" SorWCAAlien = "wca_alien" SorWCA333 = "wca333" SorWCABf = "wca_bf" )
View Source
const ( RecordByAvg = 1 RecordBySingle = 2 )
View Source
const ( DNF = -10000 - iota // 未还原成功 DNS // 未开始还原 )
View Source
const ( FinishDetailRecord = "record" // 记录 FinishDetailNeglect = "neglect" // 忽略 FinishDetailDelete = "delete" // 删除 )
Variables ¶
View Source
var Models = []interface{}{ &Contest{}, &Round{}, &Player{}, &Score{}, &PreScore{}, &Record{}, &PlayerUser{}, }
View Source
var ProjectClassList = []ProjectClass{ ProjectClassWCA, ProjectClassWCABF, ProjectClassWCAAlien, ProjectClassWCACube, ProjectClassXCube, ProjectClassXCubeBF, ProjectClassXCubeOH, ProjectClassXCubeFm, ProjectClassXCubeRelay, ProjectClassNotCube, ProjectClassDigit, ProjectClassSuperHigh, ProjectClassBFGroup, }
Functions ¶
func AllProjectItem ¶
func AllProjectItem() []projectItem
func SorKeyMap ¶
func SorKeyMap() map[SorStatisticsKey][]Project
func SortByBest ¶
func SortByBest(in []Score)
Types ¶
type Contest ¶
type Contest struct { Model Name string `json:"Name,omitempty" gorm:"unique;not null;column:name"` // 比赛名 Type string `json:"Type,omitempty" gorm:"column:c_type"` // 类型 正式 | 线上 | 线下 GroupID string `json:"GroupID,omitempty" gorm:"column:group_id"` // 线上群赛ID Description string `json:"Description,omitempty" gorm:"not null;column:description"` // 描述 IsEnd bool `json:"IsEnd,omitempty" gorm:"null;column:is_end"` // 是否已结束 RoundIds string `json:"RoundIds,omitempty" gorm:"column:round_ids"` // 轮次ID Rounds []Round `json:"Rounds" gorm:"-"` // 预留 StartTime time.Time `json:"StartTime,omitempty" gorm:"column:start_time"` // 开始时间 EndTime time.Time `json:"EndTime,omitempty" gorm:"column:end_time"` // 结束时间 }
Contest 比赛表,记录某场比赛
func (*Contest) GetRoundIds ¶
func (*Contest) SetRoundIds ¶
type Player ¶
type Player struct { Model Name string `json:"Name" gorm:"unique;not null;column:name"` // 选手名 WcaID string `json:"WcaID,omitempty" gorm:"column:wca_id"` // 选手WcaID,用于查询选手WCA的成绩 ActualName string `json:"ActualName,omitempty" gorm:"actual_name"` // 真实姓名 Titles string `json:"-" gorm:"titles"` // 头衔 TitlesVal []string `json:"TitlesVal,omitempty" gorm:"-"` }
Player 选手表
type PlayerUser ¶ added in v0.1.8
type PlayerUser struct { Model IsAdmin bool `json:"isAdmin"` // 是否为普通管理员 IsSuperAdmin bool `json:"isSuperAdmin"` // 是否为超级管理员 LoginID string `gorm:"column:login_id"` // 登录自定义ID PlayerID uint `gorm:"unique;not null;column:player_id"` // 选手ID Password string `json:"-" gorm:""` // 密码 md5加密校验 QQ string `json:"-" gorm:"column:qq"` // qq号 QQBotUniID string `json:"-" gorm:"column:qq_bot_uni_id"` // qq 机器人ID WeChat string `json:"-" gorm:"column:wechat"` // 微信号 Phone string `json:"-" gorm:"column:phone"` // 手机号 }
PlayerUser 选手用户表
func (PlayerUser) Valid ¶ added in v0.1.24
func (p PlayerUser) Valid() bool
type PreScore ¶ added in v0.1.9
type PreScore struct { Score ContestName string `json:"ContestName" gorm:"column:contest_name"` // 比赛名称 RoundName string `json:"RoundName" gorm:"column:round_name"` // 轮次名 Recorder string `json:"Recorder" gorm:"column:recorder"` // 记录人 Processor string `json:"Processor" gorm:"column:processor"` // 处理人 Finish bool `json:"Finish" gorm:"column:finish"` // 是否处理 FinishDetail string `json:"FinishDetail" gorm:"column:finish_detail"` // 处理结果 Source string `json:"Source" gorm:"column:source"` // 来源 QQ web ... }
type Project ¶
type Project string
const ( // 特殊 JuBaoHaoHao Project = "jhh" OtherCola Project = "o_cola" // wca Cube222 Project = "222" Cube333 Project = "333" Cube444 Project = "444" Cube555 Project = "555" Cube666 Project = "666" Cube777 Project = "777" CubeSk Project = "skewb" CubePy Project = "pyram" CubeSq1 Project = "sq1" CubeMinx Project = "minx" CubeClock Project = "clock" Cube333OH Project = "333oh" Cube333FM Project = "333fm" Cube333BF Project = "333bf" Cube444BF Project = "444bf" Cube555BF Project = "555bf" Cube333MBF Project = "333mbf" Cube333Ft Project = "333ft" // 趣味最少步 XCubePyFm Project = "pyram_fm" XCubeSkFm Project = "skewb_fm" XCubeClockFm Project = "clock_fm" XCube222Fm Project = "222fm" // 盲 XCube333MBFUnlimited Project = "333mbf_unlimited" XCube222BF Project = "222bf" XCube666BF Project = "666bf" XCube777BF Project = "777bf" XCubePyBF Project = "pyram_bf" XCubeSkBF Project = "skewb_bf" XCubeMinxBf Project = "minx_bf" XCubeClockBf Project = "clock_bf" XCubeSQ1Bf Project = "sq1_bf" // 单手 XCube333BfOH Project = "333bf_oh" // 三单盲 XCube444BfOH Project = "444bf_oh" XCube555BfOH Project = "555bf_oh" XCube222OH Project = "222oh" XCube333MiniOH Project = "333mini_oh" XCube444OH Project = "444oh" XCube555OH Project = "555oh" XCube666OH Project = "666oh" XCube777OH Project = "777oh" XCubeSkOH Project = "skewb_oh" XCubePyOH Project = "pyram_oh" XCubeSq1OH Project = "sq1_oh" XCubeMinxOH Project = "minx_oh" XCubeClockOH Project = "clock_oh" // 连 XCube333Multiple5 Project = "333multiple5" XCube333OHMultiple5 Project = "333oh_multiple5" XCube333Multiple10 Project = "333multiple10" XCube333OHMultiple10 Project = "333oh_multiple10" XCube333Multiple15 Project = "333multiple15" XCube333OHMultiple15 Project = "333oh_multiple15" XCube333Multiple20 Project = "333multiple20" XCube333OHMultiple20 Project = "333oh_multiple20" XCube2345Relay Project = "2345relay" XCube2345OHRelay Project = "2345oh_relay" XCube27Relay Project = "2_7relay" XCube27OHRelay Project = "2_7oh_relay" XCube345RelayBF Project = "345relay_bf" XCube345OHRelayBF Project = "345oh_relay_bf" XCubeAlienRelay Project = "alien_relay" // 塔斜表五Q XCubeAlienOHRelay Project = "alien_oh_relay" XCube27AlienRelayAll Project = "27alien_relay" XCube27AlienOHRelayAll Project = "27alien_oh_relay" // 特殊魔方 XCube333Mirror Project = "333mirror" XCube333Mirroring Project = "333mirroring" XCube333Ghost Project = "333ghost" XCube333ZongZi Project = "333Zongzi" XCubeHotWheels Project = "hot_wheels" XCubeFisher Project = "fisher" XCubeGear Project = "gear" Xcube333Clone Project = "333clone" XCubeMapleLeaf Project = "maple_leaf" XCube222Minx Project = "222minx" XCube444Minx Project = "444minx" XCube555Minx Project = "555minx" XCube333Mini Project = "333mini" XCube444Py Project = "444pyram" XCube888 Project = "888" XCube999 Project = "999" XCube10L Project = "10level" XCube11L Project = "11level" XCube12L Project = "12level" XCube13L Project = "13level" XCube14L Project = "14level" XCube15L Project = "15level" XCube16L Project = "16level" XCube17L Project = "17level" XCube21L Project = "21level" XCube133 Project = "133" XCube223 Project = "223" XCube233 Project = "233" XCube334 Project = "334" XCube335 Project = "335" XCube336 Project = "336" XCube337 Project = "337" XCubeHelicopter Project = "helicopter" XCubeRedi Project = "redi" // 数独系列 NotCubeSuDoKuVeryEasy Project = "sudoku_very_easy" NotCubeSuDoKuEasy Project = "sudoku_easy" NotCubeSuDoKuModerate Project = "sudoku_moderate" NotCubeSuDoKuAdvanced Project = "sudoku_advanced" NotCubeSuDoKuHard Project = "sudoku_hard" NotCubeSuDoKuMaster Project = "sudoku_master" // 数字华容道系列 NotCube8Puzzle Project = "8puzzle" NotCube15Puzzle Project = "15puzzle" NotCube24Puzzle Project = "24puzzle" NotCube35Puzzle Project = "35puzzle" NotCube48Puzzle Project = "48puzzle" NotCube63Puzzle Project = "63puzzle" NotCube80Puzzle Project = "80puzzle" // 记字 NotCubeDigit Project = "digit" // 任意字符: 数字 + 大小写字母 + 其他字符 NotCubeDigitOnlyNumber Project = "digit_num" // 纯数字 NotCubeDigitOnlyUppercase Project = "digit_uppercase" // 大写字母 NotCubeDigitNumberAndUppercase Project = "digit_num_uppercase" // 数字 + 大写字母 NotCubePuke Project = "puke" // 扑克记忆 // 盲拧群周系列赛 BFGroup333BF1 Project = "3bf1" BFGroup333BF2 Project = "3bf2" BFGroup333BF3 Project = "3bf3" BFGroup333BF4 Project = "3bf4" BFGroup333BF5 Project = "3bf5" BFGroup333BF6 Project = "3bf6" BFGroup333BF7 Project = "3bf7" BFGroup444BF1 Project = "4bf1" BFGroup444BF2 Project = "4bf2" BFGroup444BF3 Project = "4bf3" BFGroup444BF4 Project = "4bf4" BFGroup555BF1 Project = "5bf1" BFGroup555BF2 Project = "5bf2" BFGroup555BF3 Project = "5bf3" BFGroup555BF4 Project = "5bf4" BFGroup333MBF1 Project = "3mbf1" BFGroup333MBF2 Project = "3mbf2" BFGroup333MBF3 Project = "3mbf3" BFGroup333MBF4 Project = "3mbf4" )
func AllProjectRoute ¶
func AllProjectRoute() []Project
func WCAProjectRoute ¶
func WCAProjectRoute() []Project
func XCubeProjectRoute ¶
func XCubeProjectRoute() []Project
type ProjectClass ¶ added in v0.4.2
type ProjectClass string
type Record ¶
type Record struct { Model Project Project `json:"Project,omitempty" gorm:"column:project"` // 项目 RType uint `json:"RType,omitempty" gorm:"column:rtype"` // 记录类型 ScoreId uint `json:"score_id,omitempty" gorm:"column:score_id"` // 成绩记录位置 ScoreValue Score `json:"ScoreValue,omitempty" gorm:"-"` PlayerID uint `json:"PlayerID,omitempty" gorm:"index;not null;column:player_id"` // 选手的ID PlayerName string `json:"PlayerName,omitempty" gorm:"column:player_name"` // 玩家名 ContestID uint `json:"ContestID,omitempty" gorm:"index;not null;column:contest_id"` // 比赛的ID ContestValue Contest `json:"ContestValue,omitempty" gorm:"-"` }
type Round ¶
type Round struct { Model Name string `json:"Name,omitempty" gorm:"column:name"` ContestID uint `json:"ContestID,omitempty" gorm:"column:contest_id"` // 所属比赛 Project Project `json:"Project,omitempty" gorm:"column:project"` // 项目 Number int `json:"Number,omitempty" gorm:"column:number"` // 项目轮次 Part int `json:"Part,omitempty" gorm:"column:part"` // 该轮次第几份打乱 Final bool `json:"Final,omitempty" gorm:"column:final"` // 是否是最后一轮 IsStart bool `json:"IsStart,omitempty" gorm:"column:is_start"` // 是否已开始 Upsets string `json:"-" gorm:"column:upsets"` // 打乱 UpsetDetail UpsetsVal []string `json:"UpsetsVal,omitempty" gorm:"-"` // 打乱 UpsetDetail 实际内容 }
Round 轮次及打乱
type RouteType ¶
type RouteType string
const ( RouteType1rounds RouteType = "1_r" // 单轮项目 RouteType3roundsBest RouteType = "3_r_b" // 三轮取最佳 RouteType3roundsAvg RouteType = "3_r_a" // 三轮取平均 RouteType5roundsBest RouteType = "5_r_b" // 五轮取最佳 RouteType5roundsAvg RouteType = "5_r_a" // 五轮取平均 RouteType5RoundsAvgHT RouteType = "5_r_a_ht" // 五轮去头尾取平均 RouteTypeRepeatedly RouteType = "ry" // 单轮多次还原项目, 成绩1:还原数; 成绩2:尝试数; 成绩3:时间; )
type Score ¶
type Score struct { Model // 数据库字段 PlayerID uint `json:"PlayerID,omitempty" gorm:"index;not null;column:player_id"` // 选手的ID PlayerName string `json:"PlayerName,omitempty" gorm:"column:player_name"` // 玩家名 ContestID uint `json:"ContestID,omitempty" gorm:"index;not null;column:contest_id"` // 比赛的ID RouteID uint `json:"RouteID,omitempty" gorm:"index;column:route_id"` // 轮次 Project Project `json:"Project,omitempty" gorm:"not null;column:project"` // 分项目 333/222/444等 Result1 float64 `json:"R1,omitempty" gorm:"column:r1;NULL"` // 成绩1 多盲时这个成绩是实际还原数 Result2 float64 `json:"R2,omitempty" gorm:"column:r2;NULL"` // 成绩2 多盲时这个成绩是尝试复原数 Result3 float64 `json:"R3,omitempty" gorm:"column:r3;NULL"` // 成绩3 多盲时这个成绩是计时 Result4 float64 `json:"R4,omitempty" gorm:"column:r4;NULL"` // 成绩4 Result5 float64 `json:"R5,omitempty" gorm:"column:r5;NULL"` // 成绩5 Best float64 `json:"Best,omitempty" gorm:"column:best;NULL"` // 五把最好成绩 Avg float64 `json:"Avg,omitempty" gorm:"column:avg;NULL"` // 五把平均成绩 IsBestSingle bool `json:"IsBestSingle,omitempty" gorm:"column:is_best_single"` // 这是玩家比往期最佳的还好的成绩 IsBestAvg bool `json:"IsBestAvg,omitempty" gorm:"column:is_best_avg"` // 这是这个玩家比往期最佳的成绩还好的平均成绩 Penalty string `json:"Penalty,omitempty" gorm:"column:penalty"` // 判罚 ScorePenalty Rank int `json:"Rank,omitempty" gorm:"column:rank"` // 排名 RouteValue Round `json:"RouteValue,omitempty" gorm:"-"` // 轮次实际内容 }
Score 成绩表
func (*Score) IsBestAvgScore ¶
func (*Score) IsBestScore ¶
func (*Score) SetResult ¶
func (s *Score) SetResult(in []float64, penalty ScorePenalty)
type ScorePenalty ¶
type SorStatisticsKey ¶
type SorStatisticsKey = string
Click to show internal directories.
Click to hide internal directories.