Commit ae274dbc authored by liming's avatar liming

feat(比赛模块): 比赛接口

parent f3461d18
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?PowerDesigner AppLocale="UTF16" ID="{9E94F6D7-CF09-4263-8C20-E603C14DCBE5}" Label="" LastModificationDate="1631254375" Name="sport" Objects="48" Symbols="0" Target="MySQL 5.0" Type="{CDE44E21-9669-11D1-9914-006097355D9B}" signature="PDM_DATA_MODEL_XML" version="16.5.0.3982"?> <?PowerDesigner AppLocale="UTF16" ID="{9E94F6D7-CF09-4263-8C20-E603C14DCBE5}" Label="" LastModificationDate="1631361845" Name="sport" Objects="86" Symbols="2" Target="MySQL 5.0" Type="{CDE44E21-9669-11D1-9914-006097355D9B}" signature="PDM_DATA_MODEL_XML" version="16.5.0.3982"?>
<!-- do not edit this file --> <!-- do not edit this file -->
<Model xmlns:a="attribute" xmlns:c="collection" xmlns:o="object"> <Model xmlns:a="attribute" xmlns:c="collection" xmlns:o="object">
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<a:Code>sport</a:Code> <a:Code>sport</a:Code>
<a:CreationDate>1631254187</a:CreationDate> <a:CreationDate>1631254187</a:CreationDate>
<a:Creator>lmmax</a:Creator> <a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631254187</a:ModificationDate> <a:ModificationDate>1631355987</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier> <a:Modifier>lmmax</a:Modifier>
<a:PackageOptionsText>[FolderOptions] <a:PackageOptionsText>[FolderOptions]
...@@ -101,7 +101,7 @@ GenSyncRmg=0 ...@@ -101,7 +101,7 @@ GenSyncRmg=0
[FolderOptions\Physical Objects\Database Generation\Format] [FolderOptions\Physical Objects\Database Generation\Format]
GenScriptTitle=Yes GenScriptTitle=Yes
GenScriptNamLabl=No GenScriptNamLabl=No
GenScriptQDtbs=Yes GenScriptQDtbs=No
GenScriptQOwnr=Yes GenScriptQOwnr=Yes
GenScriptCase=0 GenScriptCase=0
GenScriptEncoding=ANSI GenScriptEncoding=ANSI
...@@ -208,7 +208,7 @@ Footer=Yes ...@@ -208,7 +208,7 @@ Footer=Yes
Constraint declaration=No Constraint declaration=No
[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Column] [FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Column]
User datatype=Yes User datatype=No
Default value=Yes Default value=Yes
Check=Yes Check=Yes
Physical Options=Yes Physical Options=Yes
...@@ -255,9 +255,9 @@ Constraint declaration=Yes ...@@ -255,9 +255,9 @@ Constraint declaration=Yes
Physical Options=Yes Physical Options=Yes
[FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Index\Filter] [FolderOptions\Physical Objects\Database Generation\Table&amp;&amp;Column\Index\Filter]
Primary key=Yes Primary key=No
Foreign key=Yes Foreign key=No
Alternate key=Yes Alternate key=No
Cluster=Yes Cluster=Yes
Other=Yes Other=Yes
...@@ -1135,11 +1135,11 @@ PhysOpts=</a:ModelOptionsText> ...@@ -1135,11 +1135,11 @@ PhysOpts=</a:ModelOptionsText>
<c:PhysicalDiagrams> <c:PhysicalDiagrams>
<o:PhysicalDiagram Id="o4"> <o:PhysicalDiagram Id="o4">
<a:ObjectID>83D79A09-5532-48CF-B37A-11035F9CF54D</a:ObjectID> <a:ObjectID>83D79A09-5532-48CF-B37A-11035F9CF54D</a:ObjectID>
<a:Name>game</a:Name> <a:Name>match</a:Name>
<a:Code>game</a:Code> <a:Code>match</a:Code>
<a:CreationDate>1631254187</a:CreationDate> <a:CreationDate>1631254187</a:CreationDate>
<a:Creator>lmmax</a:Creator> <a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631254375</a:ModificationDate> <a:ModificationDate>1631255922</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier> <a:Modifier>lmmax</a:Modifier>
<a:DisplayPreferences>[DisplayPreferences] <a:DisplayPreferences>[DisplayPreferences]
...@@ -1559,13 +1559,473 @@ Shadow=0</a:DisplayPreferences> ...@@ -1559,13 +1559,473 @@ Shadow=0</a:DisplayPreferences>
<a:PageMargins>((315,354), (433,354))</a:PageMargins> <a:PageMargins>((315,354), (433,354))</a:PageMargins>
<a:PageOrientation>1</a:PageOrientation> <a:PageOrientation>1</a:PageOrientation>
<a:PaperSource>15</a:PaperSource> <a:PaperSource>15</a:PaperSource>
<c:Symbols>
<o:TableSymbol Id="o5">
<a:CreationDate>1631254684</a:CreationDate>
<a:ModificationDate>1631254740</a:ModificationDate>
<a:IconMode>-1</a:IconMode>
<a:Rect>((-20496,5408), (2375,28852))</a:Rect>
<a:AutoAdjustToText>0</a:AutoAdjustToText>
<a:LineColor>12615680</a:LineColor>
<a:FillColor>16570034</a:FillColor>
<a:ShadowColor>12632256</a:ShadowColor>
<a:FontList>STRN 0 新宋体,8,N
DISPNAME 0 新宋体,8,N
OWNRDISPNAME 0 新宋体,8,N
Columns 0 新宋体,8,N
TablePkColumns 0 新宋体,8,U
TableFkColumns 0 新宋体,8,N
Keys 0 新宋体,8,N
Indexes 0 新宋体,8,N
Triggers 0 新宋体,8,N
LABL 0 新宋体,8,N</a:FontList>
<a:BrushStyle>6</a:BrushStyle>
<a:GradientFillMode>65</a:GradientFillMode>
<a:GradientEndColor>16777215</a:GradientEndColor>
<a:ManuallyResized>1</a:ManuallyResized>
<c:Object>
<o:Table Ref="o6"/>
</c:Object>
</o:TableSymbol>
<o:TableSymbol Id="o7">
<a:CreationDate>1631255922</a:CreationDate>
<a:ModificationDate>1631255997</a:ModificationDate>
<a:IconMode>-1</a:IconMode>
<a:Rect>((5304,5348), (28175,28792))</a:Rect>
<a:AutoAdjustToText>0</a:AutoAdjustToText>
<a:LineColor>12615680</a:LineColor>
<a:FillColor>16570034</a:FillColor>
<a:ShadowColor>12632256</a:ShadowColor>
<a:FontList>STRN 0 新宋体,8,N
DISPNAME 0 新宋体,8,N
OWNRDISPNAME 0 新宋体,8,N
Columns 0 新宋体,8,N
TablePkColumns 0 新宋体,8,U
TableFkColumns 0 新宋体,8,N
Keys 0 新宋体,8,N
Indexes 0 新宋体,8,N
Triggers 0 新宋体,8,N
LABL 0 新宋体,8,N</a:FontList>
<a:BrushStyle>6</a:BrushStyle>
<a:GradientFillMode>65</a:GradientFillMode>
<a:GradientEndColor>16777215</a:GradientEndColor>
<a:ManuallyResized>1</a:ManuallyResized>
<c:Object>
<o:Table Ref="o8"/>
</c:Object>
</o:TableSymbol>
</c:Symbols>
</o:PhysicalDiagram> </o:PhysicalDiagram>
</c:PhysicalDiagrams> </c:PhysicalDiagrams>
<c:DefaultDiagram> <c:DefaultDiagram>
<o:PhysicalDiagram Ref="o4"/> <o:PhysicalDiagram Ref="o4"/>
</c:DefaultDiagram> </c:DefaultDiagram>
<c:Tables>
<o:Table Id="o6">
<a:ObjectID>663CAD45-72F0-40AD-967F-DED56AF0F0AA</a:ObjectID>
<a:Name>match_bicycle</a:Name>
<a:Code>match_bicycle</a:Code>
<a:CreationDate>1545093257</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631355987</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:Comment>比赛信息表</a:Comment>
<a:TotalSavingCurrency/>
<c:Columns>
<o:Column Id="o9">
<a:ObjectID>86FE73AE-4258-4D25-AB09-1D6E2F11496D</a:ObjectID>
<a:Name>主键</a:Name>
<a:Code>id</a:Code>
<a:CreationDate>1545093260</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631254684</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>bigint</a:DataType>
<a:Identity>1</a:Identity>
<a:Column.Mandatory>1</a:Column.Mandatory>
</o:Column>
<o:Column Id="o10">
<a:ObjectID>45150528-A849-44D7-98CA-D70F1DE07BCE</a:ObjectID>
<a:Name>比赛名称</a:Name>
<a:Code>name</a:Code>
<a:CreationDate>1631254741</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631255084</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>varchar(100)</a:DataType>
<a:Length>100</a:Length>
</o:Column>
<o:Column Id="o11">
<a:ObjectID>E4712647-7522-46A5-ACEB-19E6CE2A2476</a:ObjectID>
<a:Name>允许进入时间</a:Name>
<a:Code>entry_time</a:Code>
<a:CreationDate>1631254741</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631255084</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>datetime</a:DataType>
</o:Column>
<o:Column Id="o12">
<a:ObjectID>0E00CB73-7638-4EFD-88DF-27E5CB019FF9</a:ObjectID>
<a:Name>比赛开始时间</a:Name>
<a:Code>start_time</a:Code>
<a:CreationDate>1631254741</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631255084</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>datetime</a:DataType>
</o:Column>
<o:Column Id="o13">
<a:ObjectID>91469A71-DEAB-4262-9C7F-D2EC5CC8E273</a:ObjectID>
<a:Name>比赛结束时间</a:Name>
<a:Code>end_time</a:Code>
<a:CreationDate>1631254741</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631255084</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>datetime</a:DataType>
</o:Column>
<o:Column Id="o14">
<a:ObjectID>7470F13C-9A18-4F83-95E7-3B09CB925085</a:ObjectID>
<a:Name>显示顺序</a:Name>
<a:Code>show_order</a:Code>
<a:CreationDate>1545103874</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631254684</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DefaultValue>0</a:DefaultValue>
<a:DataType>int</a:DataType>
</o:Column>
<o:Column Id="o15">
<a:ObjectID>5B727195-B7C3-4C0F-B1E6-C6D935DE9ADF</a:ObjectID>
<a:Name>版本号</a:Name>
<a:Code>version</a:Code>
<a:CreationDate>1545093935</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631254684</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DefaultValue>0</a:DefaultValue>
<a:DataType>bigint</a:DataType>
</o:Column>
<o:Column Id="o16">
<a:ObjectID>7CD9B484-6422-443A-A4B7-8194D0D18389</a:ObjectID>
<a:Name>删除标记</a:Name>
<a:Code>deleted</a:Code>
<a:CreationDate>1545094509</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631254684</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DefaultValue>0</a:DefaultValue>
<a:DataType>tinyint</a:DataType>
</o:Column>
<o:Column Id="o17">
<a:ObjectID>75820918-456D-4F7D-BB43-BFFDD0927726</a:ObjectID>
<a:Name>创建部门id</a:Name>
<a:Code>ct_dept_id</a:Code>
<a:CreationDate>1545093334</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631254684</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>bigint</a:DataType>
</o:Column>
<o:Column Id="o18">
<a:ObjectID>2A2604D3-73CE-49E5-AE00-BBFA1C2C7773</a:ObjectID>
<a:Name>创建人id</a:Name>
<a:Code>ct_user_id</a:Code>
<a:CreationDate>1545093935</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631254684</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>bigint</a:DataType>
</o:Column>
<o:Column Id="o19">
<a:ObjectID>A46D4FFB-3DE4-4EBA-92E6-C6AC7C5D5B83</a:ObjectID>
<a:Name>创建时间</a:Name>
<a:Code>ct_date</a:Code>
<a:CreationDate>1545093935</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631254684</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DefaultValue>CURRENT_TIMESTAMP</a:DefaultValue>
<a:DataType>datetime</a:DataType>
</o:Column>
<o:Column Id="o20">
<a:ObjectID>48F8BDCD-D7A5-4B30-8A04-7A9DED761B4C</a:ObjectID>
<a:Name>修改人id</a:Name>
<a:Code>lm_user_id</a:Code>
<a:CreationDate>1545093935</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631254684</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>bigint</a:DataType>
</o:Column>
<o:Column Id="o21">
<a:ObjectID>C2EE5502-17CE-4BF9-8902-43B2C89E31F9</a:ObjectID>
<a:Name>修改时间</a:Name>
<a:Code>lm_date</a:Code>
<a:CreationDate>1545093935</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631254684</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DefaultValue>CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP</a:DefaultValue>
<a:DataType>datetime</a:DataType>
</o:Column>
</c:Columns>
<c:Keys>
<o:Key Id="o22">
<a:ObjectID>D558CCFE-41C7-43D4-A6FC-2D7F8EBE92C3</a:ObjectID>
<a:Name>Key_1</a:Name>
<a:Code>Key_1</a:Code>
<a:CreationDate>1545093323</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631254684</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<c:Key.Columns>
<o:Column Ref="o9"/>
</c:Key.Columns>
</o:Key>
</c:Keys>
<c:PrimaryKey>
<o:Key Ref="o22"/>
</c:PrimaryKey>
</o:Table>
<o:Table Id="o8">
<a:ObjectID>B6699B12-8B1F-4007-8A4A-221ED3FCE449</a:ObjectID>
<a:Name>match_bicycle_player</a:Name>
<a:Code>match_bicycle_player</a:Code>
<a:CreationDate>1545093257</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631355998</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:Comment>比赛玩家</a:Comment>
<a:TotalSavingCurrency/>
<c:Columns>
<o:Column Id="o23">
<a:ObjectID>4CC96020-26BC-498B-9523-8DD077A0D0FF</a:ObjectID>
<a:Name>主键</a:Name>
<a:Code>id</a:Code>
<a:CreationDate>1545093260</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631255922</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>bigint</a:DataType>
<a:Identity>1</a:Identity>
<a:Column.Mandatory>1</a:Column.Mandatory>
</o:Column>
<o:Column Id="o24">
<a:ObjectID>EF6A6BBB-53F8-4CB5-8EE6-46670F46BC76</a:ObjectID>
<a:Name>比赛id</a:Name>
<a:Code>match_id</a:Code>
<a:CreationDate>1631255998</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631256060</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>bigint</a:DataType>
</o:Column>
<o:Column Id="o25">
<a:ObjectID>DEE2EB7B-751D-4B70-A0BD-B6FE739806DB</a:ObjectID>
<a:Name>比赛用户id</a:Name>
<a:Code>user_id</a:Code>
<a:CreationDate>1631255998</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631256060</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>bigint</a:DataType>
</o:Column>
<o:Column Id="o26">
<a:ObjectID>F7277367-48BB-46BC-9F08-ED5A619E0C18</a:ObjectID>
<a:Name>比赛进入时间</a:Name>
<a:Code>entry_time</a:Code>
<a:CreationDate>1631256060</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631361845</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>datetime</a:DataType>
</o:Column>
<o:Column Id="o27">
<a:ObjectID>DA45EEC3-0971-4EDE-B8C0-E0DEF139A3BB</a:ObjectID>
<a:Name>比赛完成时间</a:Name>
<a:Code>finish_time</a:Code>
<a:CreationDate>1631255998</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631256296</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>datetime</a:DataType>
</o:Column>
<o:Column Id="o28">
<a:ObjectID>1C98F71B-BC45-48C4-95D3-C5548C64176A</a:ObjectID>
<a:Name>比赛用时(秒)</a:Name>
<a:Code>duration</a:Code>
<a:CreationDate>1631256068</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631355877</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>int</a:DataType>
</o:Column>
<o:Column Id="o29">
<a:ObjectID>36666044-A7BB-42F7-B5BC-4F665D89C24E</a:ObjectID>
<a:Name>比赛名次</a:Name>
<a:Code>match_rank</a:Code>
<a:CreationDate>1631256068</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631356086</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>int</a:DataType>
</o:Column>
<o:Column Id="o30">
<a:ObjectID>CBA17A49-D286-43D4-8180-5A45F6059A62</a:ObjectID>
<a:Name>爬坡距离</a:Name>
<a:Code>climb_distance</a:Code>
<a:CreationDate>1631256388</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631256646</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>decimal(18,2)</a:DataType>
<a:Length>18</a:Length>
<a:Precision>2</a:Precision>
</o:Column>
<o:Column Id="o31">
<a:ObjectID>26C17EB6-6BE6-4CA4-A5E2-C204E00B3E96</a:ObjectID>
<a:Name>骑行总长度</a:Name>
<a:Code>distance</a:Code>
<a:CreationDate>1631256388</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631256646</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>decimal(18,2)</a:DataType>
<a:Length>18</a:Length>
<a:Precision>2</a:Precision>
</o:Column>
<o:Column Id="o32">
<a:ObjectID>DE325A64-F727-4481-B191-63550572B9C5</a:ObjectID>
<a:Name>平均功率</a:Name>
<a:Code>avg_ftp</a:Code>
<a:CreationDate>1631256388</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631256646</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>decimal(18,2)</a:DataType>
<a:Length>18</a:Length>
<a:Precision>2</a:Precision>
</o:Column>
<o:Column Id="o33">
<a:ObjectID>4DBFCE39-6D16-4837-A6E7-81CCC5071450</a:ObjectID>
<a:Name>平均速度</a:Name>
<a:Code>avg_speed</a:Code>
<a:CreationDate>1631256388</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631256646</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>decimal(18,2)</a:DataType>
<a:Length>18</a:Length>
<a:Precision>2</a:Precision>
</o:Column>
<o:Column Id="o34">
<a:ObjectID>A9F5555C-08EE-4E4C-B399-77913ABAC521</a:ObjectID>
<a:Name>比赛状态1.完成比赛 2.未完成比赛</a:Name>
<a:Code>status</a:Code>
<a:CreationDate>1631256068</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631256341</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>int</a:DataType>
</o:Column>
<o:Column Id="o35">
<a:ObjectID>31376377-2D69-4DFC-8245-C6CC5F22F425</a:ObjectID>
<a:Name>版本号</a:Name>
<a:Code>version</a:Code>
<a:CreationDate>1545093935</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631255922</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DefaultValue>0</a:DefaultValue>
<a:DataType>bigint</a:DataType>
</o:Column>
<o:Column Id="o36">
<a:ObjectID>723D6FDE-F474-4CA0-A4F5-0078EB57789F</a:ObjectID>
<a:Name>删除标记</a:Name>
<a:Code>deleted</a:Code>
<a:CreationDate>1545094509</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631255922</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DefaultValue>0</a:DefaultValue>
<a:DataType>tinyint</a:DataType>
</o:Column>
<o:Column Id="o37">
<a:ObjectID>3118B598-DE57-4ACA-9781-37564B3D0A2A</a:ObjectID>
<a:Name>创建部门id</a:Name>
<a:Code>ct_dept_id</a:Code>
<a:CreationDate>1545093334</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631255922</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>bigint</a:DataType>
</o:Column>
<o:Column Id="o38">
<a:ObjectID>92227E1F-A7FA-463F-9798-8BE7D2E79699</a:ObjectID>
<a:Name>创建人id</a:Name>
<a:Code>ct_user_id</a:Code>
<a:CreationDate>1545093935</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631255922</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>bigint</a:DataType>
</o:Column>
<o:Column Id="o39">
<a:ObjectID>9E342E3A-9350-4B89-9082-AC61F8A988CE</a:ObjectID>
<a:Name>创建时间</a:Name>
<a:Code>ct_date</a:Code>
<a:CreationDate>1545093935</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631255922</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DefaultValue>CURRENT_TIMESTAMP</a:DefaultValue>
<a:DataType>datetime</a:DataType>
</o:Column>
<o:Column Id="o40">
<a:ObjectID>D6BC874E-2F65-4BEC-BBE5-00FF1E59CA61</a:ObjectID>
<a:Name>修改人id</a:Name>
<a:Code>lm_user_id</a:Code>
<a:CreationDate>1545093935</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631255922</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DataType>bigint</a:DataType>
</o:Column>
<o:Column Id="o41">
<a:ObjectID>E2BBB20F-CDDC-4FC7-9B39-29D7603890E7</a:ObjectID>
<a:Name>修改时间</a:Name>
<a:Code>lm_date</a:Code>
<a:CreationDate>1545093935</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631255922</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<a:DefaultValue>CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP</a:DefaultValue>
<a:DataType>datetime</a:DataType>
</o:Column>
</c:Columns>
<c:Keys>
<o:Key Id="o42">
<a:ObjectID>C5B0C71E-97F5-442B-94A4-A951327D158C</a:ObjectID>
<a:Name>Key_1</a:Name>
<a:Code>Key_1</a:Code>
<a:CreationDate>1545093323</a:CreationDate>
<a:Creator>lmmax</a:Creator>
<a:ModificationDate>1631255922</a:ModificationDate>
<a:Modifier>lmmax</a:Modifier>
<c:Key.Columns>
<o:Column Ref="o23"/>
</c:Key.Columns>
</o:Key>
</c:Keys>
<c:PrimaryKey>
<o:Key Ref="o42"/>
</c:PrimaryKey>
</o:Table>
</c:Tables>
<c:DefaultGroups> <c:DefaultGroups>
<o:Group Id="o5"> <o:Group Id="o43">
<a:ObjectID>BDA35594-331A-4098-8F53-C6E58D8BF7D2</a:ObjectID> <a:ObjectID>BDA35594-331A-4098-8F53-C6E58D8BF7D2</a:ObjectID>
<a:Name>PUBLIC</a:Name> <a:Name>PUBLIC</a:Name>
<a:Code>PUBLIC</a:Code> <a:Code>PUBLIC</a:Code>
...@@ -1576,7 +2036,7 @@ Shadow=0</a:DisplayPreferences> ...@@ -1576,7 +2036,7 @@ Shadow=0</a:DisplayPreferences>
</o:Group> </o:Group>
</c:DefaultGroups> </c:DefaultGroups>
<c:TargetModels> <c:TargetModels>
<o:TargetModel Id="o6"> <o:TargetModel Id="o44">
<a:ObjectID>469A6016-0662-42A0-B72C-BB86DEF48FA3</a:ObjectID> <a:ObjectID>469A6016-0662-42A0-B72C-BB86DEF48FA3</a:ObjectID>
<a:Name>MySQL 5.0</a:Name> <a:Name>MySQL 5.0</a:Name>
<a:Code>MYSQL50</a:Code> <a:Code>MYSQL50</a:Code>
......
package com.antai.sport.http.server.game.api.business.match.bicycle;
import com.antai.sport.http.server.game.api.business.match.bicycle.dto.DtoMatchBicycleResult;
import com.antai.sport.http.server.game.api.business.match.bicycle.dto.RespMatchBicycleList;
import java.util.List;
/**
* @Author liming
* @Date 2021/9/11 19:04
* @Email lmmax@126.com
* @Description:
*/
public interface MatchBicycleBusinessMapper {
List<RespMatchBicycleList> getMatchBicycleList();
List<DtoMatchBicycleResult> getMatchBicyclePlayerRecord(Long matchId);
}
package com.antai.sport.http.server.game.api.business.match.bicycle;
import com.antai.sport.http.server.common.annotation.LoginSportUser;
import com.antai.sport.http.server.common.base.Result;
import com.antai.sport.http.server.game.api.business.match.bicycle.dto.DtoMatchBicycleResult;
import com.antai.sport.http.server.game.api.business.match.bicycle.dto.RespMatchBicycleList;
import com.antai.sport.http.server.repository.sport.entity.SportUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import static com.antai.sport.http.server.common.util.ResultUtil.success;
/**
* @Author liming
* @Date 2021/9/11 18:31
* @Email lmmax@126.com
* @Description:
*/
@RestController()
@RequestMapping("/match/bicycle")
@Api(tags = {"比赛相关接口"})
public class MatchBicycleController {
@Resource
private MatchBicycleService matchBicycleService;
@Resource
private MatchBicyclePlayerService matchBicyclePlayerService;
@GetMapping()
@ApiOperation(value = "获取比赛列表接口", notes = "data为比赛列表数据")
public ResponseEntity<Result<List<RespMatchBicycleList>>> getMatchBicycleList() {
return success(matchBicycleService.getMatchBicycleList());
}
@PostMapping("/entry/{matchId}")
@ApiOperation(value = "加入比赛接口")
public ResponseEntity<Result> entryMatchBicycle(@LoginSportUser SportUser loginUser, @PathVariable Long matchId) {
matchBicycleService.entryMatchBicycle(loginUser, matchId);
return success();
}
@PostMapping("/player/record")
@ApiOperation(value = "比赛数据保存")
public ResponseEntity<Result> saveMatchBicyclePlayerRecord(@RequestBody List<DtoMatchBicycleResult> resultList) {
matchBicyclePlayerService.saveMatchBicyclePlayerRecord(resultList);
return success();
}
@GetMapping("/player/record/{matchId}")
@ApiOperation(value = "比赛数据查询")
public ResponseEntity<Result<List<DtoMatchBicycleResult>>> getMatchBicyclePlayerRecord(@PathVariable Long matchId) {
return success(matchBicyclePlayerService.getMatchBicyclePlayerRecord(matchId));
}
}
package com.antai.sport.http.server.game.api.business.match.bicycle;
import com.antai.sport.http.server.game.api.business.match.bicycle.dto.DtoMatchBicycleResult;
import com.antai.sport.http.server.repository.match.entity.MatchBicyclePlayer;
import com.antai.sport.http.server.repository.match.mapper.MatchBicyclePlayerMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @Author liming
* @Date 2021/9/11 18:32
* @Email lmmax@126.com
* @Description:
*/
@Service
public class MatchBicyclePlayerService extends ServiceImpl<MatchBicyclePlayerMapper, MatchBicyclePlayer> {
@Resource
private MatchBicycleBusinessMapper matchBicycleBusinessMapper;
/**
* 保存比赛结果
*
* @param resultList
*/
public void saveMatchBicyclePlayerRecord(List<DtoMatchBicycleResult> resultList) {
if (resultList == null || resultList.isEmpty()) {
return;
}
List<MatchBicyclePlayer> saveList = new ArrayList<>(resultList.size());
for (DtoMatchBicycleResult item : resultList) {
MatchBicyclePlayer record = new MatchBicyclePlayer();
record.setMatchId(item.getMatchId());
record.setUserId(item.getUserId());
record.setEntryTime(item.getEntryTime());
record.setFinishTime(item.getFinishTime());
record.setDuration(item.getDuration());
record.setMatchRank(item.getMatchRank());
record.setClimbDistance(item.getClimbDistance());
record.setDistance(item.getDistance());
record.setAvgFtp(item.getAvgFtp());
record.setAvgSpeed(item.getAvgSpeed());
record.setStatus(item.getStatus());
saveList.add(record);
}
this.saveBatch(saveList);
}
public List<DtoMatchBicycleResult> getMatchBicyclePlayerRecord(Long matchId) {
return matchBicycleBusinessMapper.getMatchBicyclePlayerRecord(matchId);
}
}
package com.antai.sport.http.server.game.api.business.match.bicycle;
import com.antai.sport.http.server.common.exception.BusinessException;
import com.antai.sport.http.server.game.api.business.match.bicycle.dto.RespMatchBicycleList;
import com.antai.sport.http.server.repository.match.entity.MatchBicycle;
import com.antai.sport.http.server.repository.match.mapper.MatchBicycleMapper;
import com.antai.sport.http.server.repository.sport.entity.SportUser;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
/**
* @Author liming
* @Date 2021/9/11 18:32
* @Email lmmax@126.com
* @Description:
*/
@Service
public class MatchBicycleService extends ServiceImpl<MatchBicycleMapper, MatchBicycle> {
@Resource
private MatchBicycleBusinessMapper matchBicycleBusinessMapper;
public List<RespMatchBicycleList> getMatchBicycleList() {
return matchBicycleBusinessMapper.getMatchBicycleList();
}
public void entryMatchBicycle(SportUser loginUser, Long matchId) {
MatchBicycle match = this.getById(matchId);
if (match == null || match.getEndTime() == null) {
throw new BusinessException("您报名的比赛不存在");
}
LocalDateTime now = LocalDateTime.now();
if (now.isBefore(match.getEntryTime())) {
throw new BusinessException("当前比赛还没到进入时间,请查看比赛详情");
}
if (now.isAfter(match.getEndTime())) {
throw new BusinessException("当前比赛已经结束,您已无法参加");
}
if (now.isAfter(match.getStartTime())) {
throw new BusinessException("当前比赛已经开始,您已无法加入");
}
}
}
package com.antai.sport.http.server.game.api.business.match.bicycle.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @Author liming
* @Date 2021/9/11 19:48
* @Email lmmax@126.com
* @Description:
*/
@Data
@ApiModel("比赛结果")
public class DtoMatchBicycleResult {
@ApiModelProperty("比赛id")
private Long matchId;
@ApiModelProperty("用户id")
private Long userId;
@ApiModelProperty("进入时间 yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime entryTime;
@ApiModelProperty("完成时间 yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime finishTime;
@ApiModelProperty("比赛用时(秒)")
private Integer duration;
@ApiModelProperty("比赛名次")
private Integer matchRank;
@ApiModelProperty("骑行总长度")
private BigDecimal distance;
@ApiModelProperty("爬坡高度")
private BigDecimal climbDistance;
@ApiModelProperty("平均功率")
private BigDecimal avgFtp;
@ApiModelProperty("平均速度")
private BigDecimal avgSpeed;
@ApiModelProperty("比赛状态1.完成比赛 2.未完成比赛")
private Integer status;
}
package com.antai.sport.http.server.game.api.business.match.bicycle.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @Author liming
* @Date 2021/9/11 18:57
* @Email lmmax@126.com
* @Description:
*/
@Data
@ApiModel("比赛列表")
public class RespMatchBicycleList {
@ApiModelProperty("比赛id")
private Long id;
@ApiModelProperty("比赛名称")
private String name;
@ApiModelProperty("允许进入时间")
private LocalDateTime entryTime;
@ApiModelProperty("开始比赛时间")
private LocalDateTime startTime;
@ApiModelProperty("比赛结束时间")
private LocalDateTime endTime;
}
...@@ -45,6 +45,8 @@ project: ...@@ -45,6 +45,8 @@ project:
- /error - /error
- /login - /login
- /login/sms/** - /login/sms/**
- /match/bicycle
- /match/bicycle/player/record
swagger: swagger:
enable: false enable: false
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.antai.sport.http.server.game.api.business.match.bicycle.MatchBicycleBusinessMapper">
<select id="getMatchBicycleList"
resultType="com.antai.sport.http.server.game.api.business.match.bicycle.dto.RespMatchBicycleList">
select *
from match_bicycle
where deleted = 0
order by end_time desc
</select>
<select id="getMatchBicyclePlayerRecord"
resultType="com.antai.sport.http.server.game.api.business.match.bicycle.dto.DtoMatchBicycleResult">
select *
from match_bicycle_player
where deleted = 0
order by match_rank
</select>
</mapper>
package com.antai.sport.http.server.repository.match.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 比赛信息表
* </p>
*
* @author liming
* @since 2021-09-11
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class MatchBicycle implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 比赛名称
*/
private String name;
/**
* 允许进入时间
*/
private LocalDateTime entryTime;
/**
* 比赛开始时间
*/
private LocalDateTime startTime;
/**
* 比赛结束时间
*/
private LocalDateTime endTime;
/**
* 显示顺序
*/
private Integer showOrder;
/**
* 版本号
*/
private Long version;
/**
* 删除标记
*/
private Integer deleted;
/**
* 创建部门id
*/
private Long ctDeptId;
/**
* 创建人id
*/
private Long ctUserId;
/**
* 创建时间
*/
private LocalDateTime ctDate;
/**
* 修改人id
*/
private Long lmUserId;
/**
* 修改时间
*/
private LocalDateTime lmDate;
}
package com.antai.sport.http.server.repository.match.entity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 比赛玩家
* </p>
*
* @author liming
* @since 2021-09-11
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class MatchBicyclePlayer implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 比赛id
*/
private Long matchId;
/**
* 比赛用户id
*/
private Long userId;
/**
* 比赛进入时间
*/
private LocalDateTime entryTime;
/**
* 比赛完成时间
*/
private LocalDateTime finishTime;
/**
* 比赛用时(秒)
*/
private Integer duration;
/**
* 比赛名次
*/
private Integer matchRank;
/**
* 爬坡距离
*/
private BigDecimal climbDistance;
/**
* 骑行总长度
*/
private BigDecimal distance;
/**
* 平均功率
*/
private BigDecimal avgFtp;
/**
* 平均速度
*/
private BigDecimal avgSpeed;
/**
* 比赛状态1.完成比赛 2.未完成比赛
*/
private Integer status;
/**
* 版本号
*/
private Long version;
/**
* 删除标记
*/
private Integer deleted;
/**
* 创建部门id
*/
private Long ctDeptId;
/**
* 创建人id
*/
private Long ctUserId;
/**
* 创建时间
*/
private LocalDateTime ctDate;
/**
* 修改人id
*/
private Long lmUserId;
/**
* 修改时间
*/
private LocalDateTime lmDate;
}
package com.antai.sport.http.server.repository.match.mapper;
import com.antai.sport.http.server.repository.match.entity.MatchBicycle;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 比赛信息表 Mapper 接口
* </p>
*
* @author liming
* @since 2021-09-11
*/
public interface MatchBicycleMapper extends BaseMapper<MatchBicycle> {
}
package com.antai.sport.http.server.repository.match.mapper;
import com.antai.sport.http.server.repository.match.entity.MatchBicyclePlayer;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 比赛玩家 Mapper 接口
* </p>
*
* @author liming
* @since 2021-09-11
*/
public interface MatchBicyclePlayerMapper extends BaseMapper<MatchBicyclePlayer> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.antai.sport.http.server.repository.match.mapper.MatchBicycleMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.antai.sport.http.server.repository.match.mapper.MatchBicyclePlayerMapper">
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment