Skip to content
Permalink

Comparing changes

This is a direct comparison between two commits made in this repository or its related repositories. View the default comparison for this range or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: 42organization/42gg.server.dev.v2
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 00c8b441959b5f73187ba18ae8ec1ee439e03d1e
Choose a base ref
..
head repository: 42organization/42gg.server.dev.v2
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 497b32f9772e89a0e28b43a3b5e79e2f45c55cb5
Choose a head ref
Showing with 1,316 additions and 374 deletions.
  1. +3 −0 src/main/java/com/gg/server/admin/game/dto/RankGamePPPModifyReqDto.java
  2. +3 −0 src/main/java/com/gg/server/admin/noti/dto/NotiAdminDto.java
  3. +5 −12 src/main/java/com/gg/server/admin/tournament/service/TournamentAdminService.java
  4. +3 −0 src/main/java/com/gg/server/admin/user/dto/UserSearchAdminResponseDto.java
  5. +7 −1 src/main/java/com/gg/server/domain/game/data/Game.java
  6. +6 −0 src/main/java/com/gg/server/domain/match/service/GameUpdateService.java
  7. +4 −1 src/main/java/com/gg/server/domain/match/service/MatchService.java
  8. +5 −1 src/main/java/com/gg/server/domain/rank/dto/ExpRankDto.java
  9. +3 −0 src/main/java/com/gg/server/domain/rank/dto/ExpRankPageResponseDto.java
  10. +8 −1 src/main/java/com/gg/server/domain/team/data/Team.java
  11. +1 −0 src/main/java/com/gg/server/domain/team/data/TeamUser.java
  12. +1 −1 src/main/java/com/gg/server/domain/tier/data/TierRepository.java
  13. +12 −1 src/main/java/com/gg/server/domain/tournament/data/Tournament.java
  14. +11 −4 src/main/java/com/gg/server/domain/tournament/data/TournamentGame.java
  15. +1 −0 src/main/java/com/gg/server/domain/tournament/data/TournamentRepository.java
  16. +3 −4 src/main/java/com/gg/server/domain/tournament/data/TournamentUser.java
  17. +107 −7 src/main/java/com/gg/server/domain/tournament/service/TournamentService.java
  18. +1 −0 src/main/java/com/gg/server/domain/tournament/type/TournamentRound.java
  19. +3 −0 src/main/java/com/gg/server/domain/user/dto/UserLiveResponseDto.java
  20. +3 −0 src/main/java/com/gg/server/domain/user/dto/UserModifyRequestDto.java
  21. +3 −0 src/main/java/com/gg/server/domain/user/dto/UserRankResponseDto.java
  22. +24 −0 src/main/java/com/gg/server/global/scheduler/TournamentScheduler.java
  23. +8 −5 src/test/java/com/gg/server/admin/announcement/controller/AnnouncementAdminControllerTest.java
  24. +10 −7 src/test/java/com/gg/server/admin/coin/controller/CoinPolicyAdminControllerTest.java
  25. +9 −1 src/test/java/com/gg/server/admin/feedback/controller/FeedbackAdminControllerTest.java
  26. +86 −27 src/test/java/com/gg/server/admin/game/controller/GameAdminControllerTest.java
  27. +46 −17 src/test/java/com/gg/server/admin/item/controller/ItemAdminControllerTest.java
  28. +2 −0 src/test/java/com/gg/server/admin/megaphone/controller/MegaphoneAdminControllerTest.java
  29. +5 −5 src/test/java/com/gg/server/admin/penalty/controller/PenaltyAdminControllerTest.java
  30. +35 −11 src/test/java/com/gg/server/admin/receipt/controller/ReceiptAdminControllerTest.java
  31. +25 −9 src/test/java/com/gg/server/admin/season/SeasonAdminControllerTest.java
  32. +19 −8 src/test/java/com/gg/server/admin/slotmanagement/controller/SlotAdminControllerFailTest.java
  33. +22 −7 src/test/java/com/gg/server/admin/slotmanagement/controller/SlotAdminControllerTest.java
  34. +35 −17 src/test/java/com/gg/server/admin/user/controller/UserAdminControllerTest.java
  35. +40 −0 src/test/java/com/gg/server/config/TestRedisConfig.java
  36. +14 −17 src/test/java/com/gg/server/domain/announcement/controller/AnnouncementControllerTest.java
  37. +21 −5 src/test/java/com/gg/server/domain/coin/service/CoinHistoryServiceTest.java
  38. +50 −14 src/test/java/com/gg/server/domain/coin/service/UserCoinChangeServiceTest.java
  39. +36 −18 src/test/java/com/gg/server/domain/game/GameControllerTest.java
  40. +18 −10 src/test/java/com/gg/server/domain/game/service/GameDBTest.java
  41. +6 −7 src/test/java/com/gg/server/domain/game/service/GameFindServiceTest.java
  42. +7 −5 src/test/java/com/gg/server/domain/game/service/GameServiceTest.java
  43. +15 −16 src/test/java/com/gg/server/domain/game/service/GameStatusServiceTest.java
  44. +11 −4 src/test/java/com/gg/server/domain/match/service/MatchBothServiceTest.java
  45. +26 −10 src/test/java/com/gg/server/domain/match/service/MatchServiceTest.java
  46. +39 −11 src/test/java/com/gg/server/domain/megaphone/controller/MegaphoneControllerTest.java
  47. +1 −0 src/test/java/com/gg/server/domain/noti/controller/NotiControllerTest.java
  48. +4 −1 src/test/java/com/gg/server/domain/rank/controller/RankControllerTest.java
  49. +10 −7 src/test/java/com/gg/server/domain/season/SeasonTriggerTest.java
  50. +1 −1 src/test/java/com/gg/server/domain/tournament/controller/TournamentFindControllerTest.java
  51. +2 −0 src/test/java/com/gg/server/domain/tournament/controller/TournamentGameControllerTest.java
  52. +75 −0 src/test/java/com/gg/server/domain/tournament/controller/TournamentSchedulerTest.java
  53. +101 −48 src/test/java/com/gg/server/domain/user/controller/UserControllerTest.java
  54. +70 −0 src/test/java/com/gg/server/utils/ItemTestUtils.java
  55. +228 −14 src/test/java/com/gg/server/utils/TestDataUtils.java
  56. +1 −1 src/test/resources/application.yml
  57. +21 −38 src/test/resources/schema.sql
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
package com.gg.server.admin.game.dto;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;

