From fc8f94d056fc05b4197139c481d676d938ca7dfa Mon Sep 17 00:00:00 2001 From: xiaoliuhu Date: Mon, 25 Dec 2023 23:59:45 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0today=E8=82=A1?= =?UTF-8?q?=E7=A5=A8=E8=A1=8C=E6=83=85top=E6=9D=BF=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/infrastructure/api/TodayApis.java | 114 ++++++++++++++++++ .../stock/market/utils/HttpClientRequest.java | 6 + .../stock/market/web/TodayApiController.java | 44 +++++++ 3 files changed, 164 insertions(+) create mode 100644 src/main/java/cn/stock/market/infrastructure/api/TodayApis.java create mode 100644 src/main/java/cn/stock/market/web/TodayApiController.java diff --git a/src/main/java/cn/stock/market/infrastructure/api/TodayApis.java b/src/main/java/cn/stock/market/infrastructure/api/TodayApis.java new file mode 100644 index 0000000..ee67e68 --- /dev/null +++ b/src/main/java/cn/stock/market/infrastructure/api/TodayApis.java @@ -0,0 +1,114 @@ +package cn.stock.market.infrastructure.api; + +import cn.stock.market.utils.HttpClientRequest; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.util.ArrayList; +import java.util.List; + +/** + * 数据来源网站:https://www.businesstoday.in/stocks + * + * @auther xiaoliuhu + */ +public class TodayApis { + + static String get(String url) { + return HttpClientRequest.doGet(url); + } + + //获取Top Gainers + public static List getTopGainers(String exchange){ + String url = "https://marketapi.intoday.in/widget/topgainer/view?exchange=" + exchange; + //返回字符串对象格式:{"status_code":1,"success":true,"data":[{}],"message":"Successful","fromredis":true} + String str = get(url); + JSONObject object = JSON.parseObject(str); + boolean bool = false; + if(object.containsKey("success")){ + bool = object.getBoolean("success"); + } + if(!bool){ + return null; + } + //进行数据转换 + List dataObject = new ArrayList<>(); + JSONArray jsonArray = JSON.parseArray(object.getString("data")); + for (Object obj : jsonArray){ + JSONObject entity = JSON.parseObject(obj.toString()); + dataObject.add(entity); + } + return dataObject; + } + //获取Top Losers + public static List getTopLosers(String exchange){ + String url = "https://marketapi.intoday.in/widget/toploser/view?exchange=" + exchange; + //返回字符串对象格式:{"status_code":1,"success":true,"data":[{}],"message":"Successful","fromredis":true} + String str = get(url); + JSONObject object = JSON.parseObject(str); + boolean bool = false; + if(object.containsKey("success")){ + bool = object.getBoolean("success"); + } + if(!bool){ + return null; + } + //进行数据转换 + List dataObject = new ArrayList<>(); + JSONArray jsonArray = JSON.parseArray(object.getString("data")); + for (Object obj : jsonArray){ + JSONObject entity = JSON.parseObject(obj.toString()); + dataObject.add(entity); + } + return dataObject; + } + //获取Most Active Volume + public static List getMostActiveVolume(String exchange){ + String url = "https://marketapi.intoday.in/widget/toploser/view?exchange=" + exchange; + //返回字符串对象格式:{"status_code":1,"success":true,"data":[{}],"message":"Successful","fromredis":true} + String str = get(url); + JSONObject object = JSON.parseObject(str); + boolean bool = false; + if(object.containsKey("success")){ + bool = object.getBoolean("success"); + } + if(!bool){ + return null; + } + //进行数据转换 + List dataObject = new ArrayList<>(); + JSONArray jsonArray = JSON.parseArray(object.getString("data")); + for (Object obj : jsonArray){ + JSONObject entity = JSON.parseObject(obj.toString()); + dataObject.add(entity); + } + return dataObject; + } + //获取Most Active Value + public static List getMostActiveValue(String exchange){ + String url = "https://marketapi.intoday.in/widget/toploser/view?exchange=" + exchange; + //返回字符串对象格式:{"status_code":1,"success":true,"data":[{}],"message":"Successful","fromredis":true} + String str = get(url); + JSONObject object = JSON.parseObject(str); + boolean bool = false; + if(object.containsKey("success")){ + bool = object.getBoolean("success"); + } + if(!bool){ + return null; + } + //进行数据转换 + List dataObject = new ArrayList<>(); + JSONArray jsonArray = JSON.parseArray(object.getString("data")); + for (Object obj : jsonArray){ + JSONObject entity = JSON.parseObject(obj.toString()); + dataObject.add(entity); + } + return dataObject; + } + + public static void main(String[] args) { + System.out.println(getTopGainers("nse")); + } +} diff --git a/src/main/java/cn/stock/market/utils/HttpClientRequest.java b/src/main/java/cn/stock/market/utils/HttpClientRequest.java index bcad2f6..b67e2a2 100644 --- a/src/main/java/cn/stock/market/utils/HttpClientRequest.java +++ b/src/main/java/cn/stock/market/utils/HttpClientRequest.java @@ -211,4 +211,10 @@ public class HttpClientRequest { } return result; } + + public static void main(String[] args) { + String url = "https://marketapi.intoday.in/widget/topgainer/view?exchange=nse"; + String str = doGet(url); + System.out.println(str); + } } diff --git a/src/main/java/cn/stock/market/web/TodayApiController.java b/src/main/java/cn/stock/market/web/TodayApiController.java new file mode 100644 index 0000000..9c65047 --- /dev/null +++ b/src/main/java/cn/stock/market/web/TodayApiController.java @@ -0,0 +1,44 @@ +package cn.stock.market.web; + +import cn.stock.market.infrastructure.api.TodayApis; +import cn.stock.market.utils.ServerResponse; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +@Api(value = "/TodayApiController", tags = "today股票行情") +@RequestMapping({"/api/market/today/"}) +public class TodayApiController { + + @RequestMapping({"getTopGainers.do"}) + @ApiOperation(value = "获取Top Gainers",notes = "exchange传nse或者bse", httpMethod = "GET") + @ResponseBody + public ServerResponse getTopGainers(@RequestParam("exchange") String exchange) { + return ServerResponse.createBySuccess(TodayApis.getTopGainers(exchange)); + } + + @RequestMapping({"getTopLosers.do"}) + @ApiOperation(value = "获取 Top Losers",notes = "exchange传nse或者bse", httpMethod = "GET") + @ResponseBody + public ServerResponse getTopLosers(@RequestParam("exchange") String exchange) { + return ServerResponse.createBySuccess(TodayApis.getTopLosers(exchange)); + } + + @RequestMapping({"getMostActiveVolume.do"}) + @ApiOperation(value = "获取 Most Active Volume",notes = "exchange传nse或者bse", httpMethod = "GET") + @ResponseBody + public ServerResponse getMostActiveVolume(@RequestParam("exchange") String exchange) { + return ServerResponse.createBySuccess(TodayApis.getMostActiveVolume(exchange)); + } + + @RequestMapping({"getMostActiveValue.do"}) + @ApiOperation(value = "获取 Most Active Value",notes = "exchange传nse或者bse",httpMethod = "GET") + @ResponseBody + public ServerResponse getMostActiveValue(@RequestParam("exchange") String exchange) { + return ServerResponse.createBySuccess(TodayApis.getMostActiveValue(exchange)); + } +} From 8c0a21ae8f5a23ffaca919161948add9082ee6ff Mon Sep 17 00:00:00 2001 From: xiaoliuhu Date: Tue, 26 Dec 2023 17:06:20 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/stock/market/infrastructure/api/TodayApis.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/cn/stock/market/infrastructure/api/TodayApis.java b/src/main/java/cn/stock/market/infrastructure/api/TodayApis.java index ee67e68..bd50302 100644 --- a/src/main/java/cn/stock/market/infrastructure/api/TodayApis.java +++ b/src/main/java/cn/stock/market/infrastructure/api/TodayApis.java @@ -65,7 +65,7 @@ public class TodayApis { } //获取Most Active Volume public static List getMostActiveVolume(String exchange){ - String url = "https://marketapi.intoday.in/widget/toploser/view?exchange=" + exchange; + String url = "https://marketapi.intoday.in/widget/mostactivetopper/view?exchange=" + exchange; //返回字符串对象格式:{"status_code":1,"success":true,"data":[{}],"message":"Successful","fromredis":true} String str = get(url); JSONObject object = JSON.parseObject(str); @@ -87,7 +87,7 @@ public class TodayApis { } //获取Most Active Value public static List getMostActiveValue(String exchange){ - String url = "https://marketapi.intoday.in/widget/toploser/view?exchange=" + exchange; + String url = "https://marketapi.intoday.in/widget/mostactivetopperbyvalue/view?exchange=" + exchange; //返回字符串对象格式:{"status_code":1,"success":true,"data":[{}],"message":"Successful","fromredis":true} String str = get(url); JSONObject object = JSON.parseObject(str);