Commit a2aec4a6 authored by liming's avatar liming

运动日志上传设置所属俱乐部id,增加总排行榜数据保存

parent 0b6ac1a0
package com.antai.sport.http.server.server.api.business.traininglog.converter;
import com.antai.sport.http.server.repository.sport.entity.SportUserMonthRank;
import com.antai.sport.http.server.repository.sport.entity.SportUserRank;
import com.antai.sport.http.server.repository.sport.entity.SportUserTrainingLog;
import com.antai.sport.http.server.server.api.common.dto.CyclingDataDTO;
import org.mapstruct.Mapper;
......@@ -11,10 +12,16 @@ import org.mapstruct.Mappings;
public interface SportUserTrainingLogConverter {
SportUserTrainingLog toSportUserTrainingLog(CyclingDataDTO source);
@Mappings({
@Mapping(source = "source.calorie", target = "totalCalorie"),
@Mapping(source = "year", target = "year"),
@Mapping(source = "month", target = "month")
})
SportUserMonthRank toSportUserMonthRank(SportUserTrainingLog source, Integer year, Integer month);
@Mappings({
@Mapping(source = "source.calorie", target = "totalCalorie")
})
SportUserRank toSportUserRank(SportUserTrainingLog source);
}
......@@ -4,18 +4,14 @@ import com.antai.sport.http.server.constants.DeleteStatus;
import com.antai.sport.http.server.constants.GameMode;
import com.antai.sport.http.server.constants.RankType;
import com.antai.sport.http.server.constants.SportType;
import com.antai.sport.http.server.repository.club.entity.ClubMember;
import com.antai.sport.http.server.repository.club.mapper.ClubMemberMapper;
import com.antai.sport.http.server.repository.roommode.entity.RoomMode;
import com.antai.sport.http.server.repository.roommode.mapper.RoomModeMapper;
import com.antai.sport.http.server.repository.simplematch.entity.SimpleMatch;
import com.antai.sport.http.server.repository.simplematch.mapper.SimpleMatchMapper;
import com.antai.sport.http.server.repository.sport.entity.SportUser;
import com.antai.sport.http.server.repository.sport.entity.SportUserMonthRank;
import com.antai.sport.http.server.repository.sport.entity.SportUserSummary;
import com.antai.sport.http.server.repository.sport.entity.SportUserTrainingLog;
import com.antai.sport.http.server.repository.sport.mapper.SportUserMapper;
import com.antai.sport.http.server.repository.sport.mapper.SportUserMonthRankMapper;
import com.antai.sport.http.server.repository.sport.mapper.SportUserSummaryMapper;
import com.antai.sport.http.server.repository.sport.mapper.SportUserTrainingLogMapper;
import com.antai.sport.http.server.repository.sport.entity.*;
import com.antai.sport.http.server.repository.sport.mapper.*;
import com.antai.sport.http.server.repository.teamtraining.entity.TeamTraining;
import com.antai.sport.http.server.repository.teamtraining.mapper.TeamTrainingMapper;
import com.antai.sport.http.server.server.api.business.simplematch.dto.SimpleMatchUserScheduleVO;
......@@ -63,6 +59,10 @@ public class SportUserTrainingLogService {
private RoomModeMapper roomModeMapper;
@Resource
private TeamTrainingMapper teamTrainingMapper;
@Resource
private SportUserRankMapper sportUserRankMapper;
@Resource
private ClubMemberMapper clubMemberMapper;
@Resource
private SportUserTrainingLogBusinessMapper sportUserTrainingLogBusinessMapper;
......@@ -90,6 +90,14 @@ public class SportUserTrainingLogService {
log.setPraiseNum(praiseNum);
log.setCreateTime(LocalDateTime.now());
log.setCreateDate(LocalDate.now());
//处理是否俱乐部日志
QueryWrapper<ClubMember> clubMemberQuery = new QueryWrapper<>();
clubMemberQuery.eq("sport_user_id", playerId);
clubMemberQuery.eq("deleted", DeleteStatus.UNDELETED);
ClubMember clubMember = clubMemberMapper.selectOne(clubMemberQuery);
if (clubMember != null) {
log.setClubId(clubMember.getClubId());
}
sportUserTrainingLogMapper.insert(log);
QueryWrapper<SportUserSummary> summaryQuery = new QueryWrapper<>();
......@@ -118,19 +126,29 @@ public class SportUserTrainingLogService {
//处理月度排行
Integer year = LocalDate.now().getYear();
Integer month = LocalDate.now().getMonthValue();
QueryWrapper<SportUserMonthRank> rankQuery = new QueryWrapper<>();
rankQuery.eq("year", year);
rankQuery.eq("month", month);
QueryWrapper<SportUserMonthRank> monthRankQuery = new QueryWrapper<>();
monthRankQuery.eq("year", year);
monthRankQuery.eq("month", month);
monthRankQuery.eq("player_id", playerId);
SportUserMonthRank monthRank = sportUserMonthRankMapper.selectOne(monthRankQuery);
if (monthRank == null) {
monthRank = sportUserTrainingLogConverter.toSportUserMonthRank(log, year, month);
monthRank.setUpdateTime(monthRank.getCreateTime());
sportUserMonthRankMapper.insert(monthRank);
} else {
modifyRank(log, monthRank);
}
//处理总排行
QueryWrapper<SportUserRank> rankQuery = new QueryWrapper<>();
rankQuery.eq("player_id", playerId);
SportUserMonthRank rank = sportUserMonthRankMapper.selectOne(rankQuery);
if (rank == null) {
rank = sportUserTrainingLogConverter.toSportUserMonthRank(log, year, month);
rank.setUpdateTime(rank.getCreateTime());
sportUserMonthRankMapper.insert(rank);
SportUserRank rank = sportUserRankMapper.selectOne(rankQuery);
if (rank != null) {
rank = sportUserTrainingLogConverter.toSportUserRank(log);
rank.setUpdateTime(monthRank.getCreateTime());
sportUserRankMapper.insert(rank);
} else {
modifyRank(log, rank);
}
}
private void modifyRank(SportUserTrainingLog log, SportUserMonthRank rank) {
......@@ -156,7 +174,31 @@ public class SportUserTrainingLogService {
}
rank.setScore(ScoreUtils.calculate(rank.getOneMinutesFtp(), rank.getFiveMinutesFtp(), rank.getTwentyMinutesFtp(), rank.getOneMinutesWkg(), rank.getFiveMinutesWkg(), rank.getTwentyMinutesWkg()));
sportUserMonthRankMapper.updateById(rank);
}
private void modifyRank(SportUserTrainingLog log, SportUserRank rank) {
rank.setTotalCalorie(rank.getTotalCalorie() + log.getCalorie());
rank.setUpdateTime(LocalDateTime.now());
if (log.getOneMinutesFtp().compareTo(rank.getOneMinutesFtp()) == 1) {
rank.setOneMinutesFtp(log.getOneMinutesFtp());
}
if (log.getFiveMinutesFtp().compareTo(rank.getFiveMinutesFtp()) == 1) {
rank.setFiveMinutesFtp(log.getFiveMinutesFtp());
}
if (log.getTwentyMinutesFtp().compareTo(rank.getTwentyMinutesFtp()) == 1) {
rank.setTwentyMinutesFtp(log.getTwentyMinutesFtp());
}
if (log.getOneMinutesWkg().compareTo(rank.getOneMinutesWkg()) == 1) {
rank.setOneMinutesWkg(log.getOneMinutesWkg());
}
if (log.getFiveMinutesWkg().compareTo(rank.getFiveMinutesWkg()) == 1) {
rank.setFiveMinutesWkg(log.getFiveMinutesWkg());
}
if (log.getTwentyMinutesWkg().compareTo(rank.getTwentyMinutesWkg()) == 1) {
rank.setTwentyMinutesWkg(log.getTwentyMinutesWkg());
}
rank.setScore(ScoreUtils.calculate(rank.getOneMinutesFtp(), rank.getFiveMinutesFtp(), rank.getTwentyMinutesFtp(), rank.getOneMinutesWkg(), rank.getFiveMinutesWkg(), rank.getTwentyMinutesWkg()));
sportUserRankMapper.updateById(rank);
}
/**
......
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