Commit 988d6884 authored by liming's avatar liming

商城相关表结构初始化

parent 4bed68d4
......@@ -15,13 +15,15 @@ public interface SportUserTrainingLogConverter {
@Mappings({
@Mapping(source = "source.calorie", target = "totalCalorie"),
@Mapping(source = "source.createTime", target = "updateTime"),
@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")
@Mapping(source = "source.calorie", target = "totalCalorie"),
@Mapping(source = "source.createTime", target = "updateTime"),
})
SportUserRank toSportUserRank(SportUserTrainingLog source);
}
......@@ -96,14 +96,29 @@ public class SportUserTrainingLogService {
log.setCreateDate(LocalDate.now());
//处理是否俱乐部日志
QueryWrapper<ClubMember> clubMemberQuery = new QueryWrapper<>();
clubMemberQuery.eq("sport_user_id", playerId);
clubMemberQuery.eq("deleted", DeleteStatus.UNDELETED);
clubMemberQuery.lambda().eq(ClubMember::getSportUserId, playerId).eq(ClubMember::getDeleted, DeleteStatus.UNDELETED);
ClubMember clubMember = clubMemberMapper.selectOne(clubMemberQuery);
if (clubMember != null) {
log.setClubId(clubMember.getClubId());
}
sportUserTrainingLogMapper.insert(log);
//处理玩家记录汇总
this.handleSportUserSummary(playerId, log);
//处理俱乐部数据汇总
this.handleClubSummary(clubMember, log);
//处理月度排行
this.modifyMonthRank(playerId, log);
//处理总排行
this.modifyTotalRank(playerId, log);
}
/**
* 处理玩家记录汇总
*
* @param playerId
* @param log
*/
private void handleSportUserSummary(Long playerId, SportUserTrainingLog log) {
QueryWrapper<SportUserSummary> summaryQuery = new QueryWrapper<>();
summaryQuery.eq("deleted", DeleteStatus.UNDELETED);
summaryQuery.eq("user_id", playerId);
......@@ -126,37 +141,14 @@ public class SportUserTrainingLogService {
} else {
sportUserSummaryMapper.updateById(summary);
}
//处理俱乐部数据汇总
this.handleClubSummary(clubMember, log);
//处理月度排行
Integer year = LocalDate.now().getYear();
Integer month = LocalDate.now().getMonthValue();
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);
SportUserRank rank = sportUserRankMapper.selectOne(rankQuery);
if (rank == null) {
rank = sportUserTrainingLogConverter.toSportUserRank(log);
rank.setUpdateTime(monthRank.getCreateTime());
sportUserRankMapper.insert(rank);
} else {
modifyRank(log, rank);
}
}
/**
* 处理俱乐部汇总数据
*
* @param clubMember
* @param log
*/
private void handleClubSummary(ClubMember clubMember, SportUserTrainingLog log) {
if (clubMember == null) {
return;
......@@ -169,7 +161,25 @@ public class SportUserTrainingLogService {
clubMapper.updateById(club);
}
private void modifyRank(SportUserTrainingLog log, SportUserMonthRank rank) {
/**
* 用户月排行榜修改
*
* @param playerId
* @param log
*/
private void modifyMonthRank(Long playerId, SportUserTrainingLog log) {
Integer year = LocalDate.now().getYear();
Integer month = LocalDate.now().getMonthValue();
QueryWrapper<SportUserMonthRank> monthRankQuery = new QueryWrapper<>();
monthRankQuery.eq("year", year);
monthRankQuery.eq("month", month);
monthRankQuery.eq("player_id", playerId);
SportUserMonthRank rank = sportUserMonthRankMapper.selectOne(monthRankQuery);
if (rank == null) {
rank = sportUserTrainingLogConverter.toSportUserMonthRank(log, year, month);
sportUserMonthRankMapper.insert(rank);
return;
}
rank.setTotalCalorie(rank.getTotalCalorie() + log.getCalorie());
rank.setUpdateTime(LocalDateTime.now());
if (log.getOneMinutesFtp().compareTo(rank.getOneMinutesFtp()) == 1) {
......@@ -194,7 +204,21 @@ public class SportUserTrainingLogService {
sportUserMonthRankMapper.updateById(rank);
}
private void modifyRank(SportUserTrainingLog log, SportUserRank rank) {
/**
* 用户总排行榜修改
*
* @param log
* @param playerId
*/
private void modifyTotalRank(Long playerId, SportUserTrainingLog log) {
QueryWrapper<SportUserRank> rankQuery = new QueryWrapper<>();
rankQuery.eq("player_id", playerId);
SportUserRank rank = sportUserRankMapper.selectOne(rankQuery);
if (rank == null) {
rank = sportUserTrainingLogConverter.toSportUserRank(log);
sportUserRankMapper.insert(rank);
return;
}
rank.setTotalCalorie(rank.getTotalCalorie() + log.getCalorie());
rank.setUpdateTime(LocalDateTime.now());
if (log.getOneMinutesFtp().compareTo(rank.getOneMinutesFtp()) == 1) {
......@@ -410,8 +434,7 @@ public class SportUserTrainingLogService {
result.setEventsClimbDistance(roomMode.getClimbDistance());
}
}
if (SportType.BICYCLE.equals(result.getSportType())
&& (GameMode.SIMPLE_MATCH.equals(result.getGameMode()) || GameMode.GROUP_TRAINING.equals(result.getGameMode()) || GameMode.ROOM_MODE.equals(result.getGameMode()))) {
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;
......
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