Skip to content

Commit 99d2cf5

Browse files
authored
Merge pull request #133 from nimuy99/fix/#131-binance-api-response
#131 Fix: 바이낸스 api 응답 자료형 변경
2 parents 0b3f505 + e7a8f9d commit 99d2cf5

File tree

13 files changed

+173
-73
lines changed

13 files changed

+173
-73
lines changed

src/main/java/com/memesphere/domain/chartdata/converter/ChartDataConverter.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ public static ChartData toChartData(MemeCoin memeCoin, BinanceTickerResponse res
1313
return ChartData.builder()
1414
.memeCoin(memeCoin)
1515
.recordedTime(LocalDateTime.now())
16-
.price(new BigDecimal(response.getLastPrice()))
17-
.priceChange(new BigDecimal(response.getPriceChange()))
18-
.priceChangeRate(new BigDecimal(response.getPriceChangePercent()))
19-
.weighted_average_price(new BigDecimal(response.getWeightedAvgPrice()))
16+
.price(Double.parseDouble(response.getLastPrice()))
17+
.priceChange(Double.parseDouble(response.getPriceChange()))
18+
.priceChangeRate(Double.parseDouble(response.getPriceChangePercent()))
19+
.weighted_average_price(Double.parseDouble(response.getWeightedAvgPrice()))
2020
.volume(new BigDecimal(response.getVolume()))
21-
.low_price(new BigDecimal(response.getLowPrice()))
22-
.high_price(new BigDecimal(response.getHighPrice()))
21+
.low_price(Double.parseDouble(response.getLowPrice()))
22+
.high_price(Double.parseDouble(response.getHighPrice()))
2323
.build();
2424
}
2525
}

