From 65dcda4e2d732f40d8507d200f4539a7a393c1fc Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 13 May 2024 12:20:26 +0800
Subject: [PATCH] 球队信息

---
 src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/CountryServiceImpl.java |  268 ++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 233 insertions(+), 35 deletions(-)

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 e99f75b..009b9de 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
@@ -2,25 +2,27 @@
 
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.dapp.soccer.dto.LeaguesApiDto;
-import cc.mrbird.febs.dapp.soccer.entity.SoccerCountries;
-import cc.mrbird.febs.dapp.soccer.entity.SoccerLeagues;
-import cc.mrbird.febs.dapp.soccer.mapper.SoccerCountriesMapper;
-import cc.mrbird.febs.dapp.soccer.mapper.SoccerLeaguesMapper;
+import cc.mrbird.febs.dapp.soccer.dto.TeamsApiDto;
+import cc.mrbird.febs.dapp.soccer.entity.*;
+import cc.mrbird.febs.dapp.soccer.mapper.*;
 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;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.mashape.unirest.http.HttpResponse;
 import com.mashape.unirest.http.Unirest;
 import com.mashape.unirest.http.exceptions.UnirestException;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 @Slf4j
 @Service
@@ -29,42 +31,54 @@
 
     private final SoccerCountriesMapper soccerCountriesMapper;
     private final SoccerLeaguesMapper soccerLeaguesMapper;
+    private final SoccerTimezoneMapper soccerTimezoneMapper;
+    private final SoccerLeaguesSeasonsMapper soccerLeaguesSeasonsMapper;
+    private final SoccerTeamMapper soccerTeamMapper;
+    private final SoccerVenueMapper soccerVenueMapper;
 
     @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);
-                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);
+        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);
+                }
             }
         }
-        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)
@@ -74,24 +88,208 @@
             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){
 
-                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);
+                    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);
+                }
             }
         }
-        System.out.println(jsonArray);
-        log.info(String.valueOf(response.getRawBody()));
-        return new FebsResponse().success();
+
+        return new FebsResponse().success().data(leaguesResponse);
+    }
+
+    @Override
+    public FebsResponse timezone() {
+        HttpResponse<String> httpResponse = null;
+        try {
+            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(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);
+                }
+            }
+        }
+
+        return new FebsResponse().success().data(jsonResponse);
+    }
+
+    @Override
+    public FebsResponse seasons() {
+        HttpResponse<String> httpResponse = null;
+        /**
+         * https://v3.football.api-sports.io/leagues/seasons
+         */
+        try {
+            httpResponse = Unirest.get("https://v3.football.api-sports.io/leagues/seasons")
+                    .header("x-rapidapi-key", "87f8d87d629d1704ba49622cb978eb81")
+                    .header("x-rapidapi-host", "v3.football.api-sports.io").asString();
+        } catch (UnirestException e) {
+            e.printStackTrace();
+        }
+
+        JsonResponse jsonResponse = SoccerResponseUtil.getJsonResponse(httpResponse);
+        if(ObjectUtil.isNotEmpty(jsonResponse)){
+            List<Object> responses = jsonResponse.getResponse();
+            if(CollUtil.isNotEmpty(jsonResponse.getResponse())){
+                for(Object seasonsName : responses){
+                    SoccerLeaguesSeasons soccerLeaguesSeasons = new SoccerLeaguesSeasons();
+                    soccerLeaguesSeasons.setSeasonsName(SoccerResponseUtil.objectToStr(seasonsName));
+                    soccerLeaguesSeasonsMapper.insert(soccerLeaguesSeasons);
+                }
+            }
+        }
+        return new FebsResponse().success().data(jsonResponse);
+    }
+
+    @Override
+    public FebsResponse teams(TeamsApiDto teamsApiDto) {
+        HttpResponse<String> httpResponse = null;
+        String country = teamsApiDto.getCountry();
+
+        try {
+            /**
+             *  https://v3.football.api-sports.io/teams
+             */
+            httpResponse = Unirest.get(" https://v3.football.api-sports.io/teams")
+                    .header("x-rapidapi-key", "87f8d87d629d1704ba49622cb978eb81")
+                    .header("x-rapidapi-host", "v3.football.api-sports.io")
+                    .queryString("country",country)
+                    .asString();
+        } catch (UnirestException e) {
+            e.printStackTrace();
+        }
+
+        TeamsInfoResponse teamsInfoResponse = SoccerResponseUtil.getTeamsInfoResponse(httpResponse);
+        if(ObjectUtil.isNotEmpty(teamsInfoResponse)){
+            List<TeamsInfo> responses = teamsInfoResponse.getResponse();
+            if(CollUtil.isNotEmpty(responses)){
+                for(TeamsInfo teamsInfo : responses){
+
+                    Team team = teamsInfo.getTeam();
+                    Integer teamId = team.getId();
+                    List<SoccerTeam> soccerTeams = soccerTeamMapper.selectList(new QueryWrapper<SoccerTeam>().eq("team_id", teamId));
+                    if(CollUtil.isEmpty(soccerTeams)){
+                        SoccerTeam soccerTeam = new SoccerTeam();
+                        soccerTeam.setTeamId(team.getId());
+                        soccerTeam.setName(team.getName());
+                        soccerTeam.setCode(team.getCode());
+                        soccerTeam.setCountry(team.getCountry());
+                        soccerTeam.setFounded(team.getFounded());
+                        soccerTeam.setNational(team.getNational());
+                        soccerTeam.setLogo(team.getLogo());
+                        soccerTeamMapper.insert(soccerTeam);
+                    }
+
+                    Venue venue = teamsInfo.getVenue();
+                    Integer venueId = venue.getId();
+                    List<SoccerVenue> soccerVenues = soccerVenueMapper.selectList(new QueryWrapper<SoccerVenue>().eq("venue_id", venueId));
+                    if(CollUtil.isEmpty(soccerVenues)){
+                        SoccerVenue soccerVenue = new SoccerVenue();
+                        soccerVenue.setVenueId(venue.getId());
+                        soccerVenue.setName(venue.getName());
+                        soccerVenue.setAddress(venue.getAddress());
+                        soccerVenue.setCity(venue.getCity());
+                        soccerVenue.setCapacity(venue.getCapacity());
+                        soccerVenue.setSurface(venue.getSurface());
+                        soccerVenue.setImage(venue.getImage());
+                        soccerVenueMapper.insert(soccerVenue);
+                    }
+                }
+            }
+        }
+        return new FebsResponse().success().data(teamsInfoResponse);
+    }
+
+    public static void main(String[] args) {
+        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 {
+            leaguesResponse = mapper.readValue(str, LeaguesResponse.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        System.out.println(leaguesResponse);
     }
 }

--
Gitblit v1.9.1