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;
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.dto.RespRoomRank;
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;
......@@ -42,4 +43,10 @@ public class RoomModeController {
roomModeService.closeRoom(roomId);
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;
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.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.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.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -28,6 +31,9 @@ public class RoomModeService {
@Resource
private RoomModePlayerRecordMapper roomModePlayerRecordMapper;
@Resource
private RoomBusinessMapper roomBusinessMapper;
@Resource
private RoomModeConverter roomModeConverter;
......@@ -40,7 +46,7 @@ public class RoomModeService {
RespRoomInit resp = new RespRoomInit();
resp.setSportType(SportType.BICYCLE);
resp.setGameMode(GameMode.ROOM_MODE);
RoomMode room = roomModeConverter.roomInitParamToRoomMode(initParam,RoomModeStatus.UNFINISHED);
RoomMode room = roomModeConverter.roomInitParamToRoomMode(initParam, RoomModeStatus.UNFINISHED);
room.setPlayerNum(initParam.getUserIdList().size());
roomModeMapper.insert(room);
resp.setRoomId(room.getId());
......@@ -63,24 +69,36 @@ public class RoomModeService {
/**
* 上传数据
*
* @param dataList
*/
@Transactional
public void upload(List<CyclingDataDTO> dataList) {
dataList.forEach(item -> {
RoomModePlayerRecord record = roomModeConverter.toRoomModePlayerRecord(item,RoomModeRecordStatus.FINISHED);
RoomModePlayerRecord record = roomModeConverter.toRoomModePlayerRecord(item, RoomModeRecordStatus.FINISHED);
roomModePlayerRecordMapper.updateById(record);
});
}
/**
* 关闭房间
*
* @param roomId
*/
public void closeRoom(Long roomId){
public void closeRoom(Long roomId) {
RoomMode roomMode = new RoomMode();
roomMode.setId(roomId);
roomMode.setStatus(RoomModeStatus.FINISHED);
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