KKSU
2024-05-11 04b73bbb2b20f0c3bef5c8ca94edf97eeb9d0994
香港新环境
2 files modified
7 files added
203 ■■■■■ changed files
src/main/java/cc/mrbird/febs/common/contants/SoccerContants.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerController.java 35 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/dto/LeaguesApiDto.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerCountries.java 14 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerCountriesMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/service/CountryService.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/CountryServiceImpl.java 97 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/util/SoccerResponseUtil.java 25 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/contants/SoccerContants.java
New file
@@ -0,0 +1,6 @@
package cc.mrbird.febs.common.contants;
public class SoccerContants {
    public static final String RESPONSE = "response";
}
src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java
@@ -130,7 +130,7 @@
    }
    @ApiOperation(value = "获取国家", notes = "获取国家")
    @GetMapping(value = "/testApi")
    @GetMapping(value = "/countries")
    public FebsResponse testApi() {
        HttpResponse<String> response = null;
        try {
src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerController.java
New file
@@ -0,0 +1,35 @@
package cc.mrbird.febs.dapp.soccer.controller;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.dapp.soccer.dto.LeaguesApiDto;
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.*;
@Slf4j
@RequiredArgsConstructor
@CrossOrigin("*")
@RestController
@Api(value = "FOOTBALL", tags = "FOOTBALL")
@RequestMapping(value = "/dapi/footBall")
public class SoccerController {
    private final CountryService countryService;
    @ApiOperation(value = "获取国家", notes = "获取国家")
    @GetMapping(value = "/countries")
    public FebsResponse countriesApi() {
        return countryService.countries();
    }
    @ApiOperation(value = "获取联赛", notes = "获取联赛")
    @PostMapping(value = "/leagues")
    public FebsResponse leagues(LeaguesApiDto leaguesApiDto) {
        return countryService.leagues(leaguesApiDto);
    }
}
src/main/java/cc/mrbird/febs/dapp/soccer/dto/LeaguesApiDto.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs.dapp.soccer.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@@ -8,11 +9,14 @@
     * integer = 4 characters YYYY
     * The season of the league
     */
    @ApiModelProperty(value = "年份,YYYY", example = "2024")
    private Integer season;
    /**
     * string Return the list of active seasons or the las...Show pattern
     * Enum: "true" "false"
     * The state of the league
     */
    @ApiModelProperty(value = "联赛状态,Enum: \"true\" \"false\"", example = "true")
    private String current;
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerCountries.java
New file
@@ -0,0 +1,14 @@
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_countries")
public class SoccerCountries extends BaseEntity {
    private String name;//名称
    private String code;//编码
    private String flag;//旗帜
}
src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerCountriesMapper.java
New file
@@ -0,0 +1,7 @@
package cc.mrbird.febs.dapp.soccer.mapper;
import cc.mrbird.febs.dapp.soccer.entity.SoccerCountries;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface SoccerCountriesMapper extends BaseMapper<SoccerCountries> {
}
src/main/java/cc/mrbird/febs/dapp/soccer/service/CountryService.java
New file
@@ -0,0 +1,13 @@
package cc.mrbird.febs.dapp.soccer.service;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.dapp.soccer.dto.LeaguesApiDto;
import cc.mrbird.febs.dapp.soccer.entity.SoccerCountries;
import com.baomidou.mybatisplus.extension.service.IService;
public interface CountryService extends IService<SoccerCountries> {
    FebsResponse countries();
    FebsResponse leagues(LeaguesApiDto leaguesApiDto);
}
src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/CountryServiceImpl.java
New file
@@ -0,0 +1,97 @@
package cc.mrbird.febs.dapp.soccer.service.Impl;
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.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.extension.service.impl.ServiceImpl;
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;
@Slf4j
@Service
@RequiredArgsConstructor
public class CountryServiceImpl extends ServiceImpl<SoccerCountriesMapper, SoccerCountries> implements CountryService {
    private final SoccerCountriesMapper soccerCountriesMapper;
    private final SoccerLeaguesMapper soccerLeaguesMapper;
    @Override
    public FebsResponse countries() {
        HttpResponse<String> response = null;
        try {
            response = 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);
            }
        }
        return new FebsResponse().success();
    }
    @Override
    public FebsResponse leagues(LeaguesApiDto leaguesApiDto) {
        HttpResponse<String> response = 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")
                    .header("x-rapidapi-key", "87f8d87d629d1704ba49622cb978eb81")
                    .header("x-rapidapi-host", "v3.football.api-sports.io")
                    .queryString("season",season)
                    .queryString("current",current)
                    .asString();
        } catch (UnirestException e) {
            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);
                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);
            }
        }
        System.out.println(jsonArray);
        log.info(String.valueOf(response.getRawBody()));
        return new FebsResponse().success();
    }
}
src/main/java/cc/mrbird/febs/dapp/soccer/util/SoccerResponseUtil.java
New file
@@ -0,0 +1,25 @@
package cc.mrbird.febs.dapp.soccer.util;
import cc.mrbird.febs.common.contants.SoccerContants;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.mashape.unirest.http.HttpResponse;
public class SoccerResponseUtil {
    public static JSONArray getResponseToJSONArray(HttpResponse<String> response){
        JSONObject parseObj = JSONUtil.parseObj(response.getBody());
        Object responseStr = parseObj.get(SoccerContants.RESPONSE);
        return JSONUtil.parseArray(responseStr);
    }
    public static String objectToStr(Object object){
        return ObjectUtil.isEmpty(object) ? "-" : (String) object;
    }
    public static Integer objectToInteger(Object object){
        return ObjectUtil.isEmpty(object) ? 0 : (Integer) object;
    }
}