From 3e0d209b34a0c4993f560ffc3b9e11ef2c1171bc Mon Sep 17 00:00:00 2001 From: gs Date: Thu, 15 Feb 2024 23:02:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=B8=80=E4=B8=8B=E6=8A=93?= =?UTF-8?q?=E5=8F=96=E8=82=A1=E7=A5=A8=E7=9A=84=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stock/market/dto/model/StockListVO.java | 21 +++++ .../infrastructure/job/MoneyScraper.java | 2 +- .../market/web/MoneyProxyApiControl.java | 88 +++++++++++++++++++ 3 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 src/main/java/cn/stock/market/web/MoneyProxyApiControl.java diff --git a/src/main/java/cn/stock/market/dto/model/StockListVO.java b/src/main/java/cn/stock/market/dto/model/StockListVO.java index 27b67f1..5b5d001 100644 --- a/src/main/java/cn/stock/market/dto/model/StockListVO.java +++ b/src/main/java/cn/stock/market/dto/model/StockListVO.java @@ -35,6 +35,11 @@ public class StockListVO { /*是否添加自选:1、添加自选,0、未添加自选*/ private String isOption; + private String pricechange; + + + private String symbol; + public void setCode(String code) { this.code = code; } @@ -255,4 +260,20 @@ public class StockListVO { public void setIsOption(String isOption) { this.isOption = isOption; } + + public String getPricechange() { + return pricechange; + } + + public void setPricechange(String pricechange) { + this.pricechange = pricechange; + } + + public String getSymbol() { + return symbol; + } + + public void setSymbol(String symbol) { + this.symbol = symbol; + } } diff --git a/src/main/java/cn/stock/market/infrastructure/job/MoneyScraper.java b/src/main/java/cn/stock/market/infrastructure/job/MoneyScraper.java index f2c3a1b..dd901e3 100644 --- a/src/main/java/cn/stock/market/infrastructure/job/MoneyScraper.java +++ b/src/main/java/cn/stock/market/infrastructure/job/MoneyScraper.java @@ -50,7 +50,7 @@ public class MoneyScraper { private MoneyStockRepository moneyStockRepository; @GetMapping("testScraperGetMoneyControlStock") - @Scheduled(cron = "0 0 2 */1 * ?") + //@Scheduled(cron = "0 0 2 */1 * ?") public void schedule(){ List letters = new ArrayList<>(); for (char c = 'A'; c <= 'Z'; c++) { diff --git a/src/main/java/cn/stock/market/web/MoneyProxyApiControl.java b/src/main/java/cn/stock/market/web/MoneyProxyApiControl.java new file mode 100644 index 0000000..7a6381d --- /dev/null +++ b/src/main/java/cn/stock/market/web/MoneyProxyApiControl.java @@ -0,0 +1,88 @@ +package cn.stock.market.web; + +import cn.stock.market.dto.model.StockListVO; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.math.BigDecimal; +import java.net.HttpURLConnection; +import java.net.URL; + +/** + * @author gs + * @date 2024/2/15 下午9:18 + */ +@Slf4j +@RestController +public class MoneyProxyApiControl { + + + @RequestMapping(value = "/api/proxy/queryStockMoneyProxy",method = RequestMethod.GET) + public StockListVO queryStockByMoneyIdAndExchangeType(String scId,String exchangeType){ + return stockByMoneyIdAndExchangeTypeFromHttp(scId,exchangeType); + } + + + public static StockListVO stockByMoneyIdAndExchangeTypeFromHttp(String scId, String exchangeType) { + try { + String url = "https://priceapi.moneycontrol.com/pricefeed/"+exchangeType+"/equitycash/" + scId ; + URL obj = new URL(url); + HttpURLConnection con = (HttpURLConnection) obj.openConnection(); + con.setRequestMethod("GET"); + + int responseCode = con.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK) { + BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuilder response = new StringBuilder(); + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + // 解析JSON数据 + JSONObject jsonObject = null; + try { + jsonObject = JSONObject.parseObject(response.toString()); + } catch (Exception e) { + + } + log.info("stockByCodeAndExchangeType:获取 sc_id:{}, exchangeType: {} 的实时价格的结果:{} ",scId,exchangeType,jsonObject.toJSONString()); + StockListVO stockListVO = mapJsonToMoneyStockListVO(jsonObject); + stockListVO.setStock_type(exchangeType); + return stockListVO; + } else { + log.error("HTTP request failed with response code: " + responseCode); + } + } catch (Exception e) { + log.error("stockByMoneyIdAndExchangeTypeFromHttp",e); + } + return null; + } + + + private static StockListVO mapJsonToMoneyStockListVO(JSONObject jsonObject) { + StockListVO stockListVO = new StockListVO(); + if (jsonObject != null) { + JSONObject data = jsonObject.getJSONObject("data"); + if(data!=null&&!data.isEmpty()){ + stockListVO.setName(data.getString("company")); + stockListVO.setCode(data.getString("code")); + stockListVO.setSpell(data.getString("company")); + stockListVO.setGid(data.getString("symbol")); + stockListVO.setNowPrice(data.getString("pricecurrent")); + stockListVO.setOpen_px(data.getString("OPN")); + stockListVO.setPreclose_px(data.getString("priceprevclose")); + stockListVO.setHcrate(new BigDecimal(data.getString("pricepercentchange"))); + stockListVO.setSymbol(data.getString("symbol")); + stockListVO.setPricechange(data.getString("pricechange")); + } + } + return stockListVO; + } + +}