Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
A
antai-sport-http-server
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
antai-sport
antai-sport-http-server
Commits
5d1bdf8e
Commit
5d1bdf8e
authored
Apr 11, 2022
by
liming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
房间模式
parent
5556e11d
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
433 additions
and
0 deletions
+433
-0
GameMode.java
.../java/com/antai/sport/http/server/constants/GameMode.java
+2
-0
RoomModeRecordStatus.java
...tai/sport/http/server/constants/RoomModeRecordStatus.java
+8
-0
RoomModeStatus.java
...com/antai/sport/http/server/constants/RoomModeStatus.java
+8
-0
RoomMode.java
...port/http/server/repository/roommode/entity/RoomMode.java
+87
-0
RoomModePlayerRecord.java
...rver/repository/roommode/entity/RoomModePlayerRecord.java
+87
-0
RoomModeMapper.java
...ttp/server/repository/roommode/mapper/RoomModeMapper.java
+16
-0
RoomModePlayerRecordMapper.java
...epository/roommode/mapper/RoomModePlayerRecordMapper.java
+16
-0
RoomModeMapper.xml
...ory/src/main/resources/mapper/roommode/RoomModeMapper.xml
+5
-0
RoomModePlayerRecordMapper.xml
.../resources/mapper/roommode/RoomModePlayerRecordMapper.xml
+5
-0
RoomModeController.java
...r/api/business/roommode/conroller/RoomModeController.java
+45
-0
RoomModeConverter.java
...er/api/business/roommode/converter/RoomModeConverter.java
+18
-0
ReqRoomInit.java
.../server/server/api/business/roommode/dto/ReqRoomInit.java
+30
-0
RespRoomInit.java
...server/server/api/business/roommode/dto/RespRoomInit.java
+20
-0
RoomModeService.java
...server/api/business/roommode/service/RoomModeService.java
+86
-0
No files found.
constants/src/main/java/com/antai/sport/http/server/constants/GameMode.java
View file @
5d1bdf8e
...
...
@@ -11,4 +11,6 @@ public class GameMode {
public
final
static
Integer
COURSE_TRAINING
=
40
;
//团练
public
final
static
Integer
GROUP_TRAINING
=
50
;
//房间模式
public
final
static
Integer
ROOM_MODE
=
60
;
}
constants/src/main/java/com/antai/sport/http/server/constants/RoomModeRecordStatus.java
0 → 100644
View file @
5d1bdf8e
package
com
.
antai
.
sport
.
http
.
server
.
constants
;
public
class
RoomModeRecordStatus
{
//未结束
public
final
static
Integer
UNFINISHED
=
10
;
//已结束
public
final
static
Integer
FINISHED
=
20
;
}
constants/src/main/java/com/antai/sport/http/server/constants/RoomModeStatus.java
0 → 100644
View file @
5d1bdf8e
package
com
.
antai
.
sport
.
http
.
server
.
constants
;
public
class
RoomModeStatus
{
//未结束
public
final
static
Integer
UNFINISHED
=
10
;
//已结束
public
final
static
Integer
FINISHED
=
20
;
}
repository/src/main/java/com/antai/sport/http/server/repository/roommode/entity/RoomMode.java
0 → 100644
View file @
5d1bdf8e
package
com
.
antai
.
sport
.
http
.
server
.
repository
.
roommode
.
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 2022-04-11
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
RoomMode
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 房间名称
*/
private
String
name
;
/**
* 地图名称
*/
private
String
map
;
/**
* 路线名称
*/
private
String
path
;
/**
* 距离
*/
private
BigDecimal
distance
;
/**
* 爬坡高度
*/
private
BigDecimal
climbDistance
;
/**
* 玩家数量
*/
private
Integer
playerNum
;
/**
* 是否公开房间 0:不公开 1:公开
*/
private
Boolean
publicStatus
;
/**
* 模式: 10:竞速模式 2:道具模式
*/
private
Integer
mode
;
/**
* 状态 10:未结束 20:已结束
*/
private
Integer
status
;
/**
* 创建时间
*/
private
LocalDateTime
createTime
;
/**
* 修改时间
*/
private
LocalDateTime
updateTime
;
}
repository/src/main/java/com/antai/sport/http/server/repository/roommode/entity/RoomModePlayerRecord.java
0 → 100644
View file @
5d1bdf8e
package
com
.
antai
.
sport
.
http
.
server
.
repository
.
roommode
.
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 2022-04-11
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
RoomModePlayerRecord
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 房间id
*/
private
Long
roomId
;
/**
* 玩家id
*/
private
Long
playerId
;
/**
* 比赛用时(秒)
*/
private
Integer
duration
;
/**
* 比赛名次
*/
private
Integer
matchRank
;
/**
* 骑行总长度
*/
private
BigDecimal
distance
;
/**
* 爬坡距离
*/
private
BigDecimal
climbDistance
;
/**
* 平均功率
*/
private
BigDecimal
avgFtp
;
/**
* 平均速度
*/
private
BigDecimal
avgSpeed
;
/**
* 比赛状态10:完成比赛 20:未完成比赛
*/
private
Integer
status
;
/**
* 创建时间
*/
private
LocalDateTime
createTime
;
/**
* 修改时间
*/
private
LocalDateTime
updateTime
;
}
repository/src/main/java/com/antai/sport/http/server/repository/roommode/mapper/RoomModeMapper.java
0 → 100644
View file @
5d1bdf8e
package
com
.
antai
.
sport
.
http
.
server
.
repository
.
roommode
.
mapper
;
import
com.antai.sport.http.server.repository.roommode.entity.RoomMode
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
/**
* <p>
* Mapper 接口
* </p>
*
* @author liming
* @since 2022-04-11
*/
public
interface
RoomModeMapper
extends
BaseMapper
<
RoomMode
>
{
}
repository/src/main/java/com/antai/sport/http/server/repository/roommode/mapper/RoomModePlayerRecordMapper.java
0 → 100644
View file @
5d1bdf8e
package
com
.
antai
.
sport
.
http
.
server
.
repository
.
roommode
.
mapper
;
import
com.antai.sport.http.server.repository.roommode.entity.RoomModePlayerRecord
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
/**
* <p>
* Mapper 接口
* </p>
*
* @author liming
* @since 2022-04-11
*/
public
interface
RoomModePlayerRecordMapper
extends
BaseMapper
<
RoomModePlayerRecord
>
{
}
repository/src/main/resources/mapper/roommode/RoomModeMapper.xml
0 → 100644
View file @
5d1bdf8e
<?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.roommode.mapper.RoomModeMapper"
>
</mapper>
repository/src/main/resources/mapper/roommode/RoomModePlayerRecordMapper.xml
0 → 100644
View file @
5d1bdf8e
<?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.roommode.mapper.RoomModePlayerRecordMapper"
>
</mapper>
server-api/src/main/java/com/antai/sport/http/server/server/api/business/roommode/conroller/RoomModeController.java
0 → 100644
View file @
5d1bdf8e
package
com
.
antai
.
sport
.
http
.
server
.
server
.
api
.
business
.
roommode
.
conroller
;
import
com.antai.sport.http.server.common.base.Result
;
import
com.antai.sport.http.server.server.api.business.roommode.dto.ReqRoomInit
;
import
com.antai.sport.http.server.server.api.business.roommode.dto.RespRoomInit
;
import
com.antai.sport.http.server.server.api.business.roommode.service.RoomModeService
;
import
com.antai.sport.http.server.server.api.common.dto.CyclingDataDTO
;
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
;
@RequestMapping
(
"/room/mode"
)
@RestController
@Api
(
tags
=
{
"房间模式"
})
public
class
RoomModeController
{
@Resource
private
RoomModeService
roomModeService
;
@ApiOperation
(
value
=
"初始化房间"
)
@PostMapping
(
"/init"
)
public
ResponseEntity
<
Result
<
RespRoomInit
>>
init
(
@RequestBody
ReqRoomInit
initParam
)
{
return
success
(
roomModeService
.
init
(
initParam
));
}
@ApiOperation
(
"记录上传"
)
@PostMapping
(
"/record/upload"
)
public
ResponseEntity
<
Result
>
upload
(
@RequestBody
List
<
CyclingDataDTO
>
dataList
)
{
roomModeService
.
upload
(
dataList
);
return
success
();
}
@ApiOperation
(
"关闭房间"
)
@GetMapping
(
"/close/{roomId}"
)
public
ResponseEntity
<
Result
>
closeRoom
(
@PathVariable
(
"roomId"
)
Long
roomId
)
{
roomModeService
.
closeRoom
(
roomId
);
return
success
();
}
}
server-api/src/main/java/com/antai/sport/http/server/server/api/business/roommode/converter/RoomModeConverter.java
0 → 100644
View file @
5d1bdf8e
package
com
.
antai
.
sport
.
http
.
server
.
server
.
api
.
business
.
roommode
.
converter
;
import
com.antai.sport.http.server.repository.roommode.entity.RoomMode
;
import
com.antai.sport.http.server.repository.roommode.entity.RoomModePlayerRecord
;
import
com.antai.sport.http.server.server.api.business.roommode.dto.ReqRoomInit
;
import
com.antai.sport.http.server.server.api.common.dto.CyclingDataDTO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mapping
;
@Mapper
(
componentModel
=
"spring"
)
public
interface
RoomModeConverter
{
@Mapping
(
source
=
"status"
,
target
=
"status"
)
RoomMode
roomInitParamToRoomMode
(
ReqRoomInit
reqRoomInit
,
Integer
status
);
@Mapping
(
source
=
"data.recordId"
,
target
=
"id"
)
@Mapping
(
source
=
"status"
,
target
=
"status"
)
RoomModePlayerRecord
toRoomModePlayerRecord
(
CyclingDataDTO
data
,
Integer
status
);
}
server-api/src/main/java/com/antai/sport/http/server/server/api/business/roommode/dto/ReqRoomInit.java
0 → 100644
View file @
5d1bdf8e
package
com
.
antai
.
sport
.
http
.
server
.
server
.
api
.
business
.
roommode
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.List
;
@Data
@ApiModel
(
"初始化房间对象"
)
public
class
ReqRoomInit
{
@ApiModelProperty
(
"房间名称"
)
private
String
name
;
@ApiModelProperty
(
"地图key"
)
private
String
map
;
@ApiModelProperty
(
"赛道key"
)
private
String
path
;
@ApiModelProperty
(
"距离(米)"
)
private
BigDecimal
distance
;
@ApiModelProperty
(
"爬坡高度(米)"
)
private
BigDecimal
climbDistance
;
@ApiModelProperty
(
"房间是否公开 0:不公开 1:公开"
)
private
Boolean
publicStatus
;
@ApiModelProperty
(
"模式: 10:竞速模式 20:道具模式"
)
private
Integer
mode
;
@ApiModelProperty
(
"用户id列表"
)
private
List
<
Long
>
userIdList
;
}
server-api/src/main/java/com/antai/sport/http/server/server/api/business/roommode/dto/RespRoomInit.java
0 → 100644
View file @
5d1bdf8e
package
com
.
antai
.
sport
.
http
.
server
.
server
.
api
.
business
.
roommode
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Map
;
@Data
@ApiModel
(
"房间初始化响应数据"
)
public
class
RespRoomInit
{
@ApiModelProperty
(
"运动模式 1.自行车 2.跑步"
)
private
Integer
sportType
;
@ApiModelProperty
(
"模式"
)
private
Integer
gameMode
;
@ApiModelProperty
(
"房间Id"
)
private
Long
roomId
;
@ApiModelProperty
(
"用户对应记录字典,key为用户id value为游戏记录id"
)
private
Map
<
Long
,
Long
>
userRecordIdMap
;
}
server-api/src/main/java/com/antai/sport/http/server/server/api/business/roommode/service/RoomModeService.java
0 → 100644
View file @
5d1bdf8e
package
com
.
antai
.
sport
.
http
.
server
.
server
.
api
.
business
.
roommode
.
service
;
import
com.antai.sport.http.server.common.exception.BusinessException
;
import
com.antai.sport.http.server.constants.*
;
import
com.antai.sport.http.server.repository.roommode.entity.RoomMode
;
import
com.antai.sport.http.server.repository.roommode.entity.RoomModePlayerRecord
;
import
com.antai.sport.http.server.repository.roommode.mapper.RoomModeMapper
;
import
com.antai.sport.http.server.repository.roommode.mapper.RoomModePlayerRecordMapper
;
import
com.antai.sport.http.server.repository.tour.entity.TourRecord
;
import
com.antai.sport.http.server.server.api.business.roommode.converter.RoomModeConverter
;
import
com.antai.sport.http.server.server.api.business.roommode.dto.ReqRoomInit
;
import
com.antai.sport.http.server.server.api.business.roommode.dto.RespRoomInit
;
import
com.antai.sport.http.server.server.api.common.dto.CyclingDataDTO
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Service
public
class
RoomModeService
{
@Resource
private
RoomModeMapper
roomModeMapper
;
@Resource
private
RoomModePlayerRecordMapper
roomModePlayerRecordMapper
;
@Resource
private
RoomModeConverter
roomModeConverter
;
@Transactional
public
RespRoomInit
init
(
ReqRoomInit
initParam
)
{
if
(
initParam
.
getUserIdList
()
==
null
||
initParam
.
getUserIdList
().
size
()
==
0
)
{
throw
new
BusinessException
(
"没有用户加入到房间"
);
}
//初始化房间参数
RespRoomInit
resp
=
new
RespRoomInit
();
resp
.
setSportType
(
SportType
.
BICYCLE
);
resp
.
setGameMode
(
GameMode
.
ROOM_MODE
);
RoomMode
room
=
roomModeConverter
.
roomInitParamToRoomMode
(
initParam
,
RoomModeStatus
.
UNFINISHED
);
room
.
setPlayerNum
(
initParam
.
getUserIdList
().
size
());
roomModeMapper
.
insert
(
room
);
resp
.
setRoomId
(
room
.
getId
());
//初始化玩家记录
Map
<
Long
,
Long
>
userRecordIdMap
=
new
HashMap
<>();
initParam
.
getUserIdList
().
forEach
(
userId
->
{
RoomModePlayerRecord
record
=
new
RoomModePlayerRecord
();
record
.
setRoomId
(
room
.
getId
());
record
.
setPlayerId
(
userId
);
record
.
setStatus
(
RoomModeRecordStatus
.
UNFINISHED
);
roomModePlayerRecordMapper
.
insert
(
record
);
userRecordIdMap
.
put
(
userId
,
record
.
getId
());
});
resp
.
setUserRecordIdMap
(
userRecordIdMap
);
return
resp
;
}
/**
* 上传数据
* @param dataList
*/
@Transactional
public
void
upload
(
List
<
CyclingDataDTO
>
dataList
)
{
dataList
.
forEach
(
item
->
{
RoomModePlayerRecord
record
=
roomModeConverter
.
toRoomModePlayerRecord
(
item
,
RoomModeRecordStatus
.
FINISHED
);
roomModePlayerRecordMapper
.
updateById
(
record
);
});
}
/**
* 关闭房间
* @param roomId
*/
public
void
closeRoom
(
Long
roomId
){
RoomMode
roomMode
=
new
RoomMode
();
roomMode
.
setId
(
roomId
);
roomMode
.
setStatus
(
RoomModeStatus
.
FINISHED
);
roomModeMapper
.
updateById
(
roomMode
);
}
}
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