Skip to content

Commit

Permalink
Merge pull request #79 from CSID-DGU/feature/#42/dashboard
Browse files Browse the repository at this point in the history
[refactor] : 차트 두 종류로 분리
  • Loading branch information
bbbang105 authored Jun 17, 2024
2 parents cb75b5a + 4c8eada commit 8831929
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ public enum SuccessStatus implements BaseCode {
SUCCESS_GET_USER_COINS(HttpStatus.OK, "200", "유저 보유 코인 조회에 성공했습니다"),
SUCCESS_GET_REPRESENTATIVE_COINS(HttpStatus.OK, "200", "대표 코인 조회에 성공했습니다"),
SUCCESS_GET_BITCOIN_DAY_CHARTS(HttpStatus.OK, "200", "비트코인 일봉 차트 조회에 성공했습니다"),
SUCCESS_GET_BITCOIN_ONE_MINUTE_CHARTS(HttpStatus.OK, "200", "비트코인 1분봉 차트 조회에 성공했습니다"),
SUCCESS_GET_BITCOIN_ONE_MINUTE_CHARTS(HttpStatus.OK, "200", "비트코인 1분봉 OHLC 차트 조회에 성공했습니다"),
SUCCESS_GET_BITCOIN_ONE_MINUTE_VOLUME_CHARTS(HttpStatus.OK, "200", "비트코인 1분봉 V 차트 조회에 성공했습니다"),
// Upbit-Key
SUCCESS_ADD_UPBIT_KEYS(HttpStatus.CREATED, "201", "업비트 키 등록에 성공했습니다"),
// Chart
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ public ResponseEntity<ApiResponse<DashBoardDto.UserAccountResponse>> getUserBala
@RequestHeader("Authorization") String authorizationHeader) {

DashBoardDto.UserAccountResponse userBalanceResponse = dashBoardService.getUserAccount(authorizationHeader);

return ApiResponse.onSuccess(SuccessStatus.SUCCESS_GET_USER_BALANCE, userBalanceResponse);
}

Expand All @@ -37,6 +38,7 @@ public ResponseEntity<ApiResponse<List<DashBoardDto.UserCoinResponse>>> getUserC
@RequestHeader("Authorization") String authorizationHeader) {

List<DashBoardDto.UserCoinResponse> userCoins = dashBoardService.getUserCoins(authorizationHeader);

return ApiResponse.onSuccess(SuccessStatus.SUCCESS_GET_USER_COINS, userCoins);
}

Expand All @@ -45,6 +47,7 @@ public ResponseEntity<ApiResponse<List<DashBoardDto.UserCoinResponse>>> getUserC
public ResponseEntity<ApiResponse<List<DashBoardDto.RepresentativeCoinResponse>>> getRepresentativeCoins() {

List<DashBoardDto.RepresentativeCoinResponse> representativeCoinResponses = dashBoardService.getRepresentativeCoins();

return ApiResponse.onSuccess(SuccessStatus.SUCCESS_GET_REPRESENTATIVE_COINS, representativeCoinResponses);
}

Expand All @@ -53,15 +56,29 @@ public ResponseEntity<ApiResponse<List<DashBoardDto.RepresentativeCoinResponse>>
public ResponseEntity<ApiResponse<List<ChartDto.OHLCVResponse>>> getBitcoinDayCharts() {

List<ChartDto.OHLCVResponse> 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<ApiResponse<List<ChartDto.OHLCVResponse>>> getBitcoinOneMinuteCharts() {
public ResponseEntity<ApiResponse<List<ChartDto.OHLCResponse>>> getBitcoinOneMinuteCharts() {

LocalDateTime startDate = dateUtil.calculateDailyStartDate();
List<ChartDto.OHLCVResponse> ohlcvResponses = chartService.getOHLCVCharts("비트코인", "minutes1", startDate);
return ApiResponse.onSuccess(SuccessStatus.SUCCESS_GET_BITCOIN_ONE_MINUTE_CHARTS, ohlcvResponses);
List<ChartDto.OHLCResponse> 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<ApiResponse<List<ChartDto.VResponse>>> getBitcoinOneMinuteVolumeCharts() {

LocalDateTime startDate = dateUtil.calculateDailyStartDate();
List<ChartDto.OHLCVResponse> ohlcvResponses = chartService.getOHLCVCharts("비트코인", "minutes1", startDate);
List<ChartDto.VResponse> vResponses = ChartDto.VResponse.ofVResponses(ohlcvResponses);

return ApiResponse.onSuccess(SuccessStatus.SUCCESS_GET_BITCOIN_ONE_MINUTE_VOLUME_CHARTS, vResponses);
}
}
56 changes: 56 additions & 0 deletions backend/src/main/java/org/dgu/backend/dto/ChartDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;

public class ChartDto {
@Builder
Expand Down Expand Up @@ -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<OHLCResponse> ofOHLCResponses(java.util.List<OHLCVResponse> ohlcvResponses) {
java.util.List<OHLCResponse> 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<VResponse> ofVResponses(java.util.List<OHLCVResponse> ohlcvResponses) {
java.util.List<VResponse> vResponses = new ArrayList<>();
for (OHLCVResponse ohlcvResponse : ohlcvResponses) {
vResponses.add(VResponse.builder()
.date(ohlcvResponse.getDate())
.volume(ohlcvResponse.getVolume())
.build());
}

return vResponses;
}
}

@Builder
@Getter
@AllArgsConstructor
Expand Down

0 comments on commit 8831929

Please sign in to comment.