From 4c8eada91978e3f7ab27f3b7523429559778c40b Mon Sep 17 00:00:00 2001 From: bbbang105 <2018111366@dgu.ac.kr> Date: Tue, 18 Jun 2024 04:37:27 +0900 Subject: [PATCH] =?UTF-8?q?#42=20[refactor]=20:=20=EC=B0=A8=ED=8A=B8=20?= =?UTF-8?q?=EB=91=90=20=EC=A2=85=EB=A5=98=EB=A1=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DashBoardController.java | 23 +++++++- .../java/org/dgu/backend/dto/ChartDto.java | 56 +++++++++++++++++++ 2 files changed, 76 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/org/dgu/backend/controller/DashBoardController.java b/backend/src/main/java/org/dgu/backend/controller/DashBoardController.java index 0b16f70..958be53 100644 --- a/backend/src/main/java/org/dgu/backend/controller/DashBoardController.java +++ b/backend/src/main/java/org/dgu/backend/controller/DashBoardController.java @@ -28,6 +28,7 @@ public ResponseEntity> getUserBala @RequestHeader("Authorization") String authorizationHeader) { DashBoardDto.UserAccountResponse userBalanceResponse = dashBoardService.getUserAccount(authorizationHeader); + return ApiResponse.onSuccess(SuccessStatus.SUCCESS_GET_USER_BALANCE, userBalanceResponse); } @@ -37,6 +38,7 @@ public ResponseEntity>> getUserC @RequestHeader("Authorization") String authorizationHeader) { List userCoins = dashBoardService.getUserCoins(authorizationHeader); + return ApiResponse.onSuccess(SuccessStatus.SUCCESS_GET_USER_COINS, userCoins); } @@ -45,6 +47,7 @@ public ResponseEntity>> getUserC public ResponseEntity>> getRepresentativeCoins() { List representativeCoinResponses = dashBoardService.getRepresentativeCoins(); + return ApiResponse.onSuccess(SuccessStatus.SUCCESS_GET_REPRESENTATIVE_COINS, representativeCoinResponses); } @@ -53,15 +56,29 @@ public ResponseEntity> public ResponseEntity>> getBitcoinDayCharts() { List ohlcvResponses = chartService.getOHLCVCharts("비트코인", "days", null); + return ApiResponse.onSuccess(SuccessStatus.SUCCESS_GET_BITCOIN_DAY_CHARTS, ohlcvResponses); } - // 비트코인 차트 (1분봉) 조회 API + // 비트코인 OHLC 차트 (1분봉) 조회 API @GetMapping("/bit-charts/minutes1") - public ResponseEntity>> getBitcoinOneMinuteCharts() { + public ResponseEntity>> getBitcoinOneMinuteCharts() { LocalDateTime startDate = dateUtil.calculateDailyStartDate(); List ohlcvResponses = chartService.getOHLCVCharts("비트코인", "minutes1", startDate); - return ApiResponse.onSuccess(SuccessStatus.SUCCESS_GET_BITCOIN_ONE_MINUTE_CHARTS, ohlcvResponses); + List ohlcResponses = ChartDto.OHLCResponse.ofOHLCResponses(ohlcvResponses); + + return ApiResponse.onSuccess(SuccessStatus.SUCCESS_GET_BITCOIN_ONE_MINUTE_CHARTS, ohlcResponses); + } + + // 비트코인 V 차트 (1분봉) 조회 API + @GetMapping("/bit-charts/minutes1/volumes") + public ResponseEntity>> getBitcoinOneMinuteVolumeCharts() { + + LocalDateTime startDate = dateUtil.calculateDailyStartDate(); + List ohlcvResponses = chartService.getOHLCVCharts("비트코인", "minutes1", startDate); + List vResponses = ChartDto.VResponse.ofVResponses(ohlcvResponses); + + return ApiResponse.onSuccess(SuccessStatus.SUCCESS_GET_BITCOIN_ONE_MINUTE_VOLUME_CHARTS, vResponses); } } \ No newline at end of file diff --git a/backend/src/main/java/org/dgu/backend/dto/ChartDto.java b/backend/src/main/java/org/dgu/backend/dto/ChartDto.java index d493cfe..034e9eb 100644 --- a/backend/src/main/java/org/dgu/backend/dto/ChartDto.java +++ b/backend/src/main/java/org/dgu/backend/dto/ChartDto.java @@ -14,6 +14,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.ArrayList; public class ChartDto { @Builder @@ -46,6 +47,61 @@ public static OHLCVResponse of(CandleInfo candleInfo) { } } + @Builder + @Getter + @AllArgsConstructor + @JsonNaming(value = PropertyNamingStrategies.SnakeCaseStrategy.class) + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class OHLCResponse { + private String date; + @JsonSerialize(using = BigDecimalSerializer.class) + private BigDecimal openingPrice; + @JsonSerialize(using = BigDecimalSerializer.class) + private BigDecimal highPrice; + @JsonSerialize(using = BigDecimalSerializer.class) + private BigDecimal lowPrice; + @JsonSerialize(using = BigDecimalSerializer.class) + private BigDecimal closePrice; + + public static java.util.List ofOHLCResponses(java.util.List ohlcvResponses) { + java.util.List ohlcResponses = new ArrayList<>(); + for (OHLCVResponse ohlcvResponse : ohlcvResponses) { + ohlcResponses.add(OHLCResponse.builder() + .date(ohlcvResponse.getDate()) + .openingPrice(ohlcvResponse.getOpeningPrice()) + .highPrice(ohlcvResponse.getHighPrice()) + .lowPrice(ohlcvResponse.getLowPrice()) + .closePrice(ohlcvResponse.getClosePrice()) + .build()); + } + + return ohlcResponses; + } + } + + @Builder + @Getter + @AllArgsConstructor + @JsonNaming(value = PropertyNamingStrategies.SnakeCaseStrategy.class) + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class VResponse { + private String date; + @JsonSerialize(using = BigDecimalSerializer.class) + private BigDecimal volume; + + public static java.util.List ofVResponses(java.util.List ohlcvResponses) { + java.util.List vResponses = new ArrayList<>(); + for (OHLCVResponse ohlcvResponse : ohlcvResponses) { + vResponses.add(VResponse.builder() + .date(ohlcvResponse.getDate()) + .volume(ohlcvResponse.getVolume()) + .build()); + } + + return vResponses; + } + } + @Builder @Getter @AllArgsConstructor