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)); + } +}