From 9533bf3b42f2053de299959f0d8ac201c478657c Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Sat, 11 May 2024 17:08:39 +0800
Subject: [PATCH] 香港新环境

---
 src/main/java/cc/mrbird/febs/dapp/soccer/entity/Fixtures.java                 |   17 ++
 src/main/java/cc/mrbird/febs/dapp/soccer/entity/JsonResponse.java             |    4 
 src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerController.java     |    2 
 src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerLeagues.java            |    6 
 src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/CountryServiceImpl.java |  189 ++++++++++++++++----------
 src/main/java/cc/mrbird/febs/dapp/soccer/entity/LeaguesInfo.java              |   19 ++
 src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerTimezoneMapper.java     |    7 +
 src/main/java/cc/mrbird/febs/dapp/soccer/util/SoccerResponseUtil.java         |   17 ++
 src/main/java/cc/mrbird/febs/dapp/soccer/entity/league.java                   |   20 ++
 src/main/java/cc/mrbird/febs/dapp/soccer/entity/Season.java                   |   19 ++
 src/main/java/cc/mrbird/febs/dapp/soccer/entity/Country.java                  |   17 ++
 src/main/java/cc/mrbird/febs/dapp/soccer/entity/LeaguesResponse.java          |   37 +++++
 src/main/java/cc/mrbird/febs/dapp/soccer/entity/Coverage.java                 |   28 ++++
 src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerTimezone.java           |   12 +
 14 files changed, 316 insertions(+), 78 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerController.java b/src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerController.java
