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