Commit 31a6b897 authored by liming's avatar liming

漫游详情记录查询

parent 50fca917
......@@ -48,6 +48,11 @@ public class RoomModePlayerRecord implements Serializable {
*/
private Integer matchRank;
/**
* 比赛完成时间
*/
private LocalDateTime finishTime;
/**
* 骑行总长度
*/
......
package com.antai.sport.http.server.server.api.business.simplematch.dto;
import com.antai.sport.http.server.server.api.common.dto.CyclingDataDTO;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@ApiModel("日常赛玩家记录上传")
public class ReqSimpleMatchRecord extends CyclingDataDTO {
@ApiModelProperty("状态 10:未完赛 20:已完赛")
public Integer status;
@ApiModelProperty("完成时间 yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
public LocalDateTime finishTime;
}
package com.antai.sport.http.server.server.api.business.teamtraining.dto;
import com.antai.sport.http.server.server.api.common.dto.CyclingDataDTO;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@ApiModel("日常赛团练记录上传")
public class TeamTrainingRecordUploadDTO extends CyclingDataDTO {
@ApiModelProperty("状态 10:未完赛 20:已完赛")
public Integer status;
@ApiModelProperty("完成时间 yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
public LocalDateTime finishTime;
}
......@@ -11,6 +11,8 @@ import java.time.LocalDateTime;
@Data
@ApiModel("用户训练记录")
public class SportUserTrainingLogVO {
@ApiModelProperty("训练记录Id")
private Integer id;
@ApiModelProperty("运动类型 1:自行车 2:跑步")
private Integer sportType;
@ApiModelProperty("运动模式 10:漫游 20:日常赛 30:系列赛 40:课程训练 50: 团练 60:房间模式")
......
package com.antai.sport.http.server.server.api.business.traininglog.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;
@Data
@ApiModel("用户训练详情关联排名")
public class TrainingDetailRankVO {
@ApiModelProperty("用户Id")
private Long playerId;
@ApiModelProperty("昵称")
private String nickname;
@ApiModelProperty("头像")
private String avatar;
@ApiModelProperty("比赛名次")
private Integer gameRank;
@ApiModelProperty("用时(秒)")
private Integer duration;
@ApiModelProperty("骑行总长度")
private BigDecimal distance;
@ApiModelProperty("爬坡高度")
private BigDecimal climbDistance;
@ApiModelProperty("平均功率")
private BigDecimal avgFtp;
@ApiModelProperty("平均速度")
private BigDecimal avgSpeed;
@ApiModelProperty("完成时间 yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
public LocalDateTime finishTime;
@ApiModelProperty("体重")
private BigDecimal weight;
@ApiModelProperty("1分钟平均最佳FTP")
private BigDecimal oneMinutesFtp;
@ApiModelProperty("5分钟平均最佳FTP")
private BigDecimal fiveMinutesFtp;
@ApiModelProperty("20分钟平均最佳FTP")
private BigDecimal twentyMinutesFtp;
@ApiModelProperty("1分钟平均最佳功体比")
private BigDecimal oneMinutesWkg;
@ApiModelProperty("5分钟平均最佳功体比")
private BigDecimal fiveMinutesWkg;
@ApiModelProperty("20分钟平均最佳功体比")
private BigDecimal twentyMinutesWkg;
@ApiModelProperty("得分")
private BigDecimal score;
@ApiModelProperty("比赛状态10:未完成比赛 20:完成比赛")
private Integer status;
}
package com.antai.sport.http.server.server.api.business.traininglog.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;
import java.util.List;
@Data
@ApiModel("用户训练记录详情")
public class TrainingDetailVO {
@ApiModelProperty("运动类型 1:自行车 2:跑步")
private Integer sportType;
@ApiModelProperty("运动模式 10:漫游 20:日常赛 30:系列赛 40:课程训练 50: 团练 60:房间模式")
private Integer gameMode;
@ApiModelProperty("玩家id")
private Long playerId;
@ApiModelProperty("主数据id 如比赛为比赛id 房间模式为房间id 漫游为漫游记录id")
private Long sourceId;
@ApiModelProperty("源头名称")
private String sourceName;
@ApiModelProperty("运动记录Id")
private Long recordId;
@ApiModelProperty("地图名称")
private String mapName;
@ApiModelProperty("赛道名称")
private String pathName;
@ApiModelProperty("卡路里")
private Integer calorie;
@ApiModelProperty("点赞数量")
private Integer praiseNum;
@ApiModelProperty("比赛名次")
private Integer matchRank;
@ApiModelProperty("用时(秒)")
private Integer duration;
@ApiModelProperty("骑行总长度")
private BigDecimal distance;
@ApiModelProperty("爬坡高度")
private BigDecimal climbDistance;
@ApiModelProperty("平均功率")
private BigDecimal avgFtp;
@ApiModelProperty("平均速度")
private BigDecimal avgSpeed;
@ApiModelProperty("记录时间 yyyy-MM-dd HH:mm")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private LocalDateTime createTime;
@ApiModelProperty("体重")
private BigDecimal weight;
@ApiModelProperty("1分钟平均最佳FTP")
private BigDecimal oneMinutesFtp;
@ApiModelProperty("5分钟平均最佳FTP")
private BigDecimal fiveMinutesFtp;
@ApiModelProperty("20分钟平均最佳FTP")
private BigDecimal twentyMinutesFtp;
@ApiModelProperty("1分钟平均最佳功体比")
private BigDecimal oneMinutesWkg;
@ApiModelProperty("5分钟平均最佳功体比")
private BigDecimal fiveMinutesWkg;
@ApiModelProperty("20分钟平均最佳功体比")
private BigDecimal twentyMinutesWkg;
@ApiModelProperty("得分")
private BigDecimal score;
@ApiModelProperty("比赛状态10:未完成比赛 20:完成比赛")
private Integer status;
@ApiModelProperty("记录关联排名")
List<TrainingDetailRankVO> rankList;
}
......@@ -3,6 +3,8 @@ package com.antai.sport.http.server.server.api.business.traininglog.mapper;
import com.antai.sport.http.server.repository.sport.entity.SportUserTrainingLog;
import com.antai.sport.http.server.server.api.business.traininglog.dto.SportUserTrainingLogSummaryVO;
import com.antai.sport.http.server.server.api.business.traininglog.dto.SportUserTrainingLogVO;
import com.antai.sport.http.server.server.api.business.traininglog.dto.TrainingDetailRankVO;
import com.antai.sport.http.server.server.api.business.traininglog.dto.TrainingDetailVO;
import com.antai.sport.http.server.server.api.business.user.dto.ScheduleResponseDTO;
import org.apache.ibatis.annotations.Param;
......@@ -17,7 +19,11 @@ public interface SportUserTrainingLogBusinessMapper {
@Param("beginDate") LocalDate beginDate,
@Param("endDate") LocalDate endDate);
List<SportUserTrainingLogVO> getSportUserTrainingLog(@Param("userId") Long userId,@Param("date") LocalDate date,@Param("gameMode") Integer gameMod);
List<SportUserTrainingLogVO> getSportUserTrainingLog(@Param("userId") Long userId, @Param("date") LocalDate date, @Param("gameMode") Integer gameMod);
List<ScheduleResponseDTO> getMonthTrainingSummary(@Param("playerId") Long playerId,@Param("beginDate") LocalDate beginDate,@Param("endDate")LocalDate endDate,@Param("today") LocalDate today);
List<ScheduleResponseDTO> getMonthTrainingSummary(@Param("playerId") Long playerId, @Param("beginDate") LocalDate beginDate, @Param("endDate") LocalDate endDate, @Param("today") LocalDate today);
TrainingDetailVO getSportUserTrainingLogDetail(@Param("id") Long id);
List<TrainingDetailRankVO> getRank(@Param("gameMode") Integer gameMode, @Param("sourceId") Long sourceId);
}
......@@ -19,6 +19,7 @@ import com.antai.sport.http.server.server.api.business.teamtraining.mapper.TeamT
import com.antai.sport.http.server.server.api.business.traininglog.converter.SportUserTrainingLogConverter;
import com.antai.sport.http.server.server.api.business.traininglog.dto.SportUserTrainingLogSummaryVO;
import com.antai.sport.http.server.server.api.business.traininglog.dto.SportUserTrainingLogVO;
import com.antai.sport.http.server.server.api.business.traininglog.dto.TrainingDetailVO;
import com.antai.sport.http.server.server.api.business.traininglog.mapper.SportUserTrainingLogBusinessMapper;
import com.antai.sport.http.server.server.api.business.user.converter.SportUserConverter;
import com.antai.sport.http.server.server.api.business.user.dto.*;
......@@ -306,5 +307,19 @@ public class SportUserTrainingLogService {
return resultList;
}
/**
* 获取比赛详情
*
* @param id
* @return
*/
public TrainingDetailVO getTrainingDetail(Long id) {
TrainingDetailVO result = sportUserTrainingLogBusinessMapper.getSportUserTrainingLogDetail(id);
if (SportType.BICYCLE.equals(result.getSportType())
&& (GameMode.SIMPLE_MATCH.equals(result.getGameMode()) || GameMode.GROUP_TRAINING.equals(result.getGameMode()) || GameMode.ROOM_MODE.equals(result.getGameMode()))) {
result.setRankList(sportUserTrainingLogBusinessMapper.getRank(result.getGameMode(), result.getSourceId()));
}
return result;
}
}
......@@ -2,6 +2,7 @@ package com.antai.sport.http.server.server.api.business.user.controller;
import com.antai.sport.http.server.common.base.Result;
import com.antai.sport.http.server.server.api.business.traininglog.dto.SportUserTrainingLogVO;
import com.antai.sport.http.server.server.api.business.traininglog.dto.TrainingDetailVO;
import com.antai.sport.http.server.server.api.business.traininglog.service.SportUserTrainingLogService;
import com.antai.sport.http.server.server.api.business.user.dto.*;
import com.antai.sport.http.server.server.api.business.user.service.SportUserService;
......@@ -55,4 +56,10 @@ public class SportUserController {
public ResponseEntity<Result<List<ScheduleResponseDTO>>> getSchedule(@PathVariable("userId") Long userId, @RequestParam Integer year, @RequestParam Integer month) {
return success(sportUserTrainingLogService.getSchedule(userId, year, month));
}
@ApiOperation("查询用户运动记录详情")
@GetMapping("/training/log/{id}")
public ResponseEntity<Result<TrainingDetailVO>> getSportUserTrainingLogRank(@PathVariable("id") Long Id) {
return success(sportUserTrainingLogService.getTrainingDetail(Id));
}
}
package com.antai.sport.http.server.server.api.common.dto;
import com.antai.sport.http.server.server.api.utils.ScoreUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -8,6 +9,7 @@ import lombok.Data;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
@Data
@ApiModel("基础骑行数据上传对象")
......@@ -36,6 +38,11 @@ public class CyclingDataDTO {
private BigDecimal twentyMinutesFtp;
@ApiModelProperty("fit文件地址")
private String fitUrl;
@ApiModelProperty("状态 10:未完赛 20:已完赛")
public Integer status;
@ApiModelProperty("完成时间 yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
public LocalDateTime finishTime;
@ApiModelProperty(hidden = true)
@JsonIgnore
......
......@@ -16,7 +16,7 @@
</select>
<select id="getSportUserTrainingLog" resultType="com.antai.sport.http.server.server.api.business.traininglog.dto.SportUserTrainingLogVO">
select t1.sport_type,t1.game_mode,t1.player_id,t1.source_id,t1.source_name,t1.record_id,
select t1.id,t1.sport_type,t1.game_mode,t1.player_id,t1.source_id,t1.source_name,t1.record_id,
t2.map_name,t3.path_name,t1.calorie,t1.duration,t1.match_rank,
t1.distance,t1.climb_distance,t1.avg_ftp,t1.avg_speed,t1.praise_num,t1.create_time
from sport_user_training_log t1
......@@ -42,4 +42,45 @@
) t1
group by day
</select>
<select id="getSportUserTrainingLogDetail" resultType="com.antai.sport.http.server.server.api.business.traininglog.dto.TrainingDetailVO">
select t1.*,t2.map_name,t3.path_name
from sport_user_training_log t1
left join map t2 on t1.map = t2.map_key
left join map_path t3 on t1.path = t3.path_key
where t1.id = #{id}
</select>
<select id="getRank" resultType="com.antai.sport.http.server.server.api.business.traininglog.dto.TrainingDetailRankVO">
<if test="gameMode == 20">
select t1.*,
t1.match_rank as game_rank,
t2.avatar,
t2.nickname
from simple_match_player_record t1
left join sport_user t2 on t1.player_id = t2.id
where t1.match_id = #{sourceId}
order by match_rank asc
</if>
<if test="gameMode == 50">
select t1.*,
t1.training_rank as game_rank,
t2.avatar,
t2.nickname
from team_training_player_record t1
left join sport_user t2 on t1.player_id = t2.id
where t1.team_training_id = #{sourceId}
order by training_rank asc
</if>
<if test="gameMode == 60">
select t1.*,
t1.match_rank as game_rank,
t2.avatar,
t2.nickname
from room_mode_player_record t1
left join sport_user t2 on t1.player_id = t2.id
where t1.room_id = #{sourceId}
order by match_rank asc
</if>
</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