index 3dae431..f91f813 100644
--- a/src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerController.java
@@ -34,8 +34,6 @@
     @ApiOperation(value = "获取联赛", notes = "获取联赛")
     @PostMapping(value = "/leagues")
     public FebsResponse leagues(LeaguesApiDto leaguesApiDto) {
-
         return countryService.leagues(leaguesApiDto);
-
     }
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/entity/Country.java b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/Country.java
new file mode 100644
index 0000000..cf0c2f5
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/Country.java
@@ -0,0 +1,17 @@
+package cc.mrbird.febs.dapp.soccer.entity;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+public class Country {
+
+    @JsonProperty("name")
+    private String name;
+
+    @JsonProperty("code")
+    private String code;
+
+    @JsonProperty("flag")
+    private String flag;
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/entity/Coverage.java b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/Coverage.java
new file mode 100644
index 0000000..b4d2fd8
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/Coverage.java
@@ -0,0 +1,28 @@
+package cc.mrbird.febs.dapp.soccer.entity;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+public class Coverage {
+    @JsonProperty("fixtures")
+    private Fixtures fixtures;
+
+    @JsonProperty("standings")
+    private boolean standings;
+    @JsonProperty("players")
+    private boolean players;
+    @JsonProperty("top_scorers")
+    private boolean top_scorers;
+    @JsonProperty("top_assists")
+    private boolean top_assists;
+
+    @JsonProperty("top_cards")
+    private boolean top_cards;
+    @JsonProperty("injuries")
+    private boolean injuries;
+    @JsonProperty("predictions")
+    private boolean predictions;
+    @JsonProperty("odds")
+    private boolean odds;
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/entity/Fixtures.java b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/Fixtures.java
new file mode 100644
index 0000000..9a1b855
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/Fixtures.java
@@ -0,0 +1,17 @@
+package cc.mrbird.febs.dapp.soccer.entity;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+public class Fixtures {
+
+    @JsonProperty("events")
+    private boolean events;
+    @JsonProperty("lineups")
+    private boolean lineups;
+    @JsonProperty("statistics_fixtures")
+    private boolean statistics_fixtures;
+    @JsonProperty("statistics_players")
+    private boolean statistics_players;
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/entity/JsonResponse.java b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/JsonResponse.java
index 61fdcd2..4a46c4b 100644
--- a/src/main/java/cc/mrbird/febs/dapp/soccer/entity/JsonResponse.java
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/JsonResponse.java
@@ -10,7 +10,7 @@
     private String get;
 
     @JsonProperty("parameters")
-    private List<Object> parameters;
+    private Object parameters;
 
     @JsonProperty("errors")
     private List<Object> errors;
@@ -22,7 +22,7 @@
     private Paging paging;
 
     @JsonProperty("response")
-    private List<String> response;
+    private List<Object> response;
 
 
     public static class Paging {
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/entity/LeaguesInfo.java b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/LeaguesInfo.java
new file mode 100644
index 0000000..e0d1b5b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/LeaguesInfo.java
@@ -0,0 +1,19 @@
+package cc.mrbird.febs.dapp.soccer.entity;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class LeaguesInfo {
+
+    @JsonProperty("league")
+    private league league;
+
+    @JsonProperty("country")
+    private Country country;
+
+    @JsonProperty("seasons")
+    private List<Season> seasons;
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/entity/LeaguesResponse.java b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/LeaguesResponse.java
new file mode 100644
index 0000000..5bbe20e
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/LeaguesResponse.java
@@ -0,0 +1,37 @@
+package cc.mrbird.febs.dapp.soccer.entity;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+@Data
+public class LeaguesResponse {
+
+    @JsonProperty("get")
+    private String get;
+
+    @JsonProperty("parameters")
+    private Object parameters;
+
+    @JsonProperty("errors")
+    private List<Object> errors;
+
+    @JsonProperty("results")
+    private int results;
+
+    @JsonProperty("paging")
+    private JsonResponse.Paging paging;
+
+    @JsonProperty("response")
+    private List<LeaguesInfo> response;
+
+
+    public static class Paging {
+        @JsonProperty("current")
+        private int current;
+
+        @JsonProperty("total")
+        private int total;
+
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/entity/Season.java b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/Season.java
new file mode 100644
index 0000000..b7e3a6f
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/Season.java
@@ -0,0 +1,19 @@
+package cc.mrbird.febs.dapp.soccer.entity;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+public class Season {
+    @JsonProperty("year")
+    private Integer year;
+    @JsonProperty("start")
+    private String start;
+    @JsonProperty("end")
+    private String end;
+    @JsonProperty("current")
+    private boolean current;
+    @JsonProperty("coverage")
+    private Coverage coverage;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerLeagues.java b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerLeagues.java
index ba67aea..8927020 100644
--- a/src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerLeagues.java
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerLeagues.java
@@ -16,4 +16,10 @@
 
     private String leaguesLogo;
 
+    private String countryName;
+
+    private String countryCode;
+
+    private String countryFlag;
+
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerTimezone.java b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerTimezone.java
new file mode 100644
index 0000000..9d4d776
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerTimezone.java
@@ -0,0 +1,12 @@
+package cc.mrbird.febs.dapp.soccer.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("soccer_timezone")
+public class SoccerTimezone extends BaseEntity {
+
+    private String timezoneName;
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/entity/league.java b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/league.java
new file mode 100644
index 0000000..1b64740
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/league.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.dapp.soccer.entity;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+public class league {
+
+    @JsonProperty("id")
+    private Integer id;
+
+    @JsonProperty("name")
+    private String name;
+
+    @JsonProperty("type")
+    private String type;
+
+    @JsonProperty("logo")
+    private String logo;
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerTimezoneMapper.java b/src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerTimezoneMapper.java
new file mode 100644
index 0000000..fcf60ea
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerTimezoneMapper.java
@@ -0,0 +1,7 @@
+package cc.mrbird.febs.dapp.soccer.mapper;
+
+import cc.mrbird.febs.dapp.soccer.entity.SoccerTimezone;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface SoccerTimezoneMapper extends BaseMapper<SoccerTimezone> {
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/CountryServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/CountryServiceImpl.java
index 8b87cd0..26bf217 100644
--- a/src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/CountryServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/CountryServiceImpl.java
@@ -1,19 +1,16 @@
 package cc.mrbird.febs.dapp.soccer.service.Impl;
 
-import cc.mrbird.febs.common.contants.SoccerContants;
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.dapp.soccer.dto.LeaguesApiDto;
-import cc.mrbird.febs.dapp.soccer.entity.JsonResponse;
-import cc.mrbird.febs.dapp.soccer.entity.SoccerCountries;
-import cc.mrbird.febs.dapp.soccer.entity.SoccerLeagues;
+import cc.mrbird.febs.dapp.soccer.entity.*;
 import cc.mrbird.febs.dapp.soccer.mapper.SoccerCountriesMapper;
 import cc.mrbird.febs.dapp.soccer.mapper.SoccerLeaguesMapper;
+import cc.mrbird.febs.dapp.soccer.mapper.SoccerTimezoneMapper;
 import cc.mrbird.febs.dapp.soccer.service.CountryService;
 import cc.mrbird.febs.dapp.soccer.util.SoccerResponseUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -35,47 +32,51 @@
 
     private final SoccerCountriesMapper soccerCountriesMapper;
     private final SoccerLeaguesMapper soccerLeaguesMapper;
+    private final SoccerTimezoneMapper soccerTimezoneMapper;
 
     @Override
     public FebsResponse countries() {
-        HttpResponse<String> response = null;
+        HttpResponse<String> httpResponse = null;
         try {
-            response = Unirest.get("http://v3.football.api-sports.io/countries")
+            httpResponse = Unirest.get("http://v3.football.api-sports.io/countries")
                     .header("x-rapidapi-key", "87f8d87d629d1704ba49622cb978eb81")
                     .header("x-rapidapi-host", "v3.football.api-sports.io").asString();
         } catch (UnirestException e) {
             e.printStackTrace();
         }
 
-        JSONArray jsonArray = SoccerResponseUtil.getResponseToJSONArray(response);
-        if(CollUtil.isNotEmpty(jsonArray)){
-            for(Object list : jsonArray){
-                JSONObject jsonObject = JSONUtil.parseObj(list);
-                String code = SoccerResponseUtil.objectToStr(jsonObject.get("code"));
-                List<SoccerCountries> soccerCountryList = soccerCountriesMapper.selectList(new QueryWrapper<SoccerCountries>().eq("code", code));
-                if(CollUtil.isNotEmpty(soccerCountryList)){
-                    continue;
+        JsonResponse jsonResponse = SoccerResponseUtil.getJsonResponse(httpResponse);
+        if(ObjectUtil.isNotEmpty(jsonResponse)){
+            List<Object> responses = jsonResponse.getResponse();
+            if(CollUtil.isNotEmpty(responses)){
+                for(Object list : responses){
+                    JSONObject jsonObject = JSONUtil.parseObj(list);
+                    String code = SoccerResponseUtil.objectToStr(jsonObject.get("code"));
+                    List<SoccerCountries> soccerCountryList = soccerCountriesMapper.selectList(new QueryWrapper<SoccerCountries>().eq("code", code));
+                    if(CollUtil.isNotEmpty(soccerCountryList)){
+                        continue;
+                    }
+                    SoccerCountries soccerCountries = new SoccerCountries();
+                    soccerCountries.setName(SoccerResponseUtil.objectToStr(jsonObject.get("code")));
+                    soccerCountries.setCode(SoccerResponseUtil.objectToStr(jsonObject.get("name")));
+                    soccerCountries.setFlag(SoccerResponseUtil.objectToStr(jsonObject.get("flag")));
+                    soccerCountriesMapper.insert(soccerCountries);
                 }
-                SoccerCountries soccerCountries = new SoccerCountries();
-                soccerCountries.setName(SoccerResponseUtil.objectToStr(jsonObject.get("code")));
-                soccerCountries.setCode(SoccerResponseUtil.objectToStr(jsonObject.get("name")));
-                soccerCountries.setFlag(SoccerResponseUtil.objectToStr(jsonObject.get("flag")));
-                soccerCountriesMapper.insert(soccerCountries);
             }
         }
-        return new FebsResponse().success();
+        return new FebsResponse().success().data(jsonResponse);
     }
 
     @Override
     public FebsResponse leagues(LeaguesApiDto leaguesApiDto) {
-        HttpResponse<String> response = null;
+        HttpResponse<String> httpResponse = null;
         int season = ObjectUtil.isEmpty(leaguesApiDto.getSeason()) ? DateUtil.date().year() : leaguesApiDto.getSeason();
         String current = ObjectUtil.isEmpty(leaguesApiDto.getCurrent()) ? "true" : leaguesApiDto.getCurrent();
         try {
             /**
              *  https://v3.football.api-sports.io/leagues?season=2023¤t=true
              */
-            response = Unirest.get(" https://v3.football.api-sports.io/leagues")
+            httpResponse = Unirest.get(" https://v3.football.api-sports.io/leagues")
                     .header("x-rapidapi-key", "87f8d87d629d1704ba49622cb978eb81")
                     .header("x-rapidapi-host", "v3.football.api-sports.io")
                     .queryString("season",season)
@@ -85,81 +86,121 @@
             e.printStackTrace();
         }
 
-        JSONArray jsonArray = SoccerResponseUtil.getResponseToJSONArray(response);
-        if(CollUtil.isNotEmpty(jsonArray)){
-            for(Object list : jsonArray){
-                JSONObject parseObj1 = JSONUtil.parseObj(list);
-                Object leagueObj = parseObj1.get("league");
-                JSONObject parseObjLeague = JSONUtil.parseObj(leagueObj);
-                JSONObject leagueStr = JSONUtil.parseObj(parseObjLeague);
+        LeaguesResponse leaguesResponse = SoccerResponseUtil.getLeaguesResponse(httpResponse);
+        if(ObjectUtil.isNotEmpty(leaguesResponse)){
+            List<LeaguesInfo> responses = leaguesResponse.getResponse();
+            if(CollUtil.isNotEmpty(responses)){
+                for(LeaguesInfo leaguesInfo : responses){
 
-                Integer leaguesId = SoccerResponseUtil.objectToInteger(leagueStr.get("id"));
-                List<SoccerLeagues> soccerLeaguesList = soccerLeaguesMapper.selectList(new QueryWrapper<SoccerLeagues>().eq("leagues_id", leaguesId));
-                if(CollUtil.isNotEmpty(soccerLeaguesList)){
-                    continue;
+                    SoccerLeagues soccerLeagues = new SoccerLeagues();
+                    Integer leaguesId = SoccerResponseUtil.objectToInteger(leaguesInfo.getLeague().getId());
+                    List<SoccerLeagues> soccerLeaguesList = soccerLeaguesMapper.selectList(new QueryWrapper<SoccerLeagues>().eq("leagues_id", leaguesId));
+                    if(CollUtil.isNotEmpty(soccerLeaguesList)){
+                        continue;
+                    }
+                    soccerLeagues.setLeaguesId(SoccerResponseUtil.objectToInteger(leaguesInfo.getLeague().getId()));
+                    soccerLeagues.setLeaguesName(SoccerResponseUtil.objectToStr(leaguesInfo.getLeague().getName()));
+                    soccerLeagues.setLeaguesType(SoccerResponseUtil.objectToStr(leaguesInfo.getLeague().getType()));
+                    soccerLeagues.setLeaguesLogo(SoccerResponseUtil.objectToStr(leaguesInfo.getLeague().getLogo()));
+
+                    soccerLeagues.setCountryName(SoccerResponseUtil.objectToStr(leaguesInfo.getCountry().getName()));
+                    soccerLeagues.setCountryCode(SoccerResponseUtil.objectToStr(leaguesInfo.getCountry().getCode()));
+                    soccerLeagues.setCountryFlag(SoccerResponseUtil.objectToStr(leaguesInfo.getCountry().getFlag()));
+                    soccerLeaguesMapper.insert(soccerLeagues);
                 }
-                SoccerLeagues soccerLeagues = new SoccerLeagues();
-                soccerLeagues.setLeaguesId(SoccerResponseUtil.objectToInteger(leagueStr.get("id")));
-                soccerLeagues.setLeaguesName(SoccerResponseUtil.objectToStr(leagueStr.get("name")));
-                soccerLeagues.setLeaguesType(SoccerResponseUtil.objectToStr(leagueStr.get("type")));
-                soccerLeagues.setLeaguesLogo(SoccerResponseUtil.objectToStr(leagueStr.get("logo")));
-                soccerLeaguesMapper.insert(soccerLeagues);
             }
         }
-        return new FebsResponse().success();
+
+        return new FebsResponse().success().data(leaguesResponse);
     }
 
     @Override
     public FebsResponse timezone() {
-        HttpResponse<String> response = null;
+        HttpResponse<String> httpResponse = null;
         try {
-            response = Unirest.get("https://v3.football.api-sports.io/timezone")
+            httpResponse = Unirest.get("https://v3.football.api-sports.io/timezone")
                     .header("x-rapidapi-key", "87f8d87d629d1704ba49622cb978eb81")
                     .header("x-rapidapi-host", "v3.football.api-sports.io").asString();
         } catch (UnirestException e) {
             e.printStackTrace();
         }
 
-        JsonResponse jsonResponse = SoccerResponseUtil.getJsonResponse(response);
+        JsonResponse jsonResponse = SoccerResponseUtil.getJsonResponse(httpResponse);
+        if(ObjectUtil.isNotEmpty(jsonResponse)){
+            List<Object> responses = jsonResponse.getResponse();
+            if(CollUtil.isNotEmpty(jsonResponse.getResponse())){
+                for(Object timezoneName : responses){
+                    SoccerTimezone soccerTimezone = new SoccerTimezone();
+                    soccerTimezone.setTimezoneName(SoccerResponseUtil.objectToStr(timezoneName));
+                    soccerTimezoneMapper.insert(soccerTimezone);
+                }
+            }
+        }
 
-        log.info(jsonResponse.getResponse().get(1));
-
-//        JSONArray jsonArray = SoccerResponseUtil.getResponseToJSONArray(response);
-//        if(CollUtil.isNotEmpty(jsonArray)){
-//            for(Object list : jsonArray){
-//                JSONObject jsonObject = JSONUtil.parseObj(list);
-//                String code = SoccerResponseUtil.objectToStr(jsonObject.get("code"));
-//                List<SoccerCountries> soccerCountryList = soccerCountriesMapper.selectList(new QueryWrapper<SoccerCountries>().eq("code", code));
-//                if(CollUtil.isNotEmpty(soccerCountryList)){
-//                    continue;
-//                }
-//                SoccerCountries soccerCountries = new SoccerCountries();
-//                soccerCountries.setName(SoccerResponseUtil.objectToStr(jsonObject.get("code")));
-//                soccerCountries.setCode(SoccerResponseUtil.objectToStr(jsonObject.get("name")));
-//                soccerCountries.setFlag(SoccerResponseUtil.objectToStr(jsonObject.get("flag")));
-//                soccerCountriesMapper.insert(soccerCountries);
-//            }
-//        }
-        return new FebsResponse().success();
+        return new FebsResponse().success().data(jsonResponse);
     }
 
     public static void main(String[] args) {
-
-        StringBuffer stringBuffer = new StringBuffer("{\"get\":\"timezone\",\"parameters\":[],\"errors\":[],\"results\":427,\"paging\":{\"current\":1,\"total\":1},\"response\":[\"Africa\\/Abidjan\",\"Africa\\/Accra\",\"Africa\\/Addis_Ababa\",\"Africa\\/Algiers\",\"Africa\\/Asmara\",\"Africa\\/Bamako\",\"Africa\\/Bangui\",\"Africa\\/Banjul\",\"Africa\\/Bissau\",\"Africa\\/Blantyre\",\"Africa\\/Brazzaville\",\"Africa\\/Bujumbura\",\"Africa\\/Cairo\",\"Africa\\/Casablanca\",\"Africa\\/Ceuta\",\"Africa\\/Conakry\",\"Africa\\/Dakar\",\"Africa\\/Dar_es_Salaam\",\"Africa\\/Djibouti\",\"Africa\\/Douala\",\"Africa\\/El_Aaiun\",\"Africa\\/Freetown\",\"Africa\\/Gaborone\",\"Africa\\/Harare\",\"Africa\\/Johannesburg\",\"Africa\\/Juba\",\"Africa\\/Kampala\",\"Africa\\/Khartoum\",\"Africa\\/Kigali\",\"Africa\\/Kinshasa\",\"Africa\\/Lagos\",\"Africa\\/Libreville\",\"Africa\\/Lome\",\"Africa\\/Luanda\",\"Africa\\/Lubumbashi\",\"Africa\\/Lusaka\",\"Africa\\/Malabo\",\"Africa\\/Maputo\",\"Africa\\/Maseru\",\"Africa\\/Mbabane\",\"Africa\\/Mogadishu\",\"Africa\\/Monrovia\",\"Africa\\/Nairobi\",\"Africa\\/Ndjamena\",\"Africa\\/Niamey\",\"Africa\\/Nouakchott\",\"Africa\\/Ouagadougou\",\"Africa\\/Porto-Novo\",\"Africa\\/Sao_Tome\",\"Africa\\/Tripoli\",\"Africa\\/Tunis\",\"Africa\\/Windhoek\",\"America\\/Adak\",\"America\\/Anchorage\",\"America\\/Anguilla\",\"America\\/Antigua\",\"America\\/Araguaina\",\"America\\/Argentina\\/Buenos_Aires\",\"America\\/Argentina\\/Catamarca\",\"America\\/Argentina\\/Cordoba\",\"America\\/Argentina\\/Jujuy\",\"America\\/Argentina\\/La_Rioja\",\"America\\/Argentina\\/Mendoza\",\"America\\/Argentina\\/Rio_Gallegos\",\"America\\/Argentina\\/Salta\",\"America\\/Argentina\\/San_Juan\",\"America\\/Argentina\\/San_Luis\",\"America\\/Argentina\\/Tucuman\",\"America\\/Argentina\\/Ushuaia\",\"America\\/Aruba\",\"America\\/Asuncion\",\"America\\/Atikokan\",\"America\\/Bahia\",\"America\\/Bahia_Banderas\",\"America\\/Barbados\",\"America\\/Belem\",\"America\\/Belize\",\"America\\/Blanc-Sablon\",\"America\\/Boa_Vista\",\"America\\/Bogota\",\"America\\/Boise\",\"America\\/Cambridge_Bay\",\"America\\/Campo_Grande\",\"America\\/Cancun\",\"America\\/Caracas\",\"America\\/Cayenne\",\"America\\/Cayman\",\"America\\/Chicago\",\"America\\/Chihuahua\",\"America\\/Costa_Rica\",\"America\\/Creston\",\"America\\/Cuiaba\",\"America\\/Curacao\",\"America\\/Danmarkshavn\",\"America\\/Dawson\",\"America\\/Dawson_Creek\",\"America\\/Denver\",\"America\\/Detroit\",\"America\\/Dominica\",\"America\\/Edmonton\",\"America\\/Eirunepe\",\"America\\/El_Salvador\",\"America\\/Fort_Nelson\",\"America\\/Fortaleza\",\"America\\/Glace_Bay\",\"America\\/Godthab\",\"America\\/Goose_Bay\",\"America\\/Grand_Turk\",\"America\\/Grenada\",\"America\\/Guadeloupe\",\"America\\/Guatemala\",\"America\\/Guayaquil\",\"America\\/Guyana\",\"America\\/Halifax\",\"America\\/Havana\",\"America\\/Hermosillo\",\"America\\/Indiana\\/Indianapolis\",\"America\\/Indiana\\/Knox\",\"America\\/Indiana\\/Marengo\",\"America\\/Indiana\\/Petersburg\",\"America\\/Indiana\\/Tell_City\",\"America\\/Indiana\\/Vevay\",\"America\\/Indiana\\/Vincennes\",\"America\\/Indiana\\/Winamac\",\"America\\/Inuvik\",\"America\\/Iqaluit\",\"America\\/Jamaica\",\"America\\/Juneau\",\"America\\/Kentucky\\/Louisville\",\"America\\/Kentucky\\/Monticello\",\"America\\/Kralendijk\",\"America\\/La_Paz\",\"America\\/Lima\",\"America\\/Los_Angeles\",\"America\\/Lower_Princes\",\"America\\/Maceio\",\"America\\/Managua\",\"America\\/Manaus\",\"America\\/Marigot\",\"America\\/Martinique\",\"America\\/Matamoros\",\"America\\/Mazatlan\",\"America\\/Menominee\",\"America\\/Merida\",\"America\\/Metlakatla\",\"America\\/Mexico_City\",\"America\\/Miquelon\",\"America\\/Moncton\",\"America\\/Monterrey\",\"America\\/Montevideo\",\"America\\/Montserrat\",\"America\\/Nassau\",\"America\\/New_York\",\"America\\/Nipigon\",\"America\\/Nome\",\"America\\/Noronha\",\"America\\/North_Dakota\\/Beulah\",\"America\\/North_Dakota\\/Center\",\"America\\/North_Dakota\\/New_Salem\",\"America\\/Ojinaga\",\"America\\/Panama\",\"America\\/Pangnirtung\",\"America\\/Paramaribo\",\"America\\/Phoenix\",\"America\\/Port-au-Prince\",\"America\\/Port_of_Spain\",\"America\\/Porto_Velho\",\"America\\/Puerto_Rico\",\"America\\/Punta_Arenas\",\"America\\/Rainy_River\",\"America\\/Rankin_Inlet\",\"America\\/Recife\",\"America\\/Regina\",\"America\\/Resolute\",\"America\\/Rio_Branco\",\"America\\/Santarem\",\"America\\/Santiago\",\"America\\/Santo_Domingo\",\"America\\/Sao_Paulo\",\"America\\/Scoresbysund\",\"America\\/Sitka\",\"America\\/St_Barthelemy\",\"America\\/St_Johns\",\"America\\/St_Kitts\",\"America\\/St_Lucia\",\"America\\/St_Thomas\",\"America\\/St_Vincent\",\"America\\/Swift_Current\",\"America\\/Tegucigalpa\",\"America\\/Thule\",\"America\\/Thunder_Bay\",\"America\\/Tijuana\",\"America\\/Toronto\",\"America\\/Tortola\",\"America\\/Vancouver\",\"America\\/Whitehorse\",\"America\\/Winnipeg\",\"America\\/Yakutat\",\"America\\/Yellowknife\",\"Antarctica\\/Casey\",\"Antarctica\\/Davis\",\"Antarctica\\/DumontDUrville\",\"Antarctica\\/Macquarie\",\"Antarctica\\/Mawson\",\"Antarctica\\/McMur\",\"Antarctica\\/PalmerAnta\",\"Antarctica\\/Rothera\",\"Antarctica\\/Syowa\",\"Antarctica\\/Troll\",\"Antarctica\\/Vostok\",\"Arctic\\/Longyearbyen\",\"Asia\\/Aden\",\"Asia\\/Almaty\",\"Asia\\/Amman\",\"Asia\\/Anadyr\",\"Asia\\/Aqtau\",\"Asia\\/Aqtobe\",\"Asia\\/Ashgabat\",\"Asia\\/Atyrau\",\"Asia\\/Baghdad\",\"Asia\\/Bahrain\",\"Asia\\/Baku\",\"Asia\\/Bangkok\",\"Asia\\/Barnaul\",\"Asia\\/Beirut\",\"Asia\\/Bishkek\",\"Asia\\/Brunei\",\"Asia\\/Calcutta\",\"Asia\\/Chita\",\"Asia\\/Choibalsan\",\"Asia\\/Colombo\",\"Asia\\/Damascus\",\"Asia\\/Dhaka\",\"Asia\\/Dili\",\"Asia\\/Dubai\",\"Asia\\/Dushanbe\",\"Asia\\/Famagusta\",\"Asia\\/Gaza\",\"Asia\\/Hebron\",\"Asia\\/Ho_Chi_Minh\",\"Asia\\/Hong_Kong\",\"Asia\\/Hovd\",\"Asia\\/Irkutsk\",\"Asia\\/Jakarta\",\"Asia\\/Jayapura\",\"Asia\\/Jerusalem\",\"Asia\\/Kabul\",\"Asia\\/Kamchatka\",\"Asia\\/Karachi\",\"Asia\\/Kathmandu\",\"Asia\\/Khandyga\",\"Asia\\/Kolkata\",\"Asia\\/Krasnoyarsk\",\"Asia\\/Kuala_Lumpur\",\"Asia\\/Kuching\",\"Asia\\/Kuwait\",\"Asia\\/Macau\",\"Asia\\/Magadan\",\"Asia\\/Makassar\",\"Asia\\/Manila\",\"Asia\\/Muscat\",\"Asia\\/Nicosia\",\"Asia\\/Novokuznetsk\",\"Asia\\/Novosibirsk\",\"Asia\\/Omsk\",\"Asia\\/Oral\",\"Asia\\/Phnom_Penh\",\"Asia\\/Pontianak\",\"Asia\\/Pyongyang\",\"Asia\\/Qatar\",\"Asia\\/Qostanay\",\"Asia\\/Qyzylorda\",\"Asia\\/Riyadh\",\"Asia\\/Saigon\",\"Asia\\/Sakhalin\",\"Asia\\/Samarkand\",\"Asia\\/Seoul\",\"Asia\\/Shanghai\",\"Asia\\/Singapore\",\"Asia\\/Srednekolymsk\",\"Asia\\/Taipei\",\"Asia\\/Tashkent\",\"Asia\\/Tbilisi\",\"Asia\\/Tehran\",\"Asia\\/Thimphu\",\"Asia\\/Tokyo\",\"Asia\\/Tomsk\",\"Asia\\/Ulaanbaatar\",\"Asia\\/Urumqi\",\"Asia\\/Ust-Nera\",\"Asia\\/Vientiane\",\"Asia\\/Vladivostok\",\"Asia\\/Yakutsk\",\"Asia\\/Yangon\",\"Asia\\/Yekaterinburg\",\"Asia\\/Yerevan\",\"Atlantic\\/Azores\",\"Atlantic\\/Bermuda\",\"Atlantic\\/Canary\",\"Atlantic\\/Cape_Verde\",\"Atlantic\\/Faroe\",\"Atlantic\\/Madeira\",\"Atlantic\\/Reykjavik\",\"Atlantic\\/South_Georgia\",\"Atlantic\\/St_Helena\",\"Atlantic\\/Stanley\",\"Australia\\/Adelaide\",\"Australia\\/Brisbane\",\"Australia\\/Broken_Hill\",\"Australia\\/Currie\",\"Australia\\/Darwin\",\"Australia\\/Eucla\",\"Australia\\/Hobart\",\"Australia\\/Lindeman\",\"Australia\\/Lord_Howe\",\"Australia\\/Melbourne\",\"Australia\\/Perth\",\"Australia\\/Sydney\",\"Europe\\/Amsterdam\",\"Europe\\/Andorra\",\"Europe\\/Astrakhan\",\"Europe\\/Athens\",\"Europe\\/Belgrade\",\"Europe\\/Berlin\",\"Europe\\/Bratislava\",\"Europe\\/Brussels\",\"Europe\\/Bucharest\",\"Europe\\/Budapest\",\"Europe\\/Busingen\",\"Europe\\/Chisinau\",\"Europe\\/Copenhagen\",\"Europe\\/Dublin\",\"Europe\\/Gibraltar\",\"Europe\\/Guernsey\",\"Europe\\/Helsinki\",\"Europe\\/Isle_of_Man\",\"Europe\\/Istanbul\",\"Europe\\/Jersey\",\"Europe\\/Kaliningrad\",\"Europe\\/Kiev\",\"Europe\\/Kirov\",\"Europe\\/Lisbon\",\"Europe\\/Ljubljana\",\"Europe\\/London\",\"Europe\\/Luxembourg\",\"Europe\\/Madrid\",\"Europe\\/Malta\",\"Europe\\/Mariehamn\",\"Europe\\/Minsk\",\"Europe\\/Monaco\",\"Europe\\/Moscow\",\"Europe\\/Oslo\",\"Europe\\/Paris\",\"Europe\\/Podgorica\",\"Europe\\/Prague\",\"Europe\\/Riga\",\"Europe\\/Rome\",\"Europe\\/Samara\",\"Europe\\/San_Marino\",\"Europe\\/Sarajevo\",\"Europe\\/Saratov\",\"Europe\\/Simferopol\",\"Europe\\/Skopje\",\"Europe\\/Sofia\",\"Europe\\/Stockholm\",\"Europe\\/Tallinn\",\"Europe\\/Tirane\",\"Europe\\/Ulyanovsk\",\"Europe\\/Uzhgorod\",\"Europe\\/Vaduz\",\"Europe\\/Vatican\",\"Europe\\/Vienna\",\"Europe\\/Vilnius\",\"Europe\\/Volgograd\",\"Europe\\/Warsaw\",\"Europe\\/Zagreb\",\"Europe\\/Zaporozhye\",\"Europe\\/Zurich\",\"Indian\\/Antananarivo\",\"Indian\\/Chagos\",\"Indian\\/Christmas\",\"Indian\\/Cocos\",\"Indian\\/Comoro\",\"Indian\\/Kerguelen\",\"Indian\\/Mahe\",\"Indian\\/Maldives\",\"Indian\\/Mauritius\",\"Indian\\/Mayotte\",\"Indian\\/Reunion\",\"Pacific\\/Apia\",\"Pacific\\/Auckland\",\"Pacific\\/Bougainville\",\"Pacific\\/Chatham\",\"Pacific\\/Chuuk\",\"Pacific\\/Easter\",\"Pacific\\/Efate\",\"Pacific\\/Enderbury\",\"Pacific\\/Fakaofo\",\"Pacific\\/Fiji\",\"Pacific\\/Funafuti\",\"Pacific\\/Galapagos\",\"Pacific\\/Gambier\",\"Pacific\\/Guadalcanal\",\"Pacific\\/Guam\",\"Pacific\\/Honolulu\",\"Pacific\\/Kiritimati\",\"Pacific\\/Kosrae\",\"Pacific\\/Kwajalein\",\"Pacific\\/Majuro\",\"Pacific\\/Marquesas\",\"Pacific\\/Midway\",\"Pacific\\/Nauru\",\"Pacific\\/Niue\",\"Pacific\\/Norfolk\",\"Pacific\\/Noumea\",\"Pacific\\/Pago_Pago\",\"Pacific\\/Palau\",\"Pacific\\/Pitcairn\",\"Pacific\\/Pohnpei\",\"Pacific\\/Port_Moresby\",\"Pacific\\/Rarotonga\",\"Pacific\\/Saipan\",\"Pacific\\/Tahiti\",\"Pacific\\/Tarawa\",\"Pacific\\/Tongatapu\",\"Pacific\\/Wake\",\"Pacific\\/Wallis\"]}");
-        JSONObject parseObj = JSONUtil.parseObj(stringBuffer);
-        Object responseStr = parseObj.get(SoccerContants.RESPONSE);
-        JSONArray jsonArray = JSONUtil.parseArray(responseStr);
-        System.out.println(jsonArray);
-
+        String str = "{\n" +
+                "    \"get\": \"leagues\",\n" +
+                "    \"parameters\": {\n" +
+                "        \"season\": \"2008\",\n" +
+                "        \"country\": \"World\"\n" +
+                "    },\n" +
+                "    \"errors\": [],\n" +
+                "    \"results\": 1,\n" +
+                "    \"paging\": {\n" +
+                "        \"current\": 1,\n" +
+                "        \"total\": 1\n" +
+                "    },\n" +
+                "    \"response\": [\n" +
+                "        {\n" +
+                "            \"league\": {\n" +
+                "                \"id\": 4,\n" +
+                "                \"name\": \"Euro Championship\",\n" +
+                "                \"type\": \"Cup\",\n" +
+                "                \"logo\": \"https://media.api-sports.io/football/leagues/4.png\"\n" +
+                "            },\n" +
+                "            \"country\": {\n" +
+                "                \"name\": \"World\",\n" +
+                "                \"code\": null,\n" +
+                "                \"flag\": null\n" +
+                "            },\n" +
+                "            \"seasons\": [\n" +
+                "                {\n" +
+                "                    \"year\": 2008,\n" +
+                "                    \"start\": \"2008-06-07\",\n" +
+                "                    \"end\": \"2008-06-29\",\n" +
+                "                    \"current\": false,\n" +
+                "                    \"coverage\": {\n" +
+                "                        \"fixtures\": {\n" +
+                "                            \"events\": true,\n" +
+                "                            \"lineups\": true,\n" +
+                "                            \"statistics_fixtures\": false,\n" +
+                "                            \"statistics_players\": false\n" +
+                "                        },\n" +
+                "                        \"standings\": false,\n" +
+                "                        \"players\": true,\n" +
+                "                        \"top_scorers\": true,\n" +
+                "                        \"top_assists\": true,\n" +
+                "                        \"top_cards\": true,\n" +
+                "                        \"injuries\": false,\n" +
+                "                        \"predictions\": true,\n" +
+                "                        \"odds\": false\n" +
+                "                    }\n" +
+                "                }\n" +
+                "            ]\n" +
+                "        }\n" +
+                "    ]\n" +
+                "}";
+        LeaguesResponse leaguesResponse = new LeaguesResponse();
         ObjectMapper mapper = new ObjectMapper();
         try {
-            JsonResponse jsonResponse = mapper.readValue(stringBuffer.toString(), JsonResponse.class);
-
-            System.out.println(jsonResponse.getResponse());
-            // 现在你可以使用jsonResponse对象了
+            leaguesResponse = mapper.readValue(str, LeaguesResponse.class);
         } catch (Exception e) {
             e.printStackTrace();
         }
 
+        System.out.println(leaguesResponse);
     }
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/util/SoccerResponseUtil.java b/src/main/java/cc/mrbird/febs/dapp/soccer/util/SoccerResponseUtil.java
index 1ad9ef3..5b6f498 100644
--- a/src/main/java/cc/mrbird/febs/dapp/soccer/util/SoccerResponseUtil.java
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/util/SoccerResponseUtil.java
@@ -2,6 +2,7 @@
 
 import cc.mrbird.febs.common.contants.SoccerContants;
 import cc.mrbird.febs.dapp.soccer.entity.JsonResponse;
+import cc.mrbird.febs.dapp.soccer.entity.LeaguesResponse;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
@@ -33,6 +34,22 @@
         return jsonResponse;
     }
 
+    /**
+     * 将接口获取到的返回值转换成LeaguesResponse
+     * @param response
+     * @return
+     */
+    public static LeaguesResponse getLeaguesResponse(HttpResponse<String> response){
+        LeaguesResponse leaguesResponse = new LeaguesResponse();
+        ObjectMapper mapper = new ObjectMapper();
+        try {
+            leaguesResponse = mapper.readValue(response.getBody(), LeaguesResponse.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return leaguesResponse;
+    }
+
     public static String objectToStr(Object object){
         return ObjectUtil.isEmpty(object) ? "-" : (String) object;
     }

--
Gitblit v1.9.1