Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
D
deprecated-tabulator
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
deprecated-tabulator
Commits
f7760bb4
Commit
f7760bb4
authored
Apr 05, 2022
by
月兔回旋于空中
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
结构 >> 基本结构
parent
ff7279cf
Pipeline
#11465
passed with stages
in 3 minutes and 3 seconds
Changes
17
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
684 additions
and
238 deletions
+684
-238
build.gradle
build.gradle
+5
-0
src/main/java/moe/mycard/tabulator/api/IndexApi.java
src/main/java/moe/mycard/tabulator/api/IndexApi.java
+4
-3
src/main/java/moe/mycard/tabulator/api/TournamentApi.java
src/main/java/moe/mycard/tabulator/api/TournamentApi.java
+37
-21
src/main/java/moe/mycard/tabulator/controllers/IndexDo.java
src/main/java/moe/mycard/tabulator/controllers/IndexDo.java
+11
-6
src/main/java/moe/mycard/tabulator/controllers/TournamentDo.java
...n/java/moe/mycard/tabulator/controllers/TournamentDo.java
+53
-22
src/main/java/moe/mycard/tabulator/exception/CavCore.java
src/main/java/moe/mycard/tabulator/exception/CavCore.java
+23
-0
src/main/java/moe/mycard/tabulator/model/dto/tournament/RTree.java
...java/moe/mycard/tabulator/model/dto/tournament/RTree.java
+10
-0
src/main/java/moe/mycard/tabulator/model/dto/tournament/SeatData.java
...a/moe/mycard/tabulator/model/dto/tournament/SeatData.java
+43
-0
src/main/java/moe/mycard/tabulator/model/dto/tournament/SeatNode.java
...a/moe/mycard/tabulator/model/dto/tournament/SeatNode.java
+80
-1
src/main/java/moe/mycard/tabulator/model/po/ParticipantPO.java
...ain/java/moe/mycard/tabulator/model/po/ParticipantPO.java
+18
-70
src/main/java/moe/mycard/tabulator/model/po/TournamentPO.java
...main/java/moe/mycard/tabulator/model/po/TournamentPO.java
+2
-106
src/main/java/moe/mycard/tabulator/model/service/ds/IndexDoService.java
...moe/mycard/tabulator/model/service/ds/IndexDoService.java
+20
-3
src/main/java/moe/mycard/tabulator/model/service/ds/TournamentDoService.java
...ycard/tabulator/model/service/ds/TournamentDoService.java
+322
-0
src/main/java/moe/mycard/tabulator/model/vo/req/ImportParticipantPO.java
...oe/mycard/tabulator/model/vo/req/ImportParticipantPO.java
+14
-0
src/main/java/moe/mycard/tabulator/model/vo/req/TidReq.java
src/main/java/moe/mycard/tabulator/model/vo/req/TidReq.java
+11
-0
src/main/java/moe/mycard/tabulator/model/vo/req/UpdateSeatNode.java
...ava/moe/mycard/tabulator/model/vo/req/UpdateSeatNode.java
+29
-0
src/test/java/moe/mycard/tabulator/TabulatorApplicationTests.java
.../java/moe/mycard/tabulator/TabulatorApplicationTests.java
+2
-6
No files found.
build.gradle
View file @
f7760bb4
...
...
@@ -65,6 +65,11 @@ dependencies {
// ----- 单元测试框架 junit
testImplementation
'org.junit.jupiter:junit-jupiter-api:5.8.2'
testRuntimeOnly
'org.junit.jupiter:junit-jupiter-engine:5.8.2'
// ----- json序列化工具
implementation
group:
'com.alibaba'
,
name:
'fastjson'
,
version:
'1.2.80'
}
tasks
.
named
(
'test'
)
{
...
...
src/main/java/moe/mycard/tabulator/api/IndexApi.java
View file @
f7760bb4
...
...
@@ -7,6 +7,7 @@ import moe.mycard.tabulator.model.dto.GlobalAskBody;
import
moe.mycard.tabulator.model.dto.ReturnMessage
;
import
moe.mycard.tabulator.model.po.TournamentPO
;
import
moe.mycard.tabulator.model.vo.req.SaveTournamentReq
;
import
moe.mycard.tabulator.model.vo.req.TidReq
;
import
moe.mycard.tabulator.model.vo.req.UpdateTournamentReq
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
...
...
@@ -32,15 +33,15 @@ public interface IndexApi {
@ApiOperation
(
"删除 - 单场次比赛"
)
@PostMapping
(
"/delete_tournament"
)
ReturnMessage
<
Void
>
delete_tournament
(
@RequestBody
GlobalAskBody
<
Integer
>
body
);
ReturnMessage
<
Void
>
delete_tournament
(
@RequestBody
GlobalAskBody
<
TidReq
>
body
);
@ApiOperation
(
"详情 - 单场次比赛信息"
)
@PostMapping
(
"/details_tournament_info"
)
ReturnMessage
<
Void
>
details_tournament_info
(
@RequestBody
GlobalAskBody
<
Integer
>
body
);
ReturnMessage
<
TournamentPO
>
details_tournament_info
(
@RequestBody
GlobalAskBody
<
TidReq
>
body
);
@ApiOperation
(
"导出比赛"
)
@PostMapping
(
"/export_tournament"
)
ReturnMessage
<
Void
>
export_tournament
(
@RequestBody
GlobalAskBody
<
Integer
>
body
);
ReturnMessage
<
Void
>
export_tournament
(
@RequestBody
GlobalAskBody
<
TidReq
>
body
);
@ApiOperation
(
"比赛授权"
)
@PostMapping
(
"/authorize"
)
...
...
src/main/java/moe/mycard/tabulator/api/TournamentApi.java
View file @
f7760bb4
package
moe.mycard.tabulator.api
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
moe.mycard.tabulator.model.dto.GlobalAskBody
;
import
moe.mycard.tabulator.model.dto.ReturnMessage
;
import
moe.mycard.tabulator.model.dto.tournament.TTree
;
import
moe.mycard.tabulator.model.po.TournamentPO
;
import
moe.mycard.tabulator.model.vo.req.ImportParticipantPO
;
import
moe.mycard.tabulator.model.vo.req.TidReq
;
import
moe.mycard.tabulator.model.vo.req.UpdateSeatNode
;
import
moe.mycard.tabulator.model.vo.req.UpdateTournamentReq
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
@@ -15,39 +21,49 @@ public interface TournamentApi {
String
api
=
ApiEnum
.
api
+
"/tournament"
;
@ApiOperation
(
"编辑 - 导入参赛信息"
)
@PostMapping
(
"/edit_import_participant"
)
ReturnMessage
<
Integer
>
edit_import_participant
(
@RequestBody
GlobalAskBody
<
ImportParticipantPO
>
body
);
@ApiOperation
(
"制表"
)
@PostMapping
(
"tabulation"
)
@ApiImplicitParam
(
name
=
"比赛id"
)
ReturnMessage
<
TTree
>
tabulation
(
@RequestBody
GlobalAskBody
<
TidReq
>
body
);
@ApiOperation
(
"编辑 - 单场次比赛信息"
)
@PostMapping
(
"/edit_tournament"
)
ReturnMessage
<
Void
>
edit_tournament
(
@RequestBody
GlobalAskBody
<
?
>
body
);
ReturnMessage
<
Void
>
edit_tournament
(
@RequestBody
GlobalAskBody
<
UpdateTournamentReq
>
body
);
@ApiOperation
(
"详情 - 单场次比赛信息 常规信息"
)
@PostMapping
(
"/details_tournament_info"
)
ReturnMessage
<
Void
>
details_tournament_info
(
@RequestBody
GlobalAskBody
<
Long
>
body
);
ReturnMessage
<
TournamentPO
>
details_tournament_info
(
@RequestBody
GlobalAskBody
<
TidReq
>
body
);
@ApiOperation
(
"详情 - 单场次比赛信息 树形对战信息"
)
@PostMapping
(
"/details_tournament_tree"
)
ReturnMessage
<
Void
>
details_tournament_tree
(
@RequestBody
GlobalAskBody
<
Long
>
body
);
@ApiOperation
(
"编辑 - 对局信息"
)
@PostMapping
(
"/edit_match"
)
ReturnMessage
<
Void
>
edit_match
(
@RequestBody
GlobalAskBody
<?>
body
);
ReturnMessage
<
String
>
details_tournament_tree
(
@RequestBody
GlobalAskBody
<
TidReq
>
body
);
@ApiOperation
(
"编辑 - 座位信息"
)
@PostMapping
(
"/edit_seat"
)
ReturnMessage
<
Void
>
edit_seat
(
@RequestBody
GlobalAskBody
<?>
body
);
ReturnMessage
<
Void
>
edit_seat
(
@RequestBody
GlobalAskBody
<
UpdateSeatNode
>
body
);
@ApiOperation
(
"晋级"
)
@PostMapping
(
"/promotion"
)
ReturnMessage
<
Void
>
promotion
(
@RequestBody
GlobalAskBody
<
TidReq
>
body
);
@ApiOperation
(
"分页 - 参赛者对战记录"
)
@PostMapping
(
"/page_match_record"
)
ReturnMessage
<
Page
<?>>
page_participant_record
(
@RequestBody
GlobalAskBody
<?>
body
);
//
@ApiOperation("分页 - 参赛者对战记录")
//
@PostMapping("/page_match_record")
//
ReturnMessage<Page<?>> page_participant_record(@RequestBody GlobalAskBody<?> body);
@ApiOperation
(
"导出比赛"
)
@PostMapping
(
"/export_tournament"
)
ReturnMessage
<
Void
>
export_tournament
(
@RequestBody
GlobalAskBody
<
Long
>
body
);
//
@ApiOperation("导出比赛")
//
@PostMapping("/export_tournament")
// ReturnMessage<TTree> export_tournament(@RequestBody GlobalAskBody<Integer
> body);
@ApiOperation
(
"导出比赛 - 单轮次"
)
@PostMapping
(
"/export_round"
)
ReturnMessage
<
Void
>
export_round
(
@RequestBody
GlobalAskBody
<?>
body
);
//
@ApiOperation("导出比赛 - 单轮次")
//
@PostMapping("/export_round")
//
ReturnMessage<Void> export_round(@RequestBody GlobalAskBody<?> body);
@ApiOperation
(
"导入比赛 - 单轮次"
)
@PostMapping
(
"/import_round"
)
ReturnMessage
<
Void
>
import_round
(
@RequestBody
GlobalAskBody
<?>
body
);
//
@ApiOperation("导入比赛 - 单轮次")
//
@PostMapping("/import_round")
//
ReturnMessage<Void> import_round(@RequestBody GlobalAskBody<?> body);
}
src/main/java/moe/mycard/tabulator/controllers/IndexDo.java
View file @
f7760bb4
...
...
@@ -6,8 +6,10 @@ import moe.mycard.tabulator.api.IndexApi;
import
moe.mycard.tabulator.model.dto.GlobalAskBody
;
import
moe.mycard.tabulator.model.dto.ReturnMessage
;
import
moe.mycard.tabulator.model.po.TournamentPO
;
import
moe.mycard.tabulator.model.service.ds.IndexService
;
import
moe.mycard.tabulator.model.service.ds.IndexDoService
;
import
moe.mycard.tabulator.model.service.ds.TournamentDoService
;
import
moe.mycard.tabulator.model.vo.req.SaveTournamentReq
;
import
moe.mycard.tabulator.model.vo.req.TidReq
;
import
moe.mycard.tabulator.model.vo.req.UpdateTournamentReq
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -16,7 +18,9 @@ import javax.annotation.Resource;
@RestController
public
class
IndexDo
implements
IndexApi
{
@Resource
private
IndexService
indexService
;
@Resource
private
IndexDoService
indexService
;
@Resource
private
TournamentDoService
tournamentDoService
;
@Override
public
ReturnMessage
<
Void
>
save_tournament
(
GlobalAskBody
<
SaveTournamentReq
>
body
)
{
...
...
@@ -37,18 +41,19 @@ public class IndexDo implements IndexApi {
}
@Override
public
ReturnMessage
<
Void
>
delete_tournament
(
GlobalAskBody
<
Integer
>
body
)
{
public
ReturnMessage
<
Void
>
delete_tournament
(
GlobalAskBody
<
TidReq
>
body
)
{
indexService
.
deleteTournament
(
body
);
return
ReturnMessage
.
ok
();
}
@Override
public
ReturnMessage
<
Void
>
details_tournament_info
(
GlobalAskBody
<
Integer
>
body
)
{
return
null
;
public
ReturnMessage
<
TournamentPO
>
details_tournament_info
(
GlobalAskBody
<
TidReq
>
body
)
{
val
data
=
tournamentDoService
.
tournamentInfo
(
body
);
return
ReturnMessage
.
data
(
data
);
}
@Override
public
ReturnMessage
<
Void
>
export_tournament
(
GlobalAskBody
<
Integer
>
body
)
{
public
ReturnMessage
<
Void
>
export_tournament
(
GlobalAskBody
<
TidReq
>
body
)
{
return
null
;
}
...
...
src/main/java/moe/mycard/tabulator/controllers/TournamentDo.java
View file @
f7760bb4
package
moe.mycard.tabulator.controllers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
lombok.val
;
import
moe.mycard.tabulator.api.TournamentApi
;
import
moe.mycard.tabulator.model.dto.GlobalAskBody
;
import
moe.mycard.tabulator.model.dto.ReturnMessage
;
import
moe.mycard.tabulator.model.dto.tournament.TTree
;
import
moe.mycard.tabulator.model.po.TournamentPO
;
import
moe.mycard.tabulator.model.service.ds.IndexDoService
;
import
moe.mycard.tabulator.model.service.ds.TournamentDoService
;
import
moe.mycard.tabulator.model.vo.req.ImportParticipantPO
;
import
moe.mycard.tabulator.model.vo.req.TidReq
;
import
moe.mycard.tabulator.model.vo.req.UpdateSeatNode
;
import
moe.mycard.tabulator.model.vo.req.UpdateTournamentReq
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.Resource
;
@RestController
public
class
TournamentDo
implements
TournamentApi
{
@Override
public
ReturnMessage
<
Void
>
edit_tournament
(
GlobalAskBody
<?>
body
)
{
return
null
;
}
@Override
public
ReturnMessage
<
Void
>
details_tournament_info
(
GlobalAskBody
<
Long
>
body
)
{
return
null
;
}
@Resource
private
TournamentDoService
tournamentDoService
;
@Resource
private
IndexDoService
indexDoService
;
@Override
public
ReturnMessage
<
Void
>
details_tournament_tree
(
GlobalAskBody
<
Long
>
body
)
{
return
null
;
public
ReturnMessage
<
Integer
>
edit_import_participant
(
GlobalAskBody
<
ImportParticipantPO
>
body
)
{
val
count
=
tournamentDoService
.
importParticipant
(
body
);
return
ReturnMessage
.
data
(
count
);
}
@Override
public
ReturnMessage
<
Void
>
edit_match
(
GlobalAskBody
<?>
body
)
{
return
null
;
public
ReturnMessage
<
TTree
>
tabulation
(
GlobalAskBody
<
TidReq
>
body
)
{
val
table
=
tournamentDoService
.
tabulation
(
body
);
return
ReturnMessage
.
data
(
table
);
}
@Override
public
ReturnMessage
<
Void
>
edit_seat
(
GlobalAskBody
<?>
body
)
{
return
null
;
public
ReturnMessage
<
Void
>
edit_tournament
(
GlobalAskBody
<
UpdateTournamentReq
>
body
)
{
indexDoService
.
editTournament
(
body
);
return
ReturnMessage
.
ok
();
}
@Override
public
ReturnMessage
<
Page
<?>>
page_participant_record
(
GlobalAskBody
<?>
body
)
{
return
null
;
public
ReturnMessage
<
TournamentPO
>
details_tournament_info
(
GlobalAskBody
<
TidReq
>
body
)
{
val
data
=
tournamentDoService
.
tournamentInfo
(
body
);
return
ReturnMessage
.
data
(
data
);
}
@Override
public
ReturnMessage
<
Void
>
export_tournament
(
GlobalAskBody
<
Long
>
body
)
{
return
null
;
public
ReturnMessage
<
String
>
details_tournament_tree
(
GlobalAskBody
<
TidReq
>
body
)
{
val
data
=
tournamentDoService
.
tournamentInfo
(
body
);
return
ReturnMessage
.
data
(
data
==
null
?
null
:
data
.
getTournamentSeat
());
}
@Override
public
ReturnMessage
<
Void
>
export_round
(
GlobalAskBody
<?>
body
)
{
return
null
;
public
ReturnMessage
<
Void
>
edit_seat
(
GlobalAskBody
<
UpdateSeatNode
>
body
)
{
tournamentDoService
.
editSeat
(
body
);
return
ReturnMessage
.
ok
();
}
@Override
public
ReturnMessage
<
Void
>
import_round
(
GlobalAskBody
<?
>
body
)
{
public
ReturnMessage
<
Void
>
promotion
(
GlobalAskBody
<
TidReq
>
body
)
{
return
null
;
}
// @Override
// public ReturnMessage<Page<?>> page_participant_record(GlobalAskBody<?> body) {
// return null;
// }
// @Override
// public ReturnMessage<TTree> export_tournament(GlobalAskBody<Integer> body) {
// return null;
// }
// @Override
// public ReturnMessage<Void> export_round(GlobalAskBody<?> body) {
// return null;
// }
//
// @Override
// public ReturnMessage<Void> import_round(GlobalAskBody<?> body) {
// return null;
// }
}
src/main/java/moe/mycard/tabulator/exception/CavCore.java
View file @
f7760bb4
package
moe.mycard.tabulator.exception
;
import
moe.mycard.tabulator.model.dto.GlobalAskBody
;
import
org.springframework.util.CollectionUtils
;
import
java.util.Collection
;
/** 异常检查器 */
public
class
CavCore
{
...
...
@@ -88,4 +91,24 @@ public class CavCore {
public
<
object
>
void
cnn
(
object
t
,
String
message
)
throws
CavException
{
if
(
t
!=
null
)
throw
CavException
.
cast
(
message
);
}
/**
* 错误校验 集合判空形(cn -> check null)
*
* @throws CavException 空异常,携带输入的异常信息
* @see #cn(Object, String)
*/
public
void
cnList
(
Collection
<?>
collection
)
throws
CavException
{
if
(
CollectionUtils
.
isEmpty
(
collection
))
throw
CavException
.
cast
(
"参数为空"
);
}
/**
* 错误校验 集合判空形(cn -> check null)
*
* @throws CavException 空异常,携带输入的异常信息
* @see #cn(Object, String)
*/
public
void
cnList
(
Collection
<?>
collection
,
String
message
)
throws
CavException
{
if
(
CollectionUtils
.
isEmpty
(
collection
))
throw
CavException
.
cast
(
message
);
}
}
src/main/java/moe/mycard/tabulator/model/dto/tournament/RTree.java
View file @
f7760bb4
package
moe.mycard.tabulator.model.dto.tournament
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/** 对局树 */
@Data
public
class
RTree
{
@ApiModelProperty
(
"轮次"
)
private
Integer
round
;
@ApiModelProperty
(
"桌树"
)
private
SeatNode
seatNode
;
@ApiModelProperty
(
"当前轮次座位集合"
)
private
List
<
Integer
>
seatIdList
;
}
src/main/java/moe/mycard/tabulator/model/dto/tournament/SeatData.java
0 → 100644
View file @
f7760bb4
package
moe.mycard.tabulator.model.dto.tournament
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
@Data
public
class
SeatData
{
@ApiModelProperty
(
"座位id"
)
private
Integer
seatId
;
@ApiModelProperty
(
"参赛者主键id"
)
private
Integer
participantId
;
@ApiModelProperty
(
"卡组名称"
)
private
String
deck
;
@ApiModelProperty
(
"是否锁定"
)
private
Boolean
lock
;
@ApiModelProperty
(
"对局类型【0 准备阶段】【1 已结束对局】"
)
private
Integer
matchType
;
@ApiModelProperty
(
"数据类型【1 初始化数据 or 导入数据】【2 系统推算数据】【3 人为编辑数据】"
)
private
Integer
dataType
;
@ApiModelProperty
(
"时间 - 创建时间"
)
private
LocalDateTime
timeCreate
;
@ApiModelProperty
(
"时间 - 座位对局时间"
)
private
LocalDateTime
timeMatch
;
@ApiModelProperty
(
"对局比分"
)
private
Integer
matchFraction
;
@ApiModelProperty
(
"对局备注"
)
private
String
matchRemark
;
@ApiModelProperty
(
"对局id"
)
private
Integer
matchId
;
}
src/main/java/moe/mycard/tabulator/model/dto/tournament/SeatNode.java
View file @
f7760bb4
package
moe.mycard.tabulator.model.dto.tournament
;
public
class
SeatNode
{}
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
@Data
public
class
SeatNode
{
@ApiModelProperty
(
"座位id"
)
private
Integer
seatId
;
@ApiModelProperty
(
"主要数据"
)
private
SeatData
data
;
@ApiModelProperty
(
"下一组节点"
)
private
SeatNode
[]
next
;
@ApiModelProperty
(
"上一组节点"
)
private
SeatNode
[]
previous
;
@ApiModelProperty
(
"树深(从1开始)"
)
private
Integer
depth
;
@ApiModelProperty
(
"树深(从1开始) 倒叙"
)
private
Integer
depthDesc
;
/**
* 快速创建轮空位
*
* @param seatId 座位id
* @param type 节点类型
* @param depth 树深
* @param depthDesc 树深倒叙
* @param date 创建时间
* @return 轮空位置
*/
public
static
SeatNode
vacancy
(
int
seatId
,
int
type
,
int
depth
,
int
depthDesc
,
LocalDateTime
date
)
{
SeatData
nodeData
=
new
SeatData
();
nodeData
.
setSeatId
(
seatId
);
nodeData
.
setParticipantId
(
null
);
nodeData
.
setDeck
(
"轮空"
);
nodeData
.
setLock
(
false
);
nodeData
.
setMatchType
(
0
);
nodeData
.
setDataType
(
2
);
nodeData
.
setTimeCreate
(
date
);
nodeData
.
setTimeMatch
(
null
);
SeatNode
node
=
new
SeatNode
();
node
.
setSeatId
(
nodeData
.
getSeatId
());
node
.
setData
(
nodeData
);
node
.
setNext
(
null
);
node
.
setPrevious
(
null
);
node
.
setDepth
(
depth
);
node
.
setDepthDesc
(
depthDesc
);
return
node
;
}
public
static
SeatNode
emptySeat
(
int
seatId
,
int
depth
,
int
depthDesc
,
LocalDateTime
date
,
SeatNode
[]
pre
)
{
SeatData
nodeData
=
new
SeatData
();
nodeData
.
setSeatId
(
seatId
);
nodeData
.
setParticipantId
(
null
);
nodeData
.
setDeck
(
""
);
nodeData
.
setLock
(
false
);
nodeData
.
setMatchType
(
0
);
nodeData
.
setDataType
(
1
);
nodeData
.
setTimeCreate
(
date
);
nodeData
.
setTimeMatch
(
null
);
SeatNode
node
=
new
SeatNode
();
node
.
setSeatId
(
nodeData
.
getSeatId
());
node
.
setData
(
nodeData
);
node
.
setNext
(
null
);
node
.
setPrevious
(
pre
);
node
.
setDepth
(
depth
);
node
.
setDepthDesc
(
depthDesc
);
return
node
;
}
}
src/main/java/moe/mycard/tabulator/model/po/ParticipantPO.java
View file @
f7760bb4
...
...
@@ -5,95 +5,43 @@ import com.baomidou.mybatisplus.annotation.TableId;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
/**
* <p>
* 主表 - 参赛者
* </p>
*
* @author SPiCa
* @since 2022-03-23
*/
@Data
@TableName
(
"ta_participant"
)
@ApiModel
(
value
=
"Participant对象"
,
description
=
"主表 - 参赛者"
)
public
class
ParticipantPO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"参赛者 - 主键"
)
@TableId
(
value
=
"participant_id"
,
type
=
IdType
.
AUTO
)
private
Integer
participantId
;
@ApiModelProperty
(
"参赛者 - 主键"
)
@TableId
(
value
=
"participant_id"
,
type
=
IdType
.
AUTO
)
private
Integer
participantId
;
@ApiModelProperty
(
"参赛者 - 参赛昵称"
)
private
String
participantName
;
@ApiModelProperty
(
"参赛者 - 参赛昵称"
)
private
String
participantName
;
@ApiModelProperty
(
"参赛者 - 参赛卡组
"
)
private
String
participantDeck
;
@ApiModelProperty
(
"参赛者 - 参赛QQ
"
)
private
String
participantQQ
;
@ApiModelProperty
(
"外键 >> 比赛 - 主键id
"
)
private
Integer
competitionId
;
@ApiModelProperty
(
"参赛者 - 参赛卡组
"
)
private
String
participantDeck
;
@ApiModelProperty
(
"时间 - 创建时间
"
)
private
LocalDateTime
timeCreate
;
@ApiModelProperty
(
"外键 >> 比赛 - 主键id
"
)
private
Integer
tournamentId
;
@ApiModelProperty
(
"是否有效 1是 0否
"
)
private
Boolean
isValid
;
@ApiModelProperty
(
"时间 - 创建时间
"
)
private
LocalDateTime
timeCreate
;
public
Integer
getParticipantId
()
{
return
participantId
;
}
public
void
setParticipantId
(
Integer
participantId
)
{
this
.
participantId
=
participantId
;
}
public
String
getParticipantName
()
{
return
participantName
;
}
public
void
setParticipantName
(
String
participantName
)
{
this
.
participantName
=
participantName
;
}
public
String
getParticipantDeck
()
{
return
participantDeck
;
}
public
void
setParticipantDeck
(
String
participantDeck
)
{
this
.
participantDeck
=
participantDeck
;
}
public
Integer
getCompetitionId
()
{
return
competitionId
;
}
public
void
setCompetitionId
(
Integer
competitionId
)
{
this
.
competitionId
=
competitionId
;
}
public
LocalDateTime
getTimeCreate
()
{
return
timeCreate
;
}
public
void
setTimeCreate
(
LocalDateTime
timeCreate
)
{
this
.
timeCreate
=
timeCreate
;
}
public
Boolean
getIsValid
()
{
return
isValid
;
}
public
void
setIsValid
(
Boolean
isValid
)
{
this
.
isValid
=
isValid
;
}
@Override
public
String
toString
()
{
return
"Participant{"
+
"participantId="
+
participantId
+
", participantName="
+
participantName
+
", participantDeck="
+
participantDeck
+
", competitionId="
+
competitionId
+
", timeCreate="
+
timeCreate
+
", isValid="
+
isValid
+
"}"
;
}
@ApiModelProperty
(
"是否有效 1是 0否"
)
private
Boolean
isValid
;
}
src/main/java/moe/mycard/tabulator/model/po/TournamentPO.java
View file @
f7760bb4
...
...
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
...
...
@@ -15,6 +16,7 @@ import java.time.LocalDateTime;
* @author SPiCa
* @since 2022-03-23
*/
@Data
@TableName
(
"ta_tournament"
)
@ApiModel
(
value
=
"Tournament对象"
,
description
=
"主表 - 比赛表"
)
public
class
TournamentPO
implements
Serializable
{
...
...
@@ -51,110 +53,4 @@ public class TournamentPO implements Serializable {
@ApiModelProperty
(
"是否有效"
)
private
Boolean
isValid
;
public
Integer
getTournamentId
()
{
return
tournamentId
;
}
public
void
setTournamentId
(
Integer
tournamentId
)
{
this
.
tournamentId
=
tournamentId
;
}
public
String
getTournamentName
()
{
return
tournamentName
;
}
public
void
setTournamentName
(
String
tournamentName
)
{
this
.
tournamentName
=
tournamentName
;
}
public
String
getTournamentSystem
()
{
return
tournamentSystem
;
}
public
void
setTournamentSystem
(
String
tournamentSystem
)
{
this
.
tournamentSystem
=
tournamentSystem
;
}
public
String
getTournamentTime
()
{
return
tournamentTime
;
}
public
void
setTournamentTime
(
String
tournamentTime
)
{
this
.
tournamentTime
=
tournamentTime
;
}
public
String
getTournamentIntroduction
()
{
return
tournamentIntroduction
;
}
public
void
setTournamentIntroduction
(
String
tournamentIntroduction
)
{
this
.
tournamentIntroduction
=
tournamentIntroduction
;
}
public
String
getTournamentSeat
()
{
return
tournamentSeat
;
}
public
void
setTournamentSeat
(
String
tournamentSeat
)
{
this
.
tournamentSeat
=
tournamentSeat
;
}
public
Integer
getTournamentRound
()
{
return
tournamentRound
;
}
public
void
setTournamentRound
(
Integer
tournamentRound
)
{
this
.
tournamentRound
=
tournamentRound
;
}
public
LocalDateTime
getTimeCreate
()
{
return
timeCreate
;
}
public
void
setTimeCreate
(
LocalDateTime
timeCreate
)
{
this
.
timeCreate
=
timeCreate
;
}
public
LocalDateTime
getTimeUpdate
()
{
return
timeUpdate
;
}
public
void
setTimeUpdate
(
LocalDateTime
timeUpdate
)
{
this
.
timeUpdate
=
timeUpdate
;
}
public
Boolean
getIsValid
()
{
return
isValid
;
}
public
void
setIsValid
(
Boolean
isValid
)
{
this
.
isValid
=
isValid
;
}
@Override
public
String
toString
()
{
return
"Tournament{"
+
"tournamentId="
+
tournamentId
+
", tournamentName="
+
tournamentName
+
", tournamentSystem="
+
tournamentSystem
+
", tournamentTime="
+
tournamentTime
+
", tournamentIntroduction="
+
tournamentIntroduction
+
", tournamentSeat="
+
tournamentSeat
+
", tournamentRound="
+
tournamentRound
+
", timeCreate="
+
timeCreate
+
", timeUpdate="
+
timeUpdate
+
", isValid="
+
isValid
+
"}"
;
}
}
src/main/java/moe/mycard/tabulator/model/service/ds/IndexService.java
→
src/main/java/moe/mycard/tabulator/model/service/ds/Index
Do
Service.java
View file @
f7760bb4
...
...
@@ -12,6 +12,7 @@ import moe.mycard.tabulator.model.service.ILogService;
import
moe.mycard.tabulator.model.service.ITournamentAssignService
;
import
moe.mycard.tabulator.model.service.ITournamentService
;
import
moe.mycard.tabulator.model.vo.req.SaveTournamentReq
;
import
moe.mycard.tabulator.model.vo.req.TidReq
;
import
moe.mycard.tabulator.model.vo.req.UpdateTournamentReq
;
import
moe.mycard.tabulator.tool.UtilTime
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -20,9 +21,10 @@ import org.springframework.stereotype.Service;
import
javax.annotation.Resource
;
@Service
public
class
IndexService
{
public
class
Index
Do
Service
{
private
final
CavCore
c
=
CavCore
.
getC
();
@Resource
private
ITournamentService
tournamentService
;
@Resource
private
ITournamentAssignService
tournamentAssignService
;
@Resource
private
ILogService
logService
;
...
...
@@ -50,6 +52,11 @@ public class IndexService {
return
page
;
}
/**
* 生成比赛信息
*
* @param body saveReq
*/
public
void
saveTournament
(
GlobalAskBody
<
SaveTournamentReq
>
body
)
{
c
.
cn
(
body
);
// ===== 主逻辑,生成比赛 =====
...
...
@@ -67,6 +74,11 @@ public class IndexService {
logService
.
create
(
UserInfo
.
getUserId
(),
"创建了比赛 "
+
savePO
);
}
/**
* 编辑比赛信息
*
* @param body updateReq
*/
public
void
editTournament
(
GlobalAskBody
<
UpdateTournamentReq
>
body
)
{
c
.
cn
(
body
);
val
tid
=
body
.
getParams
().
getTournamentId
();
...
...
@@ -93,9 +105,14 @@ public class IndexService {
logService
.
create
(
userId
,
"编辑了比赛 "
+
updatePO
);
}
public
void
deleteTournament
(
GlobalAskBody
<
Integer
>
body
)
{
/**
* 删除比赛信息
*
* @param body 比赛id
*/
public
void
deleteTournament
(
GlobalAskBody
<
TidReq
>
body
)
{
c
.
cn
(
body
);
val
tournamentId
=
body
.
getParams
();
val
tournamentId
=
body
.
getParams
()
.
getTournamentId
()
;
c
.
cn
(
tournamentId
,
"比赛id为空"
);
val
userId
=
UserInfo
.
getUserId
();
...
...
src/main/java/moe/mycard/tabulator/model/service/ds/TournamentDoService.java
0 → 100644
View file @
f7760bb4
package
moe.mycard.tabulator.model.service.ds
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.StringUtils
;
import
lombok.val
;
import
moe.mycard.tabulator.exception.CavCore
;
import
moe.mycard.tabulator.model.dto.GlobalAskBody
;
import
moe.mycard.tabulator.model.dto.tournament.RTree
;
import
moe.mycard.tabulator.model.dto.tournament.SeatData
;
import
moe.mycard.tabulator.model.dto.tournament.SeatNode
;
import
moe.mycard.tabulator.model.dto.tournament.TTree
;
import
moe.mycard.tabulator.model.po.ParticipantPO
;
import
moe.mycard.tabulator.model.po.TournamentPO
;
import
moe.mycard.tabulator.model.service.IParticipantService
;
import
moe.mycard.tabulator.model.service.ITournamentService
;
import
moe.mycard.tabulator.model.vo.req.ImportParticipantPO
;
import
moe.mycard.tabulator.model.vo.req.TidReq
;
import
moe.mycard.tabulator.model.vo.req.UpdateSeatNode
;
import
moe.mycard.tabulator.tool.UtilTime
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
@Service
public
class
TournamentDoService
{
private
static
final
Map
<
Integer
,
TTree
>
tidMapTree
=
new
HashMap
<>();
private
static
final
Map
<
Integer
,
Map
<
Integer
,
SeatNode
>>
tidMapSeatIdMapNode
=
new
HashMap
<>();
private
final
CavCore
c
=
CavCore
.
getC
();
@Resource
private
IParticipantService
participantService
;
@Resource
private
ITournamentService
tournamentService
;
public
static
void
main
(
String
[]
args
)
{
RTree
rTree
=
new
RTree
();
rTree
.
setSeatNode
(
new
SeatNode
()
{
{
setDepthDesc
(
1
);
}
});
JSONObject
jsonObject
=
(
JSONObject
)
JSONObject
.
toJSON
(
rTree
);
System
.
out
.
println
(
jsonObject
);
}
/**
* 导入参赛者名录
*
* @param body 比赛id and 参赛名录
* @return 参赛者数量
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
int
importParticipant
(
GlobalAskBody
<
ImportParticipantPO
>
body
)
{
c
.
cn
(
body
);
val
directory
=
body
.
getParams
().
getDirectory
();
val
tid
=
body
.
getParams
().
getTournamentId
();
c
.
c
(
StringUtils
.
isBlank
(
directory
),
"空名录"
);
char
[]
str
=
directory
.
toCharArray
();
List
<
String
>
participantList
=
new
ArrayList
<>();
List
<
ParticipantPO
>
participantPOS
=
new
ArrayList
<>();
val
date
=
UtilTime
.
getDateL
();
StringBuilder
sb
=
new
StringBuilder
();
for
(
var
c
:
str
)
{
if
(
c
==
10
||
c
==
13
)
{
participantList
.
add
(
sb
.
toString
());
sb
=
new
StringBuilder
();
}
else
{
sb
.
append
(
c
);
}
}
participantList
.
forEach
(
deck
->
{
val
e
=
deck
.
split
(
"\\+"
);
val
savePO
=
new
ParticipantPO
();
savePO
.
setParticipantName
(
e
[
0
]);
savePO
.
setParticipantQQ
(
e
[
1
]);
savePO
.
setParticipantDeck
(
deck
);
savePO
.
setTournamentId
(
tid
);
savePO
.
setTimeCreate
(
date
);
savePO
.
setIsValid
(
true
);
participantPOS
.
add
(
savePO
);
});
participantService
.
saveBatch
(
participantPOS
);
return
participantPOS
.
size
();
}
/**
* 制表
*
* @param body 比赛id
* @return 表树
*/
public
TTree
tabulation
(
GlobalAskBody
<
TidReq
>
body
)
{
c
.
cn
(
body
);
val
tid
=
body
.
getParams
().
getTournamentId
();
val
participantPOS
=
participantService
.
list
(
new
LambdaQueryWrapper
<
ParticipantPO
>()
.
select
(
ParticipantPO:
:
getParticipantDeck
)
.
eq
(
ParticipantPO:
:
getTournamentId
,
tid
)
.
eq
(
ParticipantPO:
:
getIsValid
,
true
));
Collections
.
shuffle
(
participantPOS
);
c
.
cnList
(
participantPOS
,
"参赛名录为空"
);
val
tournamentPO
=
tournamentService
.
getById
(
tid
);
var
id
=
1
;
var
size
=
participantPOS
.
size
();
val
date
=
UtilTime
.
getDateL
();
Map
<
Integer
,
List
<
Integer
>>
roundMapSeatArray
=
new
HashMap
<>();
if
(
participantPOS
.
size
()
%
2
!=
0
)
{
size
=
size
+
1
;
}
val
depth
=
getDepth
(
size
,
0
);
SeatNode
[]
nodes
=
new
SeatNode
[
size
];
for
(
int
i
=
0
;
i
<
size
-
1
-
1
;
i
++)
{
val
participantPO
=
participantPOS
.
get
(
i
);
SeatData
nodeData
=
new
SeatData
();
roundMapSeatArray
.
computeIfAbsent
(
tid
,
k
->
new
ArrayList
<>());
roundMapSeatArray
.
get
(
tid
).
add
(
id
);
nodeData
.
setSeatId
(
id
);
nodeData
.
setParticipantId
(
participantPO
.
getParticipantId
());
nodeData
.
setDeck
(
participantPO
.
getParticipantDeck
());
nodeData
.
setLock
(
false
);
nodeData
.
setMatchType
(
0
);
nodeData
.
setDataType
(
1
);
nodeData
.
setTimeCreate
(
date
);
nodeData
.
setTimeMatch
(
null
);
SeatNode
node
=
new
SeatNode
();
node
.
setSeatId
(
nodeData
.
getSeatId
());
node
.
setData
(
nodeData
);
node
.
setNext
(
null
);
node
.
setPrevious
(
null
);
node
.
setDepth
(
depth
);
node
.
setDepthDesc
(
1
);
nodes
[
i
]
=
node
;
tidMapSeatIdMapNode
.
computeIfAbsent
(
tid
,
k
->
new
HashMap
<>());
tidMapSeatIdMapNode
.
get
(
tid
).
put
(
id
,
node
);
id
++;
}
nodes
[
size
-
1
]
=
SeatNode
.
vacancy
(
id
,
2
,
depth
,
1
,
date
);
val
seatTree
=
leafToTree
(
id
,
depth
,
2
,
date
,
nodes
,
roundMapSeatArray
);
List
<
RTree
>
rTreeList
=
new
ArrayList
<>();
roundMapSeatArray
.
forEach
(
(
kev
,
value
)
->
{
RTree
rTree
=
new
RTree
();
rTree
.
setRound
(
kev
);
rTree
.
setSeatNode
(
seatTree
);
rTree
.
setSeatIdList
(
value
);
rTreeList
.
add
(
rTree
);
});
TTree
tTree
=
new
TTree
();
tTree
.
setTournamentSystem
(
tournamentPO
.
getTournamentSystem
());
tTree
.
setTournamentId
(
tid
);
tTree
.
setTournamentName
(
tournamentPO
.
getTournamentName
());
tTree
.
setSign
(
"sign"
);
tTree
.
setRoundTreeList
(
rTreeList
);
val
updatePO
=
new
TournamentPO
();
updatePO
.
setTournamentId
(
tid
);
updatePO
.
setTimeUpdate
(
date
);
updatePO
.
setTournamentSeat
(((
JSONObject
)
JSONObject
.
toJSON
(
tTree
)).
toString
());
updatePO
.
setTournamentRound
(
1
);
tournamentService
.
updateById
(
updatePO
);
tidMapTree
.
put
(
tid
,
tTree
);
return
tTree
;
}
/**
* 获取比赛详情
*
* @param body 比赛id
* @return 比赛详情
*/
public
TournamentPO
tournamentInfo
(
GlobalAskBody
<
TidReq
>
body
)
{
c
.
cn
(
body
);
return
tournamentService
.
getById
(
body
.
getParams
().
getTournamentId
());
}
/*
======================================================================================================================
*/
/**
* 编辑座位信息
*
* @param body 座位信息
*/
public
void
editSeat
(
GlobalAskBody
<
UpdateSeatNode
>
body
)
{
c
.
cn
(
body
);
val
seatNode
=
body
.
getParams
();
c
.
cn
(
seatNode
.
getTournamentId
());
c
.
cn
(
seatNode
.
getSeatId
());
val
seat
=
tidMapSeatIdMapNode
.
get
(
seatNode
.
getTournamentId
()).
get
(
seatNode
.
getSeatId
());
c
.
cn
(
seat
);
if
(
StringUtils
.
isNotBlank
(
seatNode
.
getDeck
()))
{
seat
.
getData
().
setDeck
(
seatNode
.
getDeck
());
}
if
(
seatNode
.
getMatchFraction
()
!=
null
)
{
seat
.
getData
().
setMatchFraction
(
seatNode
.
getMatchFraction
());
}
if
(
StringUtils
.
isNotBlank
(
seatNode
.
getMatchRemark
()))
{
seat
.
getData
().
setMatchRemark
(
seatNode
.
getMatchRemark
());
}
}
/**
* 获取树深 64/2 32/2 16/2 8/2 4/2 2/2 1
*
* @param size 参赛总数
*/
private
int
getDepth
(
int
size
,
int
depth
)
{
if
(
size
<
2
)
{
return
depth
+
1
;
}
else
{
if
(
size
%
2
!=
0
)
{
size
=
size
+
1
;
}
return
getDepth
(
size
/
2
,
depth
+
1
);
}
}
/**
* 叶子推算树
*
* @param id 座位id
* @param depth 树深
* @param depthDesc 树深倒叙
* @param date 创建时间
* @param seatNodes 子叶子
* @param roundMapSeatArray 轮数映射位置集合
* @return 对局树集合
*/
private
SeatNode
leafToTree
(
int
id
,
int
depth
,
int
depthDesc
,
LocalDateTime
date
,
SeatNode
[]
seatNodes
,
Map
<
Integer
,
List
<
Integer
>>
roundMapSeatArray
)
{
boolean
combination
=
true
;
List
<
SeatNode
>
curList
=
new
ArrayList
<>();
// ===== 顶层节点 =====
if
(
seatNodes
.
length
<
2
)
{
val
curNode
=
seatNodes
[
0
];
val
next
=
SeatNode
.
emptySeat
(
id
,
depth
,
depthDesc
,
date
,
new
SeatNode
[]
{
curNode
});
curNode
.
setNext
(
new
SeatNode
[]
{
next
});
return
next
;
}
// ===== 顶层节点 =====
// ===== 当前节点集合 =====
for
(
int
i
=
0
;
i
<
seatNodes
.
length
-
1
;
i
++)
{
val
curNode
=
seatNodes
[
i
];
SeatNode
next
;
if
(
combination
)
{
next
=
SeatNode
.
emptySeat
(
id
++,
depth
,
depthDesc
,
date
,
new
SeatNode
[]
{
curNode
});
curNode
.
setNext
(
new
SeatNode
[]
{
next
});
next
.
setPrevious
(
new
SeatNode
[]
{
curNode
});
}
else
{
next
=
seatNodes
[
i
-
1
].
getNext
()[
0
];
curNode
.
setNext
(
new
SeatNode
[]
{
next
});
next
.
setPrevious
(
new
SeatNode
[]
{
curNode
,
next
.
getPrevious
()[
0
]});
}
curList
.
add
(
curNode
);
combination
=
!
combination
;
}
// ===== 当前节点集合 =====
// ===== 轮空位 =====
if
(!
combination
)
{
val
next
=
seatNodes
[
seatNodes
.
length
-
1
].
getNext
()[
0
];
val
cur
=
SeatNode
.
emptySeat
(
id
++,
depth
,
depthDesc
,
date
,
null
);
cur
.
setNext
(
new
SeatNode
[]
{
next
});
next
.
setPrevious
(
new
SeatNode
[]
{
cur
,
next
.
getPrevious
()[
0
]});
curList
.
add
(
cur
);
}
// ===== 轮空位 =====
roundMapSeatArray
.
put
(
depthDesc
,
curList
.
stream
().
map
(
SeatNode:
:
getSeatId
).
collect
(
Collectors
.
toList
()));
return
leafToTree
(
id
,
depth
-
1
,
depthDesc
+
1
,
date
,
curList
.
toArray
(
new
SeatNode
[
0
]),
roundMapSeatArray
);
}
}
src/main/java/moe/mycard/tabulator/model/vo/req/ImportParticipantPO.java
0 → 100644
View file @
f7760bb4
package
moe.mycard.tabulator.model.vo.req
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
public
class
ImportParticipantPO
{
@ApiModelProperty
(
"参赛者名录"
)
private
String
directory
;
@ApiModelProperty
(
"比赛 - 主键id"
)
private
Integer
tournamentId
;
}
src/main/java/moe/mycard/tabulator/model/vo/req/TidReq.java
0 → 100644
View file @
f7760bb4
package
moe.mycard.tabulator.model.vo.req
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
public
class
TidReq
{
@ApiModelProperty
(
"比赛id"
)
private
Integer
tournamentId
;
}
src/main/java/moe/mycard/tabulator/model/vo/req/UpdateSeatNode.java
0 → 100644
View file @
f7760bb4
package
moe.mycard.tabulator.model.vo.req
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
public
class
UpdateSeatNode
{
@ApiModelProperty
(
"比赛 - 主键id"
)
private
Integer
tournamentId
;
@ApiModelProperty
(
"座位id"
)
private
Integer
seatId
;
@ApiModelProperty
(
"卡组名称"
)
private
String
deck
;
// @ApiModelProperty("时间 - 座位对局时间")
// private LocalDateTime timeMatch;
@ApiModelProperty
(
"对局比分"
)
private
Integer
matchFraction
;
@ApiModelProperty
(
"对局备注"
)
private
String
matchRemark
;
// @ApiModelProperty("对局id")
// private Integer matchId;
}
src/test/java/moe/mycard/tabulator/TabulatorApplicationTests.java
View file @
f7760bb4
package
moe.mycard.tabulator
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.boot.test.context.SpringBootTest
;
@SpringBootTest
class
TabulatorApplicationTests
{
@Test
void
contextLoads
()
{
}
void
contextLoads
()
{}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment