From 92f1c94d07be413441e957fb207d35898a433cb9 Mon Sep 17 00:00:00 2001 From: bbbang105 <2018111366@dgu.ac.kr> Date: Sat, 15 Jun 2024 13:24:27 +0900 Subject: [PATCH 1/4] =?UTF-8?q?#42=20[refactor]=20:=20=EC=BD=94=EC=9D=B8?= =?UTF-8?q?=20=EC=98=81=EC=96=B4=EB=AA=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dgu/backend/constant/Coin.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/org/dgu/backend/constant/Coin.java b/backend/src/main/java/org/dgu/backend/constant/Coin.java index 9b27820..5388b5a 100644 --- a/backend/src/main/java/org/dgu/backend/constant/Coin.java +++ b/backend/src/main/java/org/dgu/backend/constant/Coin.java @@ -1,18 +1,20 @@ package org.dgu.backend.constant; public enum Coin { - BITCOIN("KRW-BTC", "비트코인"), - ETHEREUM("KRW-ETH", "이더리움"), - RIPPLE("KRW-XRP", "리플"), - DOGECOIN("KRW-DOGE", "도지코인"), - WAVE("KRW-WAVES", "웨이브"); + BITCOIN("KRW-BTC", "비트코인", "Bitcoin"), + ETHEREUM("KRW-ETH", "이더리움", "Ethereum"), + RIPPLE("KRW-XRP", "리플", "Ripple"), + DOGECOIN("KRW-DOGE", "도지코인", "Dogecoin"), + WAVE("KRW-WAVES", "웨이브", "Waves"); private final String marketName; private final String koreanName; + private final String englishName; - Coin(String marketName, String koreanName) { + Coin(String marketName, String koreanName, String englishName) { this.marketName = marketName; this.koreanName = koreanName; + this.englishName = englishName; } public String getMarketName() { @@ -22,4 +24,8 @@ public String getMarketName() { public String getKoreanName() { return koreanName; } + + public String getEnglishName() { + return englishName; + } } \ No newline at end of file From 9b378ded8ef5da08a0fb590dee329b2abffd08c3 Mon Sep 17 00:00:00 2001 From: bbbang105 <2018111366@dgu.ac.kr> Date: Sat, 15 Jun 2024 13:24:56 +0900 Subject: [PATCH 2/4] =?UTF-8?q?#42=20[feat]=20:=20=EB=A7=88=EC=BC=93=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=EC=9C=BC=EB=A1=9C=20=EC=B0=BE=EB=8A=94=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/dgu/backend/repository/MarketRepository.java | 3 ++- .../java/org/dgu/backend/repository/UserCoinRepository.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/org/dgu/backend/repository/MarketRepository.java b/backend/src/main/java/org/dgu/backend/repository/MarketRepository.java index b156a1c..7f4b735 100644 --- a/backend/src/main/java/org/dgu/backend/repository/MarketRepository.java +++ b/backend/src/main/java/org/dgu/backend/repository/MarketRepository.java @@ -4,5 +4,6 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface MarketRepository extends JpaRepository { - Market findByKoreanName(String marketKoreanName); + Market findByKoreanName(String koreanName); + Market findByMarketName(String marketName); } \ No newline at end of file diff --git a/backend/src/main/java/org/dgu/backend/repository/UserCoinRepository.java b/backend/src/main/java/org/dgu/backend/repository/UserCoinRepository.java index ed12f3c..0f990ca 100644 --- a/backend/src/main/java/org/dgu/backend/repository/UserCoinRepository.java +++ b/backend/src/main/java/org/dgu/backend/repository/UserCoinRepository.java @@ -5,5 +5,5 @@ public interface UserCoinRepository extends JpaRepository { - UserCoin findByCoinName(String coinName); + UserCoin findByMarketName(String marketName); } \ No newline at end of file From 2635f277e5ada1ed34013142ff4a13fdfe6affad Mon Sep 17 00:00:00 2001 From: bbbang105 <2018111366@dgu.ac.kr> Date: Sat, 15 Jun 2024 13:25:21 +0900 Subject: [PATCH 3/4] =?UTF-8?q?#42=20[refactor]=20:=20=ED=95=9C=EA=B8=80?= =?UTF-8?q?=EB=AA=85=20&=20=EC=98=81=EC=96=B4=EB=AA=85=20=EC=BB=AC?= =?UTF-8?q?=EB=9F=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dgu/backend/domain/UserCoin.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/org/dgu/backend/domain/UserCoin.java b/backend/src/main/java/org/dgu/backend/domain/UserCoin.java index 5e07d31..afc0d5e 100644 --- a/backend/src/main/java/org/dgu/backend/domain/UserCoin.java +++ b/backend/src/main/java/org/dgu/backend/domain/UserCoin.java @@ -23,8 +23,14 @@ public class UserCoin extends BaseEntity { @JoinColumn(name = "users_id", foreignKey = @ForeignKey(name = "users_coins_fk_users_id")) private User user; - @Column(name = "coin_name", nullable = false, length = 50) - private String coinName; + @Column(name = "market_name", nullable = false, length = 50) + private String marketName; + + @Column(name = "korean_name", nullable = false, length = 50) + private String koreanName; + + @Column(name = "english_name", nullable = false, length = 50) + private String englishName; @Column(name = "coin_count", precision = 20, scale = 10, nullable = false) private BigDecimal coinCount; @@ -39,9 +45,11 @@ public class UserCoin extends BaseEntity { private BigDecimal rate; @Builder - public UserCoin(User user, String coinName, BigDecimal coinCount, BigDecimal price, BigDecimal balance, BigDecimal rate) { + public UserCoin(User user, String marketName, String koreanName, String englishName, BigDecimal coinCount, BigDecimal price, BigDecimal balance, BigDecimal rate) { this.user = user; - this.coinName = coinName; + this.marketName = marketName; + this.koreanName = koreanName; + this.englishName = englishName; this.coinCount = coinCount; this.price = price; this.balance = balance; From 62994497a0e523b758c75e5d4dc4cebdef2bbcf6 Mon Sep 17 00:00:00 2001 From: bbbang105 <2018111366@dgu.ac.kr> Date: Sat, 15 Jun 2024 13:25:40 +0900 Subject: [PATCH 4/4] =?UTF-8?q?#42=20[refactor]=20:=20=EB=A7=88=EC=BC=93?= =?UTF-8?q?=EB=AA=85=20&=20=ED=95=9C=EA=B8=80=EB=AA=85=20&=20=EC=98=81?= =?UTF-8?q?=EC=96=B4=EB=AA=85=20=EB=AA=A8=EB=91=90=20=EB=B0=98=ED=99=98?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dgu/backend/dto/DashBoardDto.java | 12 +++++-- .../backend/service/DashBoardServiceImpl.java | 33 ++++++++++++------- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/backend/src/main/java/org/dgu/backend/dto/DashBoardDto.java b/backend/src/main/java/org/dgu/backend/dto/DashBoardDto.java index 10872f5..fe31b9f 100644 --- a/backend/src/main/java/org/dgu/backend/dto/DashBoardDto.java +++ b/backend/src/main/java/org/dgu/backend/dto/DashBoardDto.java @@ -31,7 +31,9 @@ public static class UserAccountResponse { @JsonNaming(value = PropertyNamingStrategies.SnakeCaseStrategy.class) @JsonInclude(JsonInclude.Include.NON_NULL) public static class UserCoinResponse { - private String coinName; + private String marketName; + private String koreanName; + private String englishName; @JsonSerialize(using = BigDecimalSerializer.class) private BigDecimal coinCount; @JsonSerialize(using = BigDecimalSerializer.class) @@ -44,7 +46,9 @@ public static class UserCoinResponse { public UserCoin to(User user) { return UserCoin.builder() .user(user) - .coinName(coinName) + .marketName(marketName) + .koreanName(koreanName) + .englishName(englishName) .coinCount(coinCount) .price(price) .balance(balance) @@ -60,6 +64,7 @@ public UserCoin to(User user) { public static class RepresentativeCoinResponse { private String marketName; private String koreanName; + private String englishName; @JsonSerialize(using = BigDecimalSerializer.class) private BigDecimal price; @JsonSerialize(using = BigDecimalSerializer.class) @@ -68,10 +73,11 @@ public static class RepresentativeCoinResponse { private BigDecimal changeRate; private Boolean isIncrease; - public static DashBoardDto.RepresentativeCoinResponse of(UpbitDto.Ticker ticker, String koreanName) { + public static DashBoardDto.RepresentativeCoinResponse of(UpbitDto.Ticker ticker, String koreanName, String englishName) { return RepresentativeCoinResponse.builder() .marketName(ticker.getMarket()) .koreanName(koreanName) + .englishName(englishName) .changePrice(BigDecimal.valueOf(ticker.getPrice())) .changeRate(BigDecimal.valueOf(ticker.getChangeRate()).setScale(5, RoundingMode.HALF_UP)) .isIncrease(ticker.getChange().equals("RISE")) diff --git a/backend/src/main/java/org/dgu/backend/service/DashBoardServiceImpl.java b/backend/src/main/java/org/dgu/backend/service/DashBoardServiceImpl.java index 04a8dd0..8fde0eb 100644 --- a/backend/src/main/java/org/dgu/backend/service/DashBoardServiceImpl.java +++ b/backend/src/main/java/org/dgu/backend/service/DashBoardServiceImpl.java @@ -4,13 +4,17 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dgu.backend.constant.Coin; +import org.dgu.backend.domain.Market; import org.dgu.backend.domain.UpbitKey; import org.dgu.backend.domain.User; import org.dgu.backend.domain.UserCoin; import org.dgu.backend.dto.DashBoardDto; import org.dgu.backend.dto.UpbitDto; +import org.dgu.backend.exception.MarketErrorResult; +import org.dgu.backend.exception.MarketException; import org.dgu.backend.exception.UpbitErrorResult; import org.dgu.backend.exception.UpbitException; +import org.dgu.backend.repository.MarketRepository; import org.dgu.backend.repository.UpbitKeyRepository; import org.dgu.backend.repository.UserCoinRepository; import org.dgu.backend.util.JwtUtil; @@ -39,6 +43,7 @@ public class DashBoardServiceImpl implements DashBoardService { private final JwtUtil jwtUtil; private final UpbitKeyRepository upbitKeyRepository; private final UserCoinRepository userCoinRepository; + private final MarketRepository marketRepository; // 유저 업비트 잔고를 반환하는 메서드 @Override @@ -66,20 +71,24 @@ public List getUserCoins(String authorizationHead private List processUserCoins(UpbitDto.Account[] accounts, User user) { List userCoinResponses = new ArrayList<>(); for (UpbitDto.Account account : accounts) { - String coinName = account.getCurrency(); + String marketName = account.getCurrency(); // 현금은 제외 - if (!coinName.equals("KRW")) { - userCoinResponses.add(processSingleCoin(account, user, coinName)); + if (!marketName.equals("KRW")) { + userCoinResponses.add(processSingleCoin(account, user, marketName)); } } return userCoinResponses; } // 단일 코인 정보를 처리하는 메서드 - private DashBoardDto.UserCoinResponse processSingleCoin(UpbitDto.Account account, User user, String coinName) { - coinName = "KRW-" + coinName; - UserCoin userCoin = userCoinRepository.findByCoinName(coinName); - UpbitDto.Ticker[] ticker = getTickerPriceAtUpbit(UPBIT_URL_TICKER + coinName); + private DashBoardDto.UserCoinResponse processSingleCoin(UpbitDto.Account account, User user, String marketName) { + marketName = "KRW-" + marketName; + UserCoin userCoin = userCoinRepository.findByMarketName(marketName); + Market market = marketRepository.findByMarketName(marketName); + if (Objects.isNull(market)) { + throw new MarketException(MarketErrorResult.NOT_FOUND_MARKET); + } + UpbitDto.Ticker[] ticker = getTickerPriceAtUpbit(UPBIT_URL_TICKER + marketName); BigDecimal curPrice = BigDecimal.valueOf(ticker[0].getPrice()); BigDecimal curCoinCount = account.getCoinCount(); boolean isIncrease = false; @@ -91,7 +100,9 @@ private DashBoardDto.UserCoinResponse processSingleCoin(UpbitDto.Account account } DashBoardDto.UserCoinResponse userCoinResponse = DashBoardDto.UserCoinResponse.builder() - .coinName(coinName) + .marketName(marketName) + .koreanName(market.getKoreanName()) + .englishName(market.getEnglishName()) .coinCount(curCoinCount) .price(curPrice) .balance(curPrice.multiply(curCoinCount).setScale(4, RoundingMode.HALF_UP)) @@ -109,7 +120,7 @@ public List getRepresentativeCoins() { List representativeCoinResponses = new ArrayList<>(); for (Coin coin : Coin.values()) { UpbitDto.Ticker[] ticker = getTickerPriceAtUpbit(UPBIT_URL_TICKER + coin.getMarketName()); - representativeCoinResponses.add(DashBoardDto.RepresentativeCoinResponse.of(ticker[0], coin.getKoreanName())); + representativeCoinResponses.add(DashBoardDto.RepresentativeCoinResponse.of(ticker[0], coin.getKoreanName(), coin.getEnglishName())); } return representativeCoinResponses; @@ -123,8 +134,8 @@ private BigDecimal getAccountSum(UpbitDto.Account[] accounts) { accountSum = accountSum.add(account.getCoinCount()); } else { // 현재가를 가져옴 - String coinName = "KRW-" + account.getCurrency(); - UpbitDto.Ticker[] ticker = getTickerPriceAtUpbit(UPBIT_URL_TICKER + coinName); + String marketName = "KRW-" + account.getCurrency(); + UpbitDto.Ticker[] ticker = getTickerPriceAtUpbit(UPBIT_URL_TICKER + marketName); BigDecimal curPrice = BigDecimal.valueOf(ticker[0].getPrice()); BigDecimal userCoinCount = account.getCoinCount(); accountSum = accountSum.add(curPrice.multiply(userCoinCount));