Commit 31a6b897 authored by liming's avatar liming

漫游详情记录查询

parent 50fca917
...@@ -48,6 +48,11 @@ public class RoomModePlayerRecord implements Serializable { ...@@ -48,6 +48,11 @@ public class RoomModePlayerRecord implements Serializable {
*/ */
private Integer matchRank; private Integer matchRank;
/**
* 比赛完成时间
*/
private LocalDateTime finishTime;
/** /**
* 骑行总长度 * 骑行总长度
*/ */
......
package com.antai.sport.http.server.server.api.business.simplematch.dto; package com.antai.sport.http.server.server.api.business.simplematch.dto;
import com.antai.sport.http.server.server.api.common.dto.CyclingDataDTO; 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.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime;
@Data @Data
@ApiModel("日常赛玩家记录上传") @ApiModel("日常赛玩家记录上传")
public class ReqSimpleMatchRecord extends CyclingDataDTO { 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; package com.antai.sport.http.server.server.api.business.teamtraining.dto;
import com.antai.sport.http.server.server.api.common.dto.CyclingDataDTO; 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.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime;
@Data @Data
@ApiModel("日常赛团练记录上传") @ApiModel("日常赛团练记录上传")
public class TeamTrainingRecordUploadDTO extends CyclingDataDTO { 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; ...@@ -11,6 +11,8 @@ import java.time.LocalDateTime;
@Data @Data
@ApiModel("用户训练记录") @ApiModel("用户训练记录")
public class SportUserTrainingLogVO { public class SportUserTrainingLogVO {
@ApiModelProperty("训练记录Id")
private Integer id;
@ApiModelProperty("运动类型 1:自行车 2:跑步") @ApiModelProperty("运动类型 1:自行车 2:跑步")
private Integer sportType; private Integer sportType;
@ApiModelProperty("运动模式 10:漫游 20:日常赛 30:系列赛 40:课程训练 50: 团练 60:房间模式") @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; ...@@ -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.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.SportUserTrainingLogSummaryVO;
import com.antai.sport.http.server.server.api.business.traininglog.dto.SportUserTrainingLogVO; 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 com.antai.sport.http.server.server.api.business.user.dto.ScheduleResponseDTO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -17,7 +19,11 @@ public interface SportUserTrainingLogBusinessMapper { ...@@ -17,7 +19,11 @@ public interface SportUserTrainingLogBusinessMapper {
@Param("beginDate") LocalDate beginDate, @Param("beginDate") LocalDate beginDate,
@Param("endDate") LocalDate endDate); @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 ...@@ -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.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.SportUserTrainingLogSummaryVO;
import com.antai.sport.http.server.server.api.business.traininglog.dto.SportUserTrainingLogVO; 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.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.converter.SportUserConverter;
import com.antai.sport.http.server.server.api.business.user.dto.*; import com.antai.sport.http.server.server.api.business.user.dto.*;
...@@ -306,5 +307,19 @@ public class SportUserTrainingLogService { ...@@ -306,5 +307,19 @@ public class SportUserTrainingLogService {
return resultList; 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; ...@@ -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.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.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.traininglog.service.SportUserTrainingLogService;
import com.antai.sport.http.server.server.api.business.user.dto.*; import com.antai.sport.http.server.server.api.business.user.dto.*;
import com.antai.sport.http.server.server.api.business.user.service.SportUserService; import com.antai.sport.http.server.server.api.business.user.service.SportUserService;
...@@ -55,4 +56,10 @@ public class SportUserController { ...@@ -55,4 +56,10 @@ public class SportUserController {
public ResponseEntity<Result<List<ScheduleResponseDTO>>> getSchedule(@PathVariable("userId") Long userId, @RequestParam Integer year, @RequestParam Integer month) { public ResponseEntity<Result<List<ScheduleResponseDTO>>> getSchedule(@PathVariable("userId") Long userId, @RequestParam Integer year, @RequestParam Integer month) {
return success(sportUserTrainingLogService.getSchedule(userId, year, 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; package com.antai.sport.http.server.server.api.common.dto;
import com.antai.sport.http.server.server.api.utils.ScoreUtils; import com.antai.sport.http.server.server.api.utils.ScoreUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -8,6 +9,7 @@ import lombok.Data; ...@@ -8,6 +9,7 @@ import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.LocalDateTime;
@Data @Data
@ApiModel("基础骑行数据上传对象") @ApiModel("基础骑行数据上传对象")
...@@ -36,6 +38,11 @@ public class CyclingDataDTO { ...@@ -36,6 +38,11 @@ public class CyclingDataDTO {
private BigDecimal twentyMinutesFtp; private BigDecimal twentyMinutesFtp;
@ApiModelProperty("fit文件地址") @ApiModelProperty("fit文件地址")
private String fitUrl; 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) @ApiModelProperty(hidden = true)
@JsonIgnore @JsonIgnore
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
</select> </select>
<select id="getSportUserTrainingLog" resultType="com.antai.sport.http.server.server.api.business.traininglog.dto.SportUserTrainingLogVO"> <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, 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 t1.distance,t1.climb_distance,t1.avg_ftp,t1.avg_speed,t1.praise_num,t1.create_time
from sport_user_training_log t1 from sport_user_training_log t1
...@@ -42,4 +42,45 @@ ...@@ -42,4 +42,45 @@
) t1 ) t1
group by day group by day
</select> </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> </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