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.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.core.conditions.query.QueryWrapper; 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; import java.util.List; @Slf4j @Service @RequiredArgsConstructor public class CountryServiceImpl extends ServiceImpl implements CountryService { private final SoccerCountriesMapper soccerCountriesMapper; private final SoccerLeaguesMapper soccerLeaguesMapper; @Override public FebsResponse countries() { HttpResponse 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); String code = SoccerResponseUtil.objectToStr(jsonObject.get("code")); List soccerCountryList = soccerCountriesMapper.selectList(new QueryWrapper().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(); } @Override public FebsResponse leagues(LeaguesApiDto leaguesApiDto) { HttpResponse 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); Integer leaguesId = SoccerResponseUtil.objectToInteger(leagueStr.get("id")); List soccerLeaguesList = soccerLeaguesMapper.selectList(new QueryWrapper().eq("leagues_id", leaguesId)); if(CollUtil.isNotEmpty(soccerLeaguesList)){ continue; } 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(); } @Override public FebsResponse timezone() { HttpResponse response = null; try { response = 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(); } log.info(response.getBody()); // 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 soccerCountryList = soccerCountriesMapper.selectList(new QueryWrapper().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(); } public static void main(String[] args) { StringBuffer stringBuffer = new StringBuffer("{\n" + "get: \"timezone\"\n" + "parameters: [\n" + "]\n" + "errors: [\n" + "]\n" + "results: 427 paging: {current: 1 total: 1}response: [0: \"Africa/Abidjan\"1: \"Africa/Accra\"2: \"Africa/Addis_Ababa\"3: \"Africa/Algiers\"4: \"Africa/Asmara\"]}"); JSONObject parseObj = JSONUtil.parseObj(stringBuffer); Object responseStr = parseObj.get(SoccerContants.RESPONSE); JSONArray jsonArray = JSONUtil.parseArray(responseStr); System.out.println(jsonArray); } }