Commit 676b0037 authored by liming's avatar liming

房间模式

parent 5d1bdf8e
...@@ -3,6 +3,7 @@ package com.antai.sport.http.server.server.api.business.roommode.conroller; ...@@ -3,6 +3,7 @@ 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.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.ReqRoomInit;
import com.antai.sport.http.server.server.api.business.roommode.dto.RespRoomInit; import com.antai.sport.http.server.server.api.business.roommode.dto.RespRoomInit;
import com.antai.sport.http.server.server.api.business.roommode.dto.RespRoomRank;
import com.antai.sport.http.server.server.api.business.roommode.service.RoomModeService; import com.antai.sport.http.server.server.api.business.roommode.service.RoomModeService;
import com.antai.sport.http.server.server.api.common.dto.CyclingDataDTO; import com.antai.sport.http.server.server.api.common.dto.CyclingDataDTO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -42,4 +43,10 @@ public class RoomModeController { ...@@ -42,4 +43,10 @@ public class RoomModeController {
roomModeService.closeRoom(roomId); roomModeService.closeRoom(roomId);
return success(); return success();
} }
@ApiOperation("查看排名")
@GetMapping("/rank/{roomId}")
public ResponseEntity<Result<List<RespRoomRank>>> rank(@PathVariable("roomId") Long roomId) {
return success(roomModeService.rank(roomId));
}
} }
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;
@ApiModel("房间排名")
@Data
public class RespRoomRank {
@ApiModelProperty("用户Id")
private Long userId;
@ApiModelProperty("昵称")
private String nickname;
@ApiModelProperty("头像")
private String avatar;
@ApiModelProperty("比赛名次(没有可以不填)")
private Integer matchRank;
@ApiModelProperty("用时(秒)")
private Integer duration;
@ApiModelProperty("骑行总长度")
private BigDecimal distance;
@ApiModelProperty("爬坡高度")
private BigDecimal climbDistance;
@ApiModelProperty("平均功率")
private BigDecimal avgFtp;
@ApiModelProperty("平均速度")
private BigDecimal avgSpeed;
}
package com.antai.sport.http.server.server.api.business.roommode.mapper;
import com.antai.sport.http.server.server.api.business.roommode.dto.RespRoomRank;
import java.util.List;
public interface RoomBusinessMapper {
List<RespRoomRank> getRoomBank(Long roomId);
}
package com.antai.sport.http.server.server.api.business.roommode.service; 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.common.exception.BusinessException;
import com.antai.sport.http.server.constants.*; import com.antai.sport.http.server.constants.GameMode;
import com.antai.sport.http.server.constants.RoomModeRecordStatus;
import com.antai.sport.http.server.constants.RoomModeStatus;
import com.antai.sport.http.server.constants.SportType;
import com.antai.sport.http.server.repository.roommode.entity.RoomMode; 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.entity.RoomModePlayerRecord;
import com.antai.sport.http.server.repository.roommode.mapper.RoomModeMapper; 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.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.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.ReqRoomInit;
import com.antai.sport.http.server.server.api.business.roommode.dto.RespRoomInit; import com.antai.sport.http.server.server.api.business.roommode.dto.RespRoomInit;
import com.antai.sport.http.server.server.api.business.roommode.dto.RespRoomRank;
import com.antai.sport.http.server.server.api.business.roommode.mapper.RoomBusinessMapper;
import com.antai.sport.http.server.server.api.common.dto.CyclingDataDTO; 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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -28,6 +31,9 @@ public class RoomModeService { ...@@ -28,6 +31,9 @@ public class RoomModeService {
@Resource @Resource
private RoomModePlayerRecordMapper roomModePlayerRecordMapper; private RoomModePlayerRecordMapper roomModePlayerRecordMapper;
@Resource
private RoomBusinessMapper roomBusinessMapper;
@Resource @Resource
private RoomModeConverter roomModeConverter; private RoomModeConverter roomModeConverter;
...@@ -40,7 +46,7 @@ public class RoomModeService { ...@@ -40,7 +46,7 @@ public class RoomModeService {
RespRoomInit resp = new RespRoomInit(); RespRoomInit resp = new RespRoomInit();
resp.setSportType(SportType.BICYCLE); resp.setSportType(SportType.BICYCLE);
resp.setGameMode(GameMode.ROOM_MODE); resp.setGameMode(GameMode.ROOM_MODE);
RoomMode room = roomModeConverter.roomInitParamToRoomMode(initParam,RoomModeStatus.UNFINISHED); RoomMode room = roomModeConverter.roomInitParamToRoomMode(initParam, RoomModeStatus.UNFINISHED);
room.setPlayerNum(initParam.getUserIdList().size()); room.setPlayerNum(initParam.getUserIdList().size());
roomModeMapper.insert(room); roomModeMapper.insert(room);
resp.setRoomId(room.getId()); resp.setRoomId(room.getId());
...@@ -63,24 +69,36 @@ public class RoomModeService { ...@@ -63,24 +69,36 @@ public class RoomModeService {
/** /**
* 上传数据 * 上传数据
*
* @param dataList * @param dataList
*/ */
@Transactional @Transactional
public void upload(List<CyclingDataDTO> dataList) { public void upload(List<CyclingDataDTO> dataList) {
dataList.forEach(item -> { dataList.forEach(item -> {
RoomModePlayerRecord record = roomModeConverter.toRoomModePlayerRecord(item,RoomModeRecordStatus.FINISHED); RoomModePlayerRecord record = roomModeConverter.toRoomModePlayerRecord(item, RoomModeRecordStatus.FINISHED);
roomModePlayerRecordMapper.updateById(record); roomModePlayerRecordMapper.updateById(record);
}); });
} }
/** /**
* 关闭房间 * 关闭房间
*
* @param roomId * @param roomId
*/ */
public void closeRoom(Long roomId){ public void closeRoom(Long roomId) {
RoomMode roomMode = new RoomMode(); RoomMode roomMode = new RoomMode();
roomMode.setId(roomId); roomMode.setId(roomId);
roomMode.setStatus(RoomModeStatus.FINISHED); roomMode.setStatus(RoomModeStatus.FINISHED);
roomModeMapper.updateById(roomMode); roomModeMapper.updateById(roomMode);
} }
/**
* 获取房间排名
*
* @param roomId
* @return
*/
public List<RespRoomRank> rank(Long roomId) {
return roomBusinessMapper.getRoomBank(roomId);
}
} }
<?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.server.api.business.roommode.mapper.RoomBusinessMapper">
<select id="getRoomBank" resultType="com.antai.sport.http.server.server.api.business.roommode.dto.RespRoomRank">
select t1.player_id as user_id,
t2.avatar,
t2.nickname,
t1.*
from room_mode_player_record t1
left join sport_user t2 on t1.player_id = t2.id
where t1.room_id = #{roomId}
</select>
</mapper>
\ No newline at end of file
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