import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;
import javax.validation.constraints.PositiveOrZero;
import lombok.NoArgsConstructor;

@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class RankGamePPPModifyReqDto {
@NotNull(message = "Team1Id 는 필수 값입니다.")
@Positive
3 changes: 3 additions & 0 deletions src/main/java/com/gg/server/admin/noti/dto/NotiAdminDto.java
Original file line number Diff line number Diff line change
@@ -2,14 +2,17 @@

import com.gg.server.domain.noti.data.Noti;
import com.gg.server.domain.noti.type.NotiType;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.time.LocalDateTime;
import java.util.Objects;
import lombok.NoArgsConstructor;

@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class NotiAdminDto {
private Long id;
private String intraId;
Original file line number Diff line number Diff line change
@@ -36,13 +36,6 @@ public class TournamentAdminService {
private final UserRepository userRepository;
private final GameRepository gameRepository;

// 토너먼트 참가자 수 => 현재는 8강 고정
private static final long ALLOWED_JOINED_NUMBER = 8;
// 토너먼트 최소 시작 날짜 (n일 후)
private static final long ALLOWED_MINIMAL_START_DAYS = 2;
// 토너먼트 최소 진행 시간 (n시간)
private static final long MINIMUM_TOURNAMENT_DURATION = 2;

/***
* 토너먼트 생성 Method
* @param tournamentAdminCreateRequestDto 토너먼트 생성에 필요한 데이터
@@ -137,7 +130,7 @@ public TournamentAdminAddUserResponseDto addTournamentUser(Long tournamentId, To
.findAny().ifPresent(a->{throw new TournamentConflictException("user is already participant", ErrorCode.TOURNAMENT_CONFLICT);});

TournamentUser tournamentUser = new TournamentUser(targetUser, targetTournament,
tournamentList.size() < ALLOWED_JOINED_NUMBER, LocalDateTime.now());
tournamentList.size() < Tournament.ALLOWED_JOINED_NUMBER, LocalDateTime.now());
targetTournament.addTournamentUser(tournamentUser);
tournamentUserRepository.save(tournamentUser);

@@ -167,8 +160,8 @@ public void deleteTournamentUser(Long tournamentId, Long userId) {
TournamentUser targetTournamentUser = tournamentUserList.stream().filter(tu->tu.getUser().getId().equals(targetUser.getId()))
.findAny().orElseThrow(UserNotFoundException::new);
targetTournament.deleteTournamentUser(targetTournamentUser);
if (targetTournamentUser.getIsJoined() && tournamentUserList.size()>=ALLOWED_JOINED_NUMBER) {
tournamentUserList.get(Long.valueOf(ALLOWED_JOINED_NUMBER).intValue()-1).updateIsJoined(true);
if (targetTournamentUser.getIsJoined() && tournamentUserList.size() >= Tournament.ALLOWED_JOINED_NUMBER) {
tournamentUserList.get(Tournament.ALLOWED_JOINED_NUMBER - 1).updateIsJoined(true);
}
tournamentUserRepository.delete(targetTournamentUser);
}
@@ -199,8 +192,8 @@ private void createTournamentGameList(Tournament tournament, int cnt) {
*/
private void checkValidTournamentTime(LocalDateTime startTime, LocalDateTime endTime) {
if (startTime.isAfter(endTime) || startTime.isEqual(endTime) ||
startTime.isBefore(LocalDateTime.now().plusDays(ALLOWED_MINIMAL_START_DAYS)) ||
startTime.plusHours(MINIMUM_TOURNAMENT_DURATION).isAfter(endTime)) {
startTime.isBefore(LocalDateTime.now().plusDays(Tournament.ALLOWED_MINIMAL_START_DAYS)) ||
startTime.plusHours(Tournament.MINIMUM_TOURNAMENT_DURATION).isAfter(endTime)) {
throw new InvalidParameterException("invalid tournament time", ErrorCode.VALID_FAILED);
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
package com.gg.server.admin.user.dto;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.List;
import java.util.stream.Collectors;
import lombok.NoArgsConstructor;

@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class UserSearchAdminResponseDto {
private List<UserSearchAdminDto> userSearchAdminDtos;
private Integer totalPage;
8 changes: 7 additions & 1 deletion src/main/java/com/gg/server/domain/game/data/Game.java
Original file line number Diff line number Diff line change
@@ -5,11 +5,13 @@
import com.gg.server.domain.game.type.Mode;
import com.gg.server.domain.game.type.StatusType;
import com.gg.server.domain.team.data.Team;
import java.util.ArrayList;
import lombok.*;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@NoArgsConstructor
@@ -44,7 +46,7 @@ public class Game {
private LocalDateTime endTime;

@OneToMany(mappedBy = "game", cascade = CascadeType.ALL)
private List<Team> teams;
private List<Team> teams = new ArrayList<>();

public Game(Season season, StatusType status, Mode mode, LocalDateTime startTime, LocalDateTime endTime) {
this.season = season;
@@ -83,4 +85,8 @@ public void updateStatus() {
this.status = StatusType.END;
}
}

public void addTeam(Team team) {
this.teams.add(team);
}
}
Original file line number Diff line number Diff line change
@@ -33,6 +33,12 @@ public class GameUpdateService {
private final NotiService notiService;
private final SnsNotiService snsNotiService;

/**
* 게임 생성 메서드
* 1) 게임 취소했을 경우, 2) 게임 매칭됐을 경우, 3) 토너먼트 게임 생성
* @param addDto 게임 생성에 필요한 정보
* @param recoveredUserId 게임 취소 당한 유저의 id, -1이면 무의미함
*/
public void make(GameAddDto addDto, Long recoveredUserId) {
SlotManagement slotManagement = slotManagementRepository.findCurrent(LocalDateTime.now())
.orElseThrow(SlotNotFoundException::new);
Original file line number Diff line number Diff line change
@@ -5,8 +5,8 @@
import com.gg.server.domain.game.exception.GameAlreadyExistException;
import com.gg.server.domain.game.type.StatusType;
import com.gg.server.domain.match.data.RedisMatchTime;
import com.gg.server.domain.match.data.RedisMatchUser;
import com.gg.server.domain.match.data.RedisMatchTimeRepository;
import com.gg.server.domain.match.data.RedisMatchUser;
import com.gg.server.domain.match.data.RedisMatchUserRepository;
import com.gg.server.domain.match.dto.GameAddDto;
import com.gg.server.domain.match.exception.EnrolledSlotException;
@@ -202,6 +202,9 @@ private void deleteUserFromQueue(UserDto userDto, LocalDateTime startTime) {
*/
private boolean isExistTournamentNotEnded(LocalDateTime time) {
List<Tournament> tournamentList = tournamentRepository.findAllByStatusIsNot(TournamentStatus.END);
if (tournamentList.isEmpty()) {
return false;
}
for (Tournament tournament : tournamentList) {
if (time.isAfter(tournament.getStartTime()) &&
time.isBefore(tournament.getEndTime())) {
6 changes: 5 additions & 1 deletion src/main/java/com/gg/server/domain/rank/dto/ExpRankDto.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
package com.gg.server.domain.rank.dto;

import com.gg.server.domain.user.data.User;
import com.gg.server.domain.user.data.UserImage;
import com.gg.server.global.utils.ExpLevelCalculator;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class ExpRankDto {
private String intraId;
private Integer rank;
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package com.gg.server.domain.rank.dto;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.List;
import lombok.NoArgsConstructor;

@AllArgsConstructor
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class ExpRankPageResponseDto {
private int myRank;
private int currentPage;
9 changes: 8 additions & 1 deletion src/main/java/com/gg/server/domain/team/data/Team.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.gg.server.domain.team.data;

import com.gg.server.domain.game.data.Game;
import java.util.ArrayList;
import lombok.*;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;

@NoArgsConstructor
@@ -28,16 +30,21 @@ public class Team {
private Boolean win;

@OneToMany(mappedBy = "team", cascade = CascadeType.ALL)
private List<TeamUser> teamUsers;
private List<TeamUser> teamUsers = new ArrayList<>();

public Team(Game game, Integer score, Boolean win) {
this.game = game;
this.score = score;
this.win = win;
game.addTeam(this);
}

public void updateScore(int score, Boolean win) {
this.score = score;
this.win = win;
}

public void addTeamUser(TeamUser teamUser) {
this.teamUsers.add(teamUser);
}
}
1 change: 1 addition & 0 deletions src/main/java/com/gg/server/domain/team/data/TeamUser.java
Original file line number Diff line number Diff line change
@@ -29,5 +29,6 @@ public class TeamUser {
public TeamUser(Team team, User user) {
this.team = team;
this.user = user;
team.addTeamUser(this);
}
}
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@

public interface TierRepository extends JpaRepository<Tier, Long> {

@Query("SELECT t FROM Tier t WHERE t.id = 1L")
@Query("SELECT t FROM Tier t WHERE t.id = (SELECT MIN(t.id) FROM Tier t)")
Optional<Tier> findStartTier();

Optional<Tier> findByName(String name);
Original file line number Diff line number Diff line change
@@ -19,6 +19,13 @@
@Entity
@ToString
public class Tournament extends BaseTimeEntity {
// 토너먼트 참가자 수 => 현재는 8강 고정
public static final int ALLOWED_JOINED_NUMBER = 8;
// 토너먼트 최소 시작 날짜 (n일 후)
public static final int ALLOWED_MINIMAL_START_DAYS = 2;
// 토너먼트 최소 진행 시간 (n시간)
public static final int MINIMUM_TOURNAMENT_DURATION = 2;

@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@@ -91,7 +98,11 @@ public void deleteTournamentUser(@NotNull TournamentUser tournamentUser) {
this.tournamentUsers.remove(tournamentUser);
}

public void update_winner(User winner) {
public void updateWinner(User winner) {
this.winner = winner;
}

public void updateStatus(TournamentStatus status) {
this.status = status;
}
}
Original file line number Diff line number Diff line change
@@ -6,10 +6,8 @@

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

import lombok.*;

@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@@ -41,9 +39,18 @@ public class TournamentGame extends BaseTimeEntity {
* @param tournament
* @param tournamentRound
*/
@Builder
public TournamentGame(Game game, Tournament tournament, TournamentRound tournamentRound) {
this.game = game;
this.tournament = tournament;
this.tournamentRound = tournamentRound;
}

/**
* TournamentGame의 게임 정보를 업데이트한다.
* @param game
*/
public void updateGame(Game game) {
this.game = game;
}
}
Original file line number Diff line number Diff line change
@@ -20,6 +20,7 @@ public interface TournamentRepository extends JpaRepository<Tournament, Long> {
Page<Tournament> findAllByTypeAndStatus(@NotNull TournamentType type, @NotNull TournamentStatus status, Pageable pageable);

Page<Tournament> findAllByStatus(@NotNull TournamentStatus status, Pageable pageable);
List<Tournament> findAllByStatus(@NotNull TournamentStatus status);

Page<Tournament> findAllByType(@NotNull TournamentType type, Pageable pageable);

Original file line number Diff line number Diff line change
@@ -12,10 +12,8 @@
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

import lombok.*;

@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@@ -43,6 +41,7 @@ public class TournamentUser extends BaseTimeEntity {
@Column(name = "register_time")
private LocalDateTime registerTime;

@Builder
public TournamentUser(User user, Tournament tournament, boolean isJoined, LocalDateTime registerTime) {
this.user = user;
this.tournament = tournament;
Loading