home-page
This commit is contained in:
@@ -13,6 +13,7 @@ import cn.hutool.core.text.StrFormatter;
|
||||
import cn.stock.market.dto.model.*;
|
||||
import cn.stock.market.infrastructure.api.EttechchartsApis;
|
||||
import cn.stock.market.infrastructure.api.GrowwInApis;
|
||||
import cn.stock.market.infrastructure.api.HomeApiIndex;
|
||||
import cn.stock.market.infrastructure.api.TodayApis;
|
||||
import cn.stock.market.infrastructure.api.investing.IndiaIndexVo;
|
||||
import cn.stock.market.infrastructure.api.investing.IndiaStockVO;
|
||||
@@ -1048,7 +1049,8 @@ public class StockService {
|
||||
return ServerResponse.createBySuccess(indexVoList);
|
||||
}
|
||||
|
||||
public ServerResponse getIndexByBtoday(){
|
||||
public ServerResponse getIndexByBtoday() throws Exception {
|
||||
List<StockIndex> list = HomeApiIndex.fetchStockIndices();
|
||||
List<IndiaIndexVo> indexVoList = new ArrayList<>();
|
||||
try {
|
||||
String exchange = "bse";
|
||||
|
||||
31
src/main/java/cn/stock/market/dto/model/StockIndex.java
Normal file
31
src/main/java/cn/stock/market/dto/model/StockIndex.java
Normal file
@@ -0,0 +1,31 @@
|
||||
package cn.stock.market.dto.model;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class StockIndex {
|
||||
private String id;
|
||||
private String symbol;
|
||||
private String name;
|
||||
private String exchange;
|
||||
private String micCode;
|
||||
private String datetime;
|
||||
private long timestamp;
|
||||
private Double open;
|
||||
private Double high;
|
||||
private Double low;
|
||||
private Double close;
|
||||
private Long volume;
|
||||
private Double previousClose;
|
||||
private Double change;
|
||||
private Double percentChange;
|
||||
private Long averageVolume;
|
||||
private Boolean isMarketOpen;
|
||||
private Long marketCap;
|
||||
private String fiftyTwoWeek;
|
||||
private Integer icon;
|
||||
|
||||
// Getters & setters (hoặc dùng @Data nếu có Lombok)
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
package cn.stock.market.infrastructure.api;
|
||||
import cn.stock.market.dto.model.StockIndex;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class HomeApiIndex {
|
||||
private static final OkHttpClient client = new OkHttpClient();
|
||||
private static final String API_URL = "https://apinode-dgdev.moneytj.com/api/ger-market/stocks/query-list?symbols=XETR:DAX,XETR:MDAX,XETR:SDXP,XETR:HDAX";
|
||||
|
||||
|
||||
public static List<StockIndex> fetchStockIndices() throws Exception {
|
||||
List<StockIndex> result = new ArrayList<>();
|
||||
|
||||
Request request = new Request.Builder()
|
||||
.url(API_URL)
|
||||
.addHeader("User-Agent", "Mozilla/5.0")
|
||||
.addHeader("Accept", "application/json")
|
||||
.build();
|
||||
|
||||
Response response = client.newCall(request).execute();
|
||||
|
||||
if (!response.isSuccessful()) {
|
||||
throw new RuntimeException("HTTP error code: " + response.code());
|
||||
}
|
||||
|
||||
String body = response.body().string();
|
||||
JSONObject json = new JSONObject(body);
|
||||
JSONArray data = json.getJSONArray("data");
|
||||
|
||||
for (int i = 0; i < data.length(); i++) {
|
||||
JSONObject obj = data.getJSONObject(i);
|
||||
StockIndex index = new StockIndex();
|
||||
|
||||
index.setId(obj.optString("id"));
|
||||
index.setSymbol(obj.optString("symbol"));
|
||||
index.setName(obj.optString("name"));
|
||||
index.setExchange(obj.optString("exchange"));
|
||||
index.setMicCode(obj.optString("mic_code"));
|
||||
index.setDatetime(obj.optString("datetime"));
|
||||
index.setTimestamp(obj.optLong("timestamp"));
|
||||
index.setOpen(getDoubleOrNull(obj, "open"));
|
||||
index.setHigh(getDoubleOrNull(obj, "high"));
|
||||
index.setLow(getDoubleOrNull(obj, "low"));
|
||||
index.setClose(getDoubleOrNull(obj, "close"));
|
||||
index.setVolume(getLongOrNull(obj, "volume"));
|
||||
index.setPreviousClose(getDoubleOrNull(obj, "previous_close"));
|
||||
index.setChange(getDoubleOrNull(obj, "change"));
|
||||
index.setPercentChange(getDoubleOrNull(obj, "percent_change"));
|
||||
index.setAverageVolume(getLongOrNull(obj, "average_volume"));
|
||||
index.setIsMarketOpen(obj.optBoolean("is_market_open"));
|
||||
index.setMarketCap(getLongOrNull(obj, "market_cap"));
|
||||
index.setFiftyTwoWeek(obj.optString("fifty_two_week", null));
|
||||
index.setIcon(obj.optInt("icon", 0));
|
||||
|
||||
result.add(index);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// Helper to safely parse nullable numbers
|
||||
private static Double getDoubleOrNull(JSONObject obj, String key) {
|
||||
return obj.isNull(key) ? null : obj.optDouble(key);
|
||||
}
|
||||
|
||||
private static Long getLongOrNull(JSONObject obj, String key) {
|
||||
return obj.isNull(key) ? null : obj.optLong(key);
|
||||
}
|
||||
}
|
||||
@@ -249,8 +249,12 @@ public class StockApiController {
|
||||
public ServerResponse getIndiaIndexByToday() {
|
||||
String INDEX_CODE = "TODAY_INDEX";
|
||||
return RequestCacheUtils.cache("getIndiaIndexByToday.do", INDEX_CODE,6000, (string) -> {
|
||||
return this.stockService.getIndexByBtoday();
|
||||
});
|
||||
try {
|
||||
return this.stockService.getIndexByBtoday();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
@RequestMapping({"getIndiaIndexByEttech.do"})
|
||||
@ApiOperation(value = "印度--获取指定指数信息-Ettech", httpMethod = "GET")
|
||||
|
||||
Reference in New Issue
Block a user