src/main/java/com/memesphere/domain/chartdata/entity/ChartData.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,25 @@ public class ChartData extends BaseEntity {
2727
private LocalDateTime recordedTime;
2828

2929
@Column
30-
private BigDecimal price;
30+
private Double price;
3131

3232
@Column
33-
private BigDecimal priceChange;
33+
private Double priceChange;
3434

3535
@Column
36-
private BigDecimal priceChangeRate;
36+
private Double priceChangeRate;
3737

3838
@Column
39-
private BigDecimal weighted_average_price;
39+
private Double weighted_average_price;
4040

4141
@Column
4242
private BigDecimal volume;
4343

4444
@Column
45-
private BigDecimal low_price;
45+
private Double low_price;
4646

4747
@Column
48-
private BigDecimal high_price;
48+
private Double high_price;
4949

5050
@ManyToOne(fetch = FetchType.LAZY)
5151
@JoinColumn(name = "coin_id", nullable = false) // 외래 키

src/main/java/com/memesphere/domain/collection/converter/CollectionConverter.java

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.springframework.data.domain.Page;
1313

1414
import java.math.BigDecimal;
15+
import java.math.RoundingMode;
1516
import java.util.List;
1617
import java.util.stream.Collectors;
1718

@@ -56,11 +57,21 @@ private static CollectionGridPreviewResponse toCollectionGridPreviewDTO(Collecti
5657
.name(memeCoin.getName())
5758
.symbol(memeCoin.getSymbol())
5859
.image(memeCoin.getImage())
59-
.currentPrice(chartData.getPrice())
60-
.highPrice(chartData.getHigh_price())
61-
.lowPrice(chartData.getLow_price())
62-
.priceChange(chartData.getPriceChange())
63-
.priceChangeRate(chartData.getPriceChangeRate())
60+
.currentPrice(BigDecimal.valueOf(chartData.getPrice())
61+
.setScale(8, RoundingMode.HALF_UP)
62+
.toPlainString())
63+
.highPrice(BigDecimal.valueOf(chartData.getHigh_price())
64+
.setScale(8, RoundingMode.HALF_UP)
65+
.toPlainString())
66+
.lowPrice(BigDecimal.valueOf(chartData.getLow_price())
67+
.setScale(8, RoundingMode.HALF_UP)
68+
.toPlainString())
69+
.priceChange(BigDecimal.valueOf(chartData.getPriceChange())
70+
.setScale(8, RoundingMode.HALF_UP)
71+
.toPlainString())
72+
.priceChangeRate(BigDecimal.valueOf(chartData.getPriceChangeRate())
73+
.setScale(8, RoundingMode.HALF_UP)
74+
.toPlainString())
6475
.build();
6576
}
6677

@@ -72,9 +83,15 @@ public static CollectionListPreviewResponse toCollectionListPreviewDTO(Collectio
7283
.coinId(memeCoin.getId())
7384
.name(memeCoin.getName())
7485
.symbol(memeCoin.getSymbol())
75-
.currentPrice(chartData.getPrice())
76-
.priceChangeRate(chartData.getPriceChangeRate())
77-
.weightedAveragePrice(chartData.getWeighted_average_price())
86+
.currentPrice(BigDecimal.valueOf(chartData.getPrice())
87+
.setScale(8, RoundingMode.HALF_UP)
88+
.toPlainString())
89+
.priceChangeRate(BigDecimal.valueOf(chartData.getPriceChangeRate())
90+
.setScale(8, RoundingMode.HALF_UP)
91+
.toPlainString())
92+
.weightedAveragePrice(BigDecimal.valueOf(chartData.getWeighted_average_price())
93+
.setScale(8, RoundingMode.HALF_UP)
94+
.toPlainString())
7895
.volume(chartData.getVolume())
7996
.build();
8097
}

src/main/java/com/memesphere/domain/collection/dto/response/CollectionGridPreviewResponse.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.memesphere.domain.collection.dto.response;
22

3+
import com.fasterxml.jackson.annotation.JsonFormat;
34
import io.swagger.v3.oas.annotations.media.Schema;
45
import lombok.AllArgsConstructor;
56
import lombok.Builder;
@@ -15,20 +16,28 @@
1516
public class CollectionGridPreviewResponse {
1617
@Schema(description = "밈코인 id", example = "1")
1718
Long coinId;
19+
1820
@Schema(description = "밈코인 name", example = "도지코인")
1921
String name;
22+
2023
@Schema(description = "밈코인 symbol", example = "DOGE")
2124
String symbol;
25+
2226
@Schema(description = "밈코인 image", example = "https://bucketname.s3.region.amazonaws.com/image1.jpg")
2327
String image;
28+
2429
@Schema(description = "차트 데이터의 price", example = "2000")
25-
BigDecimal currentPrice;
30+
String currentPrice;
31+
2632
@Schema(description = "차트 데이터의 high_price", example = "2500")
27-
BigDecimal highPrice;
33+
String highPrice;
34+
2835
@Schema(description = "차트 데이터의 low_price", example = "1500")
29-
BigDecimal lowPrice;
36+
String lowPrice;
37+
3038
@Schema(description = "차트 데이터의 price_change", example = "500")
31-
BigDecimal priceChange;
39+
String priceChange;
40+
3241
@Schema(description = "차트 데이터의 price_change_rate", example = "2.4")
33-
BigDecimal priceChangeRate;
42+
String priceChangeRate;
3443
}

src/main/java/com/memesphere/domain/collection/dto/response/CollectionListPreviewResponse.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.memesphere.domain.collection.dto.response;
22

3+
import com.fasterxml.jackson.annotation.JsonFormat;
34
import io.swagger.v3.oas.annotations.media.Schema;
45
import lombok.AllArgsConstructor;
56
import lombok.Builder;
@@ -15,16 +16,22 @@
1516
public class CollectionListPreviewResponse {
1617
@Schema(description = "밈코인 id", example = "1")
1718
Long coinId;
19+
1820
@Schema(description = "밈코인 name", example = "도지코인")
1921
String name;
22+
2023
@Schema(description = "밈코인 symbol", example = "DOGE")
2124
String symbol;
25+
2226
@Schema(description = "차트 데이터의 price", example = "2000")
23-
BigDecimal currentPrice;
27+
String currentPrice;
28+
2429
@Schema(description = "차트 데이터의 price_change_rate", example = "+2.4%")
25-
BigDecimal priceChangeRate;
30+
String priceChangeRate;
31+
2632
@Schema(description = "차트 데이터의 weighted average price", example = "10000")
27-
BigDecimal weightedAveragePrice; // market cap 대신 사용
33+
String weightedAveragePrice; // market cap 대신 사용
34+
2835
@Schema(description = "차트 데이터의 volume", example = "5")
2936
BigDecimal volume;
3037
}

src/main/java/com/memesphere/domain/dashboard/converter/DashboardConverter.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99

1010
import java.math.BigDecimal;
11+
import java.math.RoundingMode;
1112
import java.time.LocalDateTime;
1213
import java.util.ArrayList;
1314
import java.util.List;
@@ -68,11 +69,19 @@ public static DashboardTrendResponse toTrend(ChartData data,
6869
.name(memeCoin.getName())
6970
.symbol(memeCoin.getSymbol())
7071
.volume(data.getVolume())
71-
.price(data.getPrice())
72-
.priceChange(data.getPriceChange())
73-
.priceChangeAbsolute(data.getPriceChange().abs())
74-
.priceChangeDirection(data.getPriceChangeRate().compareTo(BigDecimal.ZERO) < 0 ? "down" : "up")
75-
.priceChangeRate(data.getPriceChangeRate())
72+
.price(BigDecimal.valueOf(data.getPrice())
73+
.setScale(8, RoundingMode.HALF_UP)
74+
.toPlainString())
75+
.priceChange(BigDecimal.valueOf(data.getPriceChange())
76+
.setScale(8, RoundingMode.HALF_UP)
77+
.toPlainString())
78+
.priceChangeAbsolute(BigDecimal.valueOf(Math.abs(data.getPriceChange()))
79+
.setScale(8, RoundingMode.HALF_UP)
80+
.toPlainString())
81+
.priceChangeDirection(data.getPriceChangeRate() < 0 ? "down" : "up")
82+
.priceChangeRate(BigDecimal.valueOf(data.getPriceChangeRate())
83+
.setScale(8, RoundingMode.HALF_UP)
84+
.toPlainString())
7685
.rankChangeDirection(rankDirection)
7786
.build();
7887
}

src/main/java/com/memesphere/domain/dashboard/dto/response/DashboardTrendResponse.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.memesphere.domain.dashboard.dto.response;
22

3+
import com.fasterxml.jackson.annotation.JsonFormat;
34
import io.swagger.v3.oas.annotations.media.Schema;
45
import lombok.Builder;
56
import lombok.Getter;
@@ -25,19 +26,19 @@ public class DashboardTrendResponse {
2526
private BigDecimal volume;
2627

2728
@Schema(description = "현재가", example = "0.20")
28-
private BigDecimal price;
29+
private String price;
2930

3031
@Schema(description = "가격 변화량", example = "-0.03")
31-
private BigDecimal priceChange;
32+
private String priceChange;
3233

3334
@Schema(description = "가격 변화량 절대값", example = "0.03")
34-
private BigDecimal priceChangeAbsolute;
35+
private String priceChangeAbsolute;
3536

3637
@Schema(description = "가격 변화 방향", example = "down")
3738
private String priceChangeDirection;
3839

3940
@Schema(description = "가격 변화율", example = "-6.35")
40-
private BigDecimal priceChangeRate;
41+
private String priceChangeRate;
4142

4243
@Schema(description = "순위 변화 방향", example = "down")
4344
private String rankChangeDirection;

src/main/java/com/memesphere/domain/detail/converter/DetailConverter.java

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.memesphere.domain.detail.dto.response.DetailGetResponse;
77

88
import java.math.BigDecimal;
9+
import java.math.RoundingMode;
910

1011
public class DetailConverter {
1112

@@ -26,14 +27,28 @@ public static DetailGetResponse toDetailGetResponse(MemeCoin memeCoin) {
2627
public static PriceInfoResponse toPriceInfoResponse(MemeCoin memeCoin, ChartData data) {
2728
return PriceInfoResponse.builder()
2829
.coinId(memeCoin.getId())
29-
.price(data.getPrice())
30-
.priceChange(data.getPriceChange())
31-
.priceChangeAbsolute(data.getPriceChange().abs())
32-
.priceChangeDirection(data.getPriceChangeRate().compareTo(BigDecimal.ZERO) < 0 ? "down" : "up")
33-
.priceChangeRate(data.getPriceChangeRate())
34-
.weightedAveragePrice(data.getWeighted_average_price())
35-
.highPrice(data.getHigh_price())
36-
.lowPrice(data.getLow_price())
30+
.price(BigDecimal.valueOf(data.getPrice())
31+
.setScale(8, RoundingMode.HALF_UP)
32+
.toPlainString())
33+
.priceChange(BigDecimal.valueOf(data.getPriceChange())
34+
.setScale(8, RoundingMode.HALF_UP)
35+
.toPlainString())
36+
.priceChangeAbsolute(BigDecimal.valueOf(Math.abs(data.getPriceChange()))
37+
.setScale(8, RoundingMode.HALF_UP)
38+
.toPlainString())
39+
.priceChangeDirection(data.getPriceChangeRate() < 0 ? "down" : "up")
40+
.priceChangeRate(BigDecimal.valueOf(data.getPriceChangeRate())
41+
.setScale(8, RoundingMode.HALF_UP)
42+
.toPlainString())
43+
.weightedAveragePrice(BigDecimal.valueOf(data.getWeighted_average_price())
44+
.setScale(8, RoundingMode.HALF_UP)
45+
.toPlainString())
46+
.highPrice(BigDecimal.valueOf(data.getHigh_price())
47+
.setScale(8, RoundingMode.HALF_UP)
48+
.toPlainString())
49+
.lowPrice(BigDecimal.valueOf(data.getLow_price())
50+
.setScale(8, RoundingMode.HALF_UP)
51+
.toPlainString())
3752
.build();
3853
}
3954
}
Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.memesphere.domain.detail.dto.response;
22

3+
import com.fasterxml.jackson.annotation.JsonFormat;
34
import io.swagger.v3.oas.annotations.media.Schema;
45
import lombok.Builder;
56
import lombok.Getter;
@@ -13,26 +14,26 @@ public class PriceInfoResponse {
1314
private Long coinId;
1415

1516
@Schema(description = "현재가", example = "0.20")
16-
private BigDecimal price;
17+
private String price;
1718

1819
@Schema(description = "가격 변화량", example = "-0.03")
19-
private BigDecimal priceChange;
20+
private String priceChange;
2021

2122
@Schema(description = "가격 변화량 절대값", example = "0.03")
22-
private BigDecimal priceChangeAbsolute;
23+
private String priceChangeAbsolute;
2324

2425
@Schema(description = "가격 변화 방향", example = "down")
2526
private String priceChangeDirection;
2627

2728
@Schema(description = "가격 변화율", example = "-6.35")
28-
private BigDecimal priceChangeRate;
29+
private String priceChangeRate;
2930

3031
@Schema(description = "거래량 가중 평균 가격", example = "-942.38")
31-
private BigDecimal weightedAveragePrice;
32+
private String weightedAveragePrice;
3233

3334
@Schema(description = "24h 최고가", example = "2500")
34-
private BigDecimal highPrice;
35+
private String highPrice;
3536

3637
@Schema(description = "24h 최저가", example = "1500")
37-
private BigDecimal lowPrice;
38+
private String lowPrice;
3839
}

src/main/java/com/memesphere/domain/notification/service/PushNotificationServiceImpl.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -144,11 +144,16 @@ private boolean isVolatilityExceeded(Notification notification) {
144144
return false; // 비교할 데이터가 부족하면 알림을 보내지 않음
145145
}
146146

147-
BigDecimal sum = lastNData.stream()
148-
.map(ChartData::getPriceChangeRate)
149-
.reduce(BigDecimal.ZERO, BigDecimal::add);
150-
BigDecimal average = sum.divide(BigDecimal.valueOf(count), 4, RoundingMode.HALF_UP);
151-
BigDecimal definedVolatility = new BigDecimal(notification.getVolatility());
147+
// BigDecimal sum = lastNData.stream()
148+
// .map(ChartData::getPriceChangeRate)
149+
// .reduce(BigDecimal.ZERO, BigDecimal::add);
150+
// BigDecimal average = sum.divide(BigDecimal.valueOf(count), 4, RoundingMode.HALF_UP);
151+
// BigDecimal definedVolatility = new BigDecimal(notification.getVolatility());
152+
Double sum = lastNData.stream()
153+
.mapToDouble(ChartData::getPriceChangeRate)
154+
.sum();
155+
Double average = sum / count;
156+
Double definedVolatility = notification.getVolatility().doubleValue();
152157

153158
if (notification.getIsRising()) { // 상승인 경우
154159
return average.compareTo(definedVolatility) > 0;

0 commit comments

Comments
 (0)