KKSU
2024-05-13 f18f343009b97b7802635ff2d3a84cc4f89cdb41
球队信息
5 files modified
14 files added
397 ■■■■■ changed files
src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerController.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerOnlineController.java 25 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/dto/TeamsApiDto.java 39 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/LeaguesResponse.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerLeaguesSeasons.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerTeam.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerVenue.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/Team.java 29 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/TeamsInfo.java 15 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/TeamsInfoResponse.java 37 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/Venue.java 29 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerLeaguesSeasonsMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerTeamMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerVenueMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/service/CountryService.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/CountryServiceImpl.java 87 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/SoccerOnlineServiceImpl.java 15 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/service/SoccerOnlineService.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/util/SoccerResponseUtil.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerController.java
@@ -2,12 +2,16 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.dapp.soccer.dto.LeaguesApiDto;
import cc.mrbird.febs.dapp.soccer.dto.TeamsApiDto;
import cc.mrbird.febs.dapp.soccer.service.CountryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RequiredArgsConstructor
@@ -36,4 +40,18 @@
    public FebsResponse leagues(LeaguesApiDto leaguesApiDto) {
        return countryService.leagues(leaguesApiDto);
    }
    @ApiOperation(value = "获取联赛赛季", notes = "获取联赛赛季")
    @PostMapping(value = "/leagues/seasons")
    public FebsResponse seasons() {
        return countryService.seasons();
    }
    @ApiOperation(value = "获取球队", notes = "获取球队")
    @PostMapping(value = "/teams")
    public FebsResponse teams(TeamsApiDto teamsApiDto) {
        return countryService.teams(teamsApiDto);
    }
}
src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerOnlineController.java
New file
@@ -0,0 +1,25 @@
package cc.mrbird.febs.dapp.soccer.controller;
import cc.mrbird.febs.dapp.soccer.service.SoccerOnlineService;
import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RequiredArgsConstructor
@CrossOrigin("*")
@RestController
@Api(value = "FOOTBALL-ONLINE", tags = "FOOTBALL-ONLINE")
@RequestMapping(value = "/dapi/footballOnline")
public class SoccerOnlineController {
    private final SoccerOnlineService soccerOnlineService;
    /**
     *
     */
}
src/main/java/cc/mrbird/febs/dapp/soccer/dto/TeamsApiDto.java
New file
@@ -0,0 +1,39 @@
package cc.mrbird.febs.dapp.soccer.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class TeamsApiDto {
    @ApiModelProperty(value = "球队ID", example = "20")
    private Integer id;
    @ApiModelProperty(value = "球队名称", example = "Australia")
    private String name;
    @ApiModelProperty(value = "球队编码", example = "AUS")
    private String code;
    @ApiModelProperty(value = "球队名称或国家名称", example = "Australia")
    private String search;
    @ApiModelProperty(value = "国家名称", example = "Australia")
    private String country;
    @ApiModelProperty(value = "联赛ID", example = "2024")
    private Integer league;
    @ApiModelProperty(value = "赛季,YYYY", example = "2023")
    private Integer season;
    @ApiModelProperty(value = "球馆ID", example = "20322")
    private String venus;
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/LeaguesResponse.java
@@ -20,7 +20,7 @@
    private int results;
    @JsonProperty("paging")
    private JsonResponse.Paging paging;
    private Paging paging;
    @JsonProperty("response")
    private List<LeaguesInfo> response;
src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerLeaguesSeasons.java
New file
@@ -0,0 +1,13 @@
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_leagues_seasons")
public class SoccerLeaguesSeasons extends BaseEntity {
    private String seasonsName;
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerTeam.java
New file
@@ -0,0 +1,18 @@
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_team")
public class SoccerTeam extends BaseEntity {
    private Integer teamId;
    private String name;
    private String code;
    private String country;
    private Integer founded;
    private String national;
    private String logo;
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerVenue.java
New file
@@ -0,0 +1,18 @@
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_venue")
public class SoccerVenue extends BaseEntity {
    private Integer venueId;
    private String name;
    private String address;
    private String city;
    private Integer capacity;
    private String surface;
    private String image;
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/Team.java
New file
@@ -0,0 +1,29 @@
package cc.mrbird.febs.dapp.soccer.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class Team {
    @JsonProperty("id")
    private Integer id;
    @JsonProperty("name")
    private String name;
    @JsonProperty("code")
    private String code;
    @JsonProperty("country")
    private String country;
    @JsonProperty("founded")
    private Integer founded;
    @JsonProperty("national")
    private String national;
    @JsonProperty("logo")
    private String logo;
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/TeamsInfo.java
New file
@@ -0,0 +1,15 @@
package cc.mrbird.febs.dapp.soccer.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class TeamsInfo {
    @JsonProperty("team")
    private Team team;
    @JsonProperty("venue")
    private Venue venue;
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/TeamsInfoResponse.java
New file
@@ -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 TeamsInfoResponse {
    @JsonProperty("get")
    private String get;
    @JsonProperty("parameters")
    private Object parameters;
    @JsonProperty("errors")
    private List<Object> errors;
    @JsonProperty("results")
    private int results;
    @JsonProperty("paging")
    private Paging paging;
    @JsonProperty("response")
    private List<TeamsInfo> response;
    public static class Paging {
        @JsonProperty("current")
        private int current;
        @JsonProperty("total")
        private int total;
    }
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/Venue.java
New file
@@ -0,0 +1,29 @@
package cc.mrbird.febs.dapp.soccer.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class Venue {
    @JsonProperty("id")
    private Integer id;
    @JsonProperty("name")
    private String name;
    @JsonProperty("address")
    private String address;
    @JsonProperty("city")
    private String city;
    @JsonProperty("capacity")
    private Integer capacity;
    @JsonProperty("surface")
    private String surface;
    @JsonProperty("image")
    private String image;
}
src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerLeaguesSeasonsMapper.java
New file
@@ -0,0 +1,7 @@
package cc.mrbird.febs.dapp.soccer.mapper;
import cc.mrbird.febs.dapp.soccer.entity.SoccerLeaguesSeasons;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface SoccerLeaguesSeasonsMapper extends BaseMapper<SoccerLeaguesSeasons> {
}
src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerTeamMapper.java
New file
@@ -0,0 +1,7 @@
package cc.mrbird.febs.dapp.soccer.mapper;
import cc.mrbird.febs.dapp.soccer.entity.SoccerTeam;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface SoccerTeamMapper extends BaseMapper<SoccerTeam> {
}
src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerVenueMapper.java
New file
@@ -0,0 +1,7 @@
package cc.mrbird.febs.dapp.soccer.mapper;
import cc.mrbird.febs.dapp.soccer.entity.SoccerVenue;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface SoccerVenueMapper extends BaseMapper<SoccerVenue> {
}
src/main/java/cc/mrbird/febs/dapp/soccer/service/CountryService.java
@@ -2,6 +2,7 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.dapp.soccer.dto.LeaguesApiDto;
import cc.mrbird.febs.dapp.soccer.dto.TeamsApiDto;
import cc.mrbird.febs.dapp.soccer.entity.SoccerCountries;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -12,4 +13,8 @@
    FebsResponse leagues(LeaguesApiDto leaguesApiDto);
    FebsResponse timezone();
    FebsResponse seasons();
    FebsResponse teams(TeamsApiDto teamsApiDto);
}
src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/CountryServiceImpl.java
@@ -2,10 +2,9 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.dapp.soccer.dto.LeaguesApiDto;
import cc.mrbird.febs.dapp.soccer.dto.TeamsApiDto;
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.mapper.*;
import cc.mrbird.febs.dapp.soccer.service.CountryService;
import cc.mrbird.febs.dapp.soccer.util.SoccerResponseUtil;
import cn.hutool.core.collection.CollUtil;
@@ -33,6 +32,9 @@
    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() {
@@ -140,6 +142,85 @@
        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();
                    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();
                    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" +
src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/SoccerOnlineServiceImpl.java
New file
@@ -0,0 +1,15 @@
package cc.mrbird.febs.dapp.soccer.service.Impl;
import cc.mrbird.febs.dapp.soccer.entity.SoccerLeagues;
import cc.mrbird.febs.dapp.soccer.mapper.SoccerLeaguesMapper;
import cc.mrbird.febs.dapp.soccer.service.SoccerOnlineService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Slf4j
@Service
@RequiredArgsConstructor
public class SoccerOnlineServiceImpl extends ServiceImpl<SoccerLeaguesMapper, SoccerLeagues> implements SoccerOnlineService {
}
src/main/java/cc/mrbird/febs/dapp/soccer/service/SoccerOnlineService.java
New file
@@ -0,0 +1,7 @@
package cc.mrbird.febs.dapp.soccer.service;
import cc.mrbird.febs.dapp.soccer.entity.SoccerLeagues;
import com.baomidou.mybatisplus.extension.service.IService;
public interface SoccerOnlineService extends IService<SoccerLeagues> {
}
src/main/java/cc/mrbird/febs/dapp/soccer/util/SoccerResponseUtil.java
@@ -3,6 +3,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 cc.mrbird.febs.dapp.soccer.entity.TeamsInfoResponse;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
@@ -50,6 +51,22 @@
        return leaguesResponse;
    }
    /**
     * 将接口获取到的返回值转换成TeamsInfoResponse
     * @param response
     * @return
     */
    public static TeamsInfoResponse getTeamsInfoResponse(HttpResponse<String> response){
        TeamsInfoResponse teamsInfoResponse = new TeamsInfoResponse();
        ObjectMapper mapper = new ObjectMapper();
        try {
            teamsInfoResponse = mapper.readValue(response.getBody(), TeamsInfoResponse.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return teamsInfoResponse;
    }
    public static String objectToStr(Object object){
        return ObjectUtil.isEmpty(object) ? "-" : (String) object;
    }