Skip to content

Commit

Permalink
Merge pull request #267 from 42organization/GGBE4-74-Tier-Final
Browse files Browse the repository at this point in the history
[GGBE4-74-Tier-Final] Tier, Item Admin 리펙토링 및 코드 개선
  • Loading branch information
rrrmina authored Sep 18, 2023
2 parents f9ca9f7 + 6d9ccb4 commit 0ba8720
Show file tree
Hide file tree
Showing 18 changed files with 63 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@
@NoArgsConstructor
@AllArgsConstructor
public class ItemListResponseDto {
List<ItemHistoryResponseDto> historyList;
Integer totalPage;
private List<ItemHistoryResponseDto> historyList;
private Integer totalPage;
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,22 @@
@NoArgsConstructor
@AllArgsConstructor
public class ItemUpdateRequestDto {
@NotNull(message = "plz. itemName")
@NotNull(message = "[Request] 아이템 이름은 Null 일 수 없습니다.")
private String name;

@NotNull(message = "plz. mainContent")
@NotNull(message = "[Request] 주 설명은 Null 일 수 없습니다.")
private String mainContent;

@NotNull(message = "plz. subContent")
@NotNull(message = "[Request] 부 설명은 Null 일 수 없습니다.")
private String subContent;

@NotNull(message = "plz. price")
@NotNull(message = "[Request] 가격은 Null 일 수 없습니다.")
private Integer price;

@NotNull(message = "plz. discount")
@NotNull(message = "[Request] 할인율은 Null 일 수 없습니다.")
private Integer discount;

@NotNull(message = "plz. itemType")
@NotNull(message = "[Request] 아이템 타입은 Null 일 수 없습니다.")
private ItemType itemType;

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,39 +32,37 @@ public ItemListResponseDto getAllItemHistory(Pageable pageable) {
return new ItemListResponseDto(responseDtos.getContent(), responseDtos.getTotalPages());
}

// 아이템 수정 시 신규 이미지가 존재하는 경우
@Transactional
//TODO 삭제된 경우 에러처리
public void updateItem(Long itemId, ItemUpdateRequestDto itemUpdateRequestDto,
MultipartFile itemImageFile, UserDto user) throws IOException {
Item item = itemAdminRepository.findById(itemId).orElseThrow(() -> new ItemNotFoundException());
if (item.getIsVisible() == false) {
throw new ItemNotAvailableException();
}
item.setIsVisible(false);
item.setDeleterIntraId(user.getIntraId());
item.setVisibility(user.getIntraId());
Item newItem = new Item(itemUpdateRequestDto, user.getIntraId());
if (itemImageFile != null)
asyncNewItemImageUploader.upload(newItem, itemImageFile);
itemAdminRepository.save(newItem);
}

// 아이템 수정 시 신규 이미지가 존재하지 않는 경우
@Transactional
public void updateItem(Long itemId, ItemUpdateRequestDto itemUpdateRequestDto,
UserDto user) {
Item item = itemAdminRepository.findById(itemId).orElseThrow(() -> new ItemNotFoundException());
if (item.getIsVisible() == false) {
throw new ItemNotAvailableException();
}
item.setIsVisible(false);
item.setDeleterIntraId(user.getIntraId());
item.setVisibility(user.getIntraId());
Item newItem = new Item(itemUpdateRequestDto, user.getIntraId(), item.getImageUri());
itemAdminRepository.save(newItem);
}

@Transactional
public void deleteItem(Long itemId, UserDto user) {
Item item = itemAdminRepository.findById(itemId).orElseThrow(() -> new ItemNotFoundException());
item.setIsVisible(false);
item.setDeleterIntraId(user.getIntraId());
item.setVisibility(user.getIntraId());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.gg.server.domain.season.exception.SeasonTimeBeforeException;
import com.gg.server.domain.tier.data.Tier;
import com.gg.server.domain.tier.data.TierRepository;
import com.gg.server.domain.tier.exception.TierNotFoundException;
import com.gg.server.domain.user.data.User;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -37,7 +38,7 @@ public void addAllUserRankByNewSeason(SeasonAdminDto seasonAdminDto) {

List<Rank> ranks = new ArrayList<>();
Season season = seasonRepository.findById(seasonAdminDto.getSeasonId()).get();
Tier tier = tierRepository.findAll().get(0);
Tier tier = tierRepository.findStartTier().orElseThrow(TierNotFoundException::new);
users.forEach(user -> {
if (user.getRoleType() != GUEST) {
Rank userRank = Rank.from(user, season, seasonAdminDto.getStartPpp(), tier);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
import com.gg.server.domain.rank.redis.RankRedis;
import com.gg.server.domain.rank.redis.RankRedisRepository;
import com.gg.server.domain.rank.redis.RedisKeyManager;
import com.gg.server.domain.tier.data.Tier;
import com.gg.server.domain.tier.data.TierRepository;
import com.gg.server.domain.tier.exception.TierNotFoundException;
import com.gg.server.domain.user.data.User;
import com.gg.server.domain.user.data.UserRepository;
import com.gg.server.domain.user.dto.UserDto;
Expand All @@ -28,12 +30,12 @@ public void addAllUserRankByNewSeason(SeasonAdminDto seasonAdminDto) {
List<User> users = userRepository.findAll();

String redisHashKey = RedisKeyManager.getHashKey(seasonAdminDto.getSeasonId());
String tierImageUrl = tierRepository.findAll().get(0).getImageUri();
Tier tier = tierRepository.findStartTier().orElseThrow(TierNotFoundException::new);

users.forEach(user -> {
if (user.getRoleType() != GUEST) {
UserDto userDto = UserDto.from(user);
RankRedis userRank = RankRedis.from(userDto, seasonAdminDto.getStartPpp(), tierImageUrl);
RankRedis userRank = RankRedis.from(userDto, seasonAdminDto.getStartPpp(), tier.getImageUri());

rankRedisRepository.addRankData(redisHashKey, user.getId(), userRank);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,6 @@ private TeamUser findTeamId(Long teamId, List<TeamUser> teamUsers) {
throw new TeamIdNotMatchException();
}

@Transactional
public Boolean updateScore(Game game, RankResultReqDto scoreDto, Long userId) {
List<TeamUser> teams = teamUserRepository.findAllByGameId(game.getId());
TeamUser myTeam = findTeamId(scoreDto.getMyTeamId(), teams);
Expand Down
7 changes: 5 additions & 2 deletions src/main/java/com/gg/server/domain/item/data/Item.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ public class Item {

@NotNull
@Column(name = "is_visible")
@Setter
private Boolean isVisible;

@Column(name = "discount")
Expand All @@ -54,7 +53,6 @@ public class Item {
private String creatorIntraId;

@Column(name = "deleter_intra_id", length = 10)
@Setter
private String deleterIntraId;

public Item(String name, String mainContent, String subContent, String imageUri, Integer price,
Expand Down Expand Up @@ -115,6 +113,11 @@ public void imageUpdate(String imageUri) {
this.imageUri = imageUri;
}

public void setVisibility(String intraId) {
this.isVisible = false;
this.deleterIntraId = intraId;
}

@Override
public String toString() {
return "Item{" +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import com.gg.server.domain.slotmanagement.data.SlotManagementRepository;
import com.gg.server.domain.tier.data.Tier;
import com.gg.server.domain.tier.data.TierRepository;
import com.gg.server.domain.tier.exception.TierNotFoundException;
import com.gg.server.domain.user.data.User;
import com.gg.server.domain.user.data.UserRepository;
import com.gg.server.domain.user.dto.UserDto;
Expand Down Expand Up @@ -73,7 +74,7 @@ public SlotStatusResponseListDto getAllMatchStatus(UserDto userDto, Option optio
SlotManagement slotManagement = slotManagementRepository.findCurrent(LocalDateTime.now())
.orElseThrow(SlotNotFoundException::new);
Season season = seasonFindService.findCurrentSeason(LocalDateTime.now());
Tier tier = tierRepository.findAll().get(0);
Tier tier = tierRepository.findStartTier().orElseThrow(TierNotFoundException::new);
RankRedis user;
if (userDto.getRoleType().equals(RoleType.GUEST)) {
user = RankRedis.from(userDto, season.getStartPpp(), tier.getImageUri());
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/gg/server/domain/rank/dto/RankDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public static RankDto from(RankRedis rankRedis, int rank) {
.rank(rank)
.ppp(rankRedis.getPpp())
.statusMessage(rankRedis.getStatusMessage())
.tierImageUri(rankRedis.getTierImageUrl())
.tierImageUri(rankRedis.getTierImageUri())
.textColor(rankRedis.getTextColor())
.build();
return dto;
Expand Down
14 changes: 7 additions & 7 deletions src/main/java/com/gg/server/domain/rank/redis/RankRedis.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public class RankRedis implements Serializable {
private int wins;
private int losses;
private String statusMessage;
private String tierImageUrl;
private String tierImageUri;
private String textColor;

public void updateRank(int changePpp, int wins, int losses) {
Expand All @@ -29,8 +29,8 @@ public void updateRank(int changePpp, int wins, int losses) {
this.losses = losses;
}

public void updateTierImage(String tierImageUrl) {
this.tierImageUrl = tierImageUrl;
public void updateTierImage(String tierImageUri) {
this.tierImageUri = tierImageUri;
}

public void changedRank(int ppp, int wins, int losses) {
Expand All @@ -43,15 +43,15 @@ public void setStatusMessage(String msg) {
this.statusMessage = msg;
}

public static RankRedis from(UserDto user, Integer ppp, String tierImageUrl) {
public static RankRedis from(UserDto user, Integer ppp, String tierImageUri) {
RankRedis rankRedis = RankRedis.builder()
.userId(user.getId())
.intraId(user.getIntraId())
.ppp(ppp)
.wins(0)
.losses(0)
.statusMessage("")
.tierImageUrl(tierImageUrl)
.tierImageUri(tierImageUri)
.textColor(user.getTextColor())
.build();
return rankRedis;
Expand All @@ -65,7 +65,7 @@ public static RankRedis from(Rank rank) {
.wins(rank.getWins())
.losses(rank.getLosses())
.statusMessage(rank.getStatusMessage())
.tierImageUrl(rank.getTier().getImageUri())
.tierImageUri(rank.getTier().getImageUri())
.textColor(rank.getUser().getTextColor())
.build();
return rankRedis;
Expand All @@ -80,7 +80,7 @@ public String toString() {
", wins=" + wins +
", losses=" + losses +
", statusMessage='" + statusMessage + '\'' +
", tierImageUrl='" + tierImageUrl + '\'' +
", tierImageUri='" + tierImageUri + '\'' +
", textColor='" + textColor + '\'' +
'}';
}
Expand Down
10 changes: 6 additions & 4 deletions src/main/java/com/gg/server/domain/tier/data/TierRepository.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package com.gg.server.domain.tier.data;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;
import java.util.Optional;

public interface TierRepository extends JpaRepository<Tier, Long> {
Optional<Tier> findByName(String name);

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

Optional<Tier> findByName(String name);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.gg.server.domain.tier.exception;

import com.gg.server.global.exception.ErrorCode;
import com.gg.server.global.exception.custom.NotExistException;

public class TierNotFoundException extends NotExistException {
public TierNotFoundException() {
super("해당 티어가 존재하지 않습니다.", ErrorCode.TIER_NOT_FOUND);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ public UserOauthDto getUserOauth2Information(@Parameter(hidden = true) @Login Us
return new UserOauthDto(OauthType.of(user.getRoleType(), user.getKakaoId()).getCode());
}

@GetMapping("/images")
@GetMapping("/top3")
public UserImageResponseDto getUserImage(@RequestParam(required = false) Long seasonId, Mode mode) {
if (mode == Mode.RANK)
return userService.getRankedUserImagesByPPP(seasonId);
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/com/gg/server/global/exception/ErrorCode.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ public enum ErrorCode {
REDIS_RANK_NOT_FOUND(404, "RK101", "REDIS RANK NOT FOUND"),
RANK_UPDATE_FAIL(400, "RK200", "RANK UPDATE FAIL"),

//tier
TIER_NOT_FOUND(404, "TR100", "TIER NOT FOUND"),

//item
ITEM_NOT_FOUND(404, "IT100", "ITEM NOT FOUND"),
ITEM_TYPE_NOT_MATCHED(400, "IT200", "ITEM TYPE NOT MATCHED"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.gg.server.domain.season.data.SeasonRepository;
import com.gg.server.domain.tier.data.Tier;
import com.gg.server.domain.tier.data.TierRepository;
import com.gg.server.domain.tier.exception.TierNotFoundException;
import com.gg.server.domain.user.data.User;
import com.gg.server.domain.user.data.UserRepository;
import com.gg.server.domain.user.dto.UserDto;
Expand Down Expand Up @@ -82,7 +83,7 @@ private OAuth2User process(OAuth2UserRequest userRequest, OAuth2User user) {
}

private void createUserRank(User savedUser) {
Tier tier = tierRepository.findAll().get(0);
Tier tier = tierRepository.findStartTier().orElseThrow(TierNotFoundException::new);
seasonRepository.findCurrentAndNewSeason(LocalDateTime.now()).forEach(
season -> {
Rank userRank = Rank.from(savedUser, season, season.getStartPpp(), tier);
Expand Down
3 changes: 2 additions & 1 deletion src/test/java/com/gg/server/game/GameControllerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import com.gg.server.domain.team.data.TeamUserRepository;
import com.gg.server.domain.tier.data.Tier;
import com.gg.server.domain.tier.data.TierRepository;
import com.gg.server.domain.tier.exception.TierNotFoundException;
import com.gg.server.domain.user.data.User;
import com.gg.server.domain.user.dto.UserDto;
import com.gg.server.domain.user.type.RacketType;
Expand Down Expand Up @@ -107,7 +108,7 @@ void init() {
user1 = testDataUtils.createNewUser("test1", "test1@email", RacketType.NONE, SnsType.EMAIL, RoleType.USER);
accessToken = tokenProvider.createToken(user1.getId());
user2 = testDataUtils.createNewUser("test2", "test2@email", RacketType.NONE, SnsType.EMAIL, RoleType.USER);
Tier tier = tierRepository.findAll().get(0);
Tier tier = tierRepository.findStartTier().orElseThrow(TierNotFoundException::new);
rankRepository.save(Rank.from(user1, season, season.getStartPpp(), tier));
rankRepository.save(Rank.from(user2, season, season.getStartPpp(), tier));
RankRedis userRank = RankRedis.from(UserDto.from(user1), season.getStartPpp(), tier.getImageUri());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import com.gg.server.domain.season.data.Season;
import com.gg.server.domain.tier.data.Tier;
import com.gg.server.domain.tier.data.TierRepository;
import com.gg.server.domain.tier.exception.TierNotFoundException;
import com.gg.server.domain.user.data.User;
import com.gg.server.domain.user.dto.UserDto;
import com.gg.server.global.security.jwt.utils.AuthTokenProvider;
Expand Down Expand Up @@ -60,7 +61,7 @@ public class GameFindServiceTest {
void init() {
Season season = testDataUtils.createSeason();
User newUser = testDataUtils.createNewUser();
Tier tier = tierRepository.findAll().get(0);
Tier tier = tierRepository.findStartTier().orElseThrow(TierNotFoundException::new);
String accessToken = tokenProvider.createToken(newUser.getId());
String statusMsg = "status message test1";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.gg.server.domain.team.data.TeamUserRepository;
import com.gg.server.domain.tier.data.Tier;
import com.gg.server.domain.tier.data.TierRepository;
import com.gg.server.domain.tier.exception.TierNotFoundException;
import com.gg.server.domain.user.data.User;
import com.gg.server.domain.user.dto.UserDto;
import com.gg.server.global.security.jwt.utils.AuthTokenProvider;
Expand Down Expand Up @@ -72,7 +73,7 @@ public class GameServiceTest {
@BeforeEach
void init() {
Season season = testDataUtils.createSeason();
Tier tier = tierRepository.findAll().get(0);
Tier tier = tierRepository.findStartTier().orElseThrow(TierNotFoundException::new);
user1 = testDataUtils.createNewUser();
user2 = testDataUtils.createNewUser();
LocalDateTime now = LocalDateTime.now();
Expand Down

0 comments on commit 0ba8720

Please sign in to comment.