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<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);
|
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();
|
}
|
|
@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);
|
|
Integer leaguesId = SoccerResponseUtil.objectToInteger(leagueStr.get("id"));
|
List<SoccerLeagues> soccerLeaguesList = soccerLeaguesMapper.selectList(new QueryWrapper<SoccerLeagues>().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<String> 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<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();
|
}
|
|
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);
|
|
}
|
}
|