Commit e15d0ce2 authored by liming's avatar liming

调整骑行数据保存

parent 81c8faae
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -111,6 +111,10 @@ public class SportUserTrainingLog implements Serializable {
private Integer calorie;
private BigDecimal weight;
private Integer ftp;
private BigDecimal height;
private Integer heartRate;
private Integer avgHeartRate;
private BigDecimal oneMinutesFtp;
private BigDecimal fiveMinutesFtp;
private BigDecimal twentyMinutesFtp;
......
......@@ -35,6 +35,14 @@ public class TrainingDetailRankVO {
@ApiModelProperty("体重")
private BigDecimal weight;
@ApiModelProperty("玩家当时ftp")
private Integer ftp;
@ApiModelProperty("玩家当时身高")
private BigDecimal height;
@ApiModelProperty("玩家当时设置最大心率")
private Integer heartRate;
@ApiModelProperty("玩家平均心率")
private Integer avgHeartRate;
@ApiModelProperty("1分钟平均最佳FTP")
private BigDecimal oneMinutesFtp;
@ApiModelProperty("5分钟平均最佳FTP")
......
......@@ -62,6 +62,14 @@ public class TrainingDetailVO {
@ApiModelProperty("体重")
private BigDecimal weight;
@ApiModelProperty("玩家当时ftp")
private Integer ftp;
@ApiModelProperty("玩家当时身高")
private BigDecimal height;
@ApiModelProperty("玩家当时设置最大心率")
private Integer heartRate;
@ApiModelProperty("玩家平均心率")
private Integer avgHeartRate;
@ApiModelProperty("1分钟平均最佳FTP")
private BigDecimal oneMinutesFtp;
@ApiModelProperty("5分钟平均最佳FTP")
......
......@@ -128,6 +128,10 @@ public class SportUserTrainingLogService {
if (clubMember != null) {
log.setClubId(clubMember.getClubId());
}
SportUser sportUser = sportUserMapper.selectById(playerId);
log.setFtp(sportUser.getFtp());
log.setHeight(sportUser.getHeight());
log.setHeartRate(sportUser.getHeartRate());
sportUserTrainingLogMapper.insert(log);
//处理玩家记录汇总
SportUserSummary summary = this.handleSportUserSummary(playerId, log, gameMode, sportData);
......@@ -143,21 +147,21 @@ public class SportUserTrainingLogService {
//处理玩家成就
achievementService.handleSportAchievement(gameMode, summary);
//处理ftp变化事件
handleFtpChange(playerId,sportData.getTwentyMinutesFtp());
handleFtpChange(sportUser,sportData.getTwentyMinutesFtp());
}
void handleFtpChange(Long sportUserId, BigDecimal twentyMinutesFtp) {
void handleFtpChange(SportUser sportUser, BigDecimal twentyMinutesFtp) {
if (twentyMinutesFtp == null || twentyMinutesFtp.compareTo(BigDecimal.ZERO) <= 0) {
return;
}
SportUser sportUser = sportUserMapper.selectById(sportUserId);
BigDecimal oldFtp = sportUser.getFtp() == null ? BigDecimal.ZERO : BigDecimal.valueOf(sportUser.getFtp());
BigDecimal newFtp = twentyMinutesFtp.multiply(BigDecimal.valueOf(0.93)).setScale(0, RoundingMode.HALF_UP);
if(newFtp.compareTo(oldFtp) == 1) {
sportUser.setFtp(newFtp.intValue());
sportUserMapper.updateById(sportUser);
SportUserFtpChangeLog ftpChangeLog = new SportUserFtpChangeLog();
ftpChangeLog.setSportUserId(sportUserId);
ftpChangeLog.setSportUserId(sportUser.getId());
ftpChangeLog.setOldFtp(oldFtp.intValue());
ftpChangeLog.setNewFtp(newFtp.intValue());
ftpChangeLog.setCreateTime(LocalDateTime.now());
......
......@@ -43,6 +43,8 @@ public class CyclingDataDTO {
@ApiModelProperty("完成时间 yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
public LocalDateTime finishTime;
@ApiModelProperty("平均心率")
public Integer avgHeartRate;
@ApiModelProperty(hidden = true)
@JsonIgnore
......
......@@ -57,9 +57,14 @@
select t1.*,
t1.match_rank as game_rank,
t2.avatar,
t2.nickname
t2.nickname,
t3.ftp,
t3.heart_rate,
t3.avg_heart_rate,
t3.height
from simple_match_player_record t1
left join sport_user t2 on t1.player_id = t2.id
left join sport_user_training_log t3 on t3.game_mode = 20 and t1.id = t3.record_id
where t1.match_id = #{sourceId}
order by match_rank asc
</if>
......@@ -67,9 +72,14 @@
select t1.*,
t1.training_rank as game_rank,
t2.avatar,
t2.nickname
t2.nickname,
t3.ftp,
t3.heart_rate,
t3.avg_heart_rate,
t3.height
from team_training_player_record t1
left join sport_user t2 on t1.player_id = t2.id
left join sport_user_training_log t3 on t3.game_mode = 50 and t1.id = t3.record_id
where t1.team_training_id = #{sourceId}
order by training_rank asc
</if>
......@@ -77,9 +87,14 @@
select t1.*,
t1.match_rank as game_rank,
t2.avatar,
t2.nickname
t2.nickname,
t3.ftp,
t3.heart_rate,
t3.avg_heart_rate,
t3.height
from room_mode_player_record t1
left join sport_user t2 on t1.player_id = t2.id
left join sport_user_training_log t3 on t3.game_mode = 60 and t1.id = t3.record_id
where t1.room_id = #{sourceId}
order by match_rank asc
</if>
......
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