src/main/java/cc/mrbird/febs/dapp/basketball_nba/controller/BasketballController.java
New file @@ -0,0 +1,41 @@ package cc.mrbird.febs.dapp.basketball_nba.controller; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.dapp.basketball_nba.service.BasketballService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; 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 @CrossOrigin("*") @RestController @Api(value = "BASKETBALL", tags = "BASKETBALL") @RequestMapping(value = "/dapi/basketball") public class BasketballController { private final BasketballService basketballService; @ApiOperation(value = "赛季", notes = "赛季") @PostMapping(value = "/seasons") public FebsResponse seasons() { return basketballService.seasons(); } @ApiOperation(value = "联赛", notes = "联赛") @PostMapping(value = "/leagues") public FebsResponse leagues() { return basketballService.leagues(); } @ApiOperation(value = "球队", notes = "球队") @PostMapping(value = "/teams") public FebsResponse teams() { return basketballService.teams(); } } src/main/java/cc/mrbird/febs/dapp/basketball_nba/entity/NbaLeagues.java
New file @@ -0,0 +1,13 @@ package cc.mrbird.febs.dapp.basketball_nba.entity; import cc.mrbird.febs.common.entity.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName("nba_leagues") public class NbaLeagues extends BaseEntity { private String leaguesCode;//联赛 } src/main/java/cc/mrbird/febs/dapp/basketball_nba/entity/NbaSeasons.java
New file @@ -0,0 +1,13 @@ package cc.mrbird.febs.dapp.basketball_nba.entity; import cc.mrbird.febs.common.entity.BaseEntity; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName("nba_seasons") public class NbaSeasons extends BaseEntity { private Integer seasonsCode;//赛季 } src/main/java/cc/mrbird/febs/dapp/basketball_nba/mapper/NbaLeaguesMapper.java
New file @@ -0,0 +1,7 @@ package cc.mrbird.febs.dapp.basketball_nba.mapper; import cc.mrbird.febs.dapp.basketball_nba.entity.NbaLeagues; import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface NbaLeaguesMapper extends BaseMapper<NbaLeagues> { } src/main/java/cc/mrbird/febs/dapp/basketball_nba/mapper/NbaSeasonsMapper.java
New file @@ -0,0 +1,7 @@ package cc.mrbird.febs.dapp.basketball_nba.mapper; import cc.mrbird.febs.dapp.basketball_nba.entity.NbaSeasons; import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface NbaSeasonsMapper extends BaseMapper<NbaSeasons> { } src/main/java/cc/mrbird/febs/dapp/basketball_nba/service/BasketballService.java
New file @@ -0,0 +1,12 @@ package cc.mrbird.febs.dapp.basketball_nba.service; import cc.mrbird.febs.common.entity.FebsResponse; public interface BasketballService { FebsResponse seasons(); FebsResponse leagues(); FebsResponse teams(); } src/main/java/cc/mrbird/febs/dapp/basketball_nba/service/Impl/BasketballServiceImpl.java
New file @@ -0,0 +1,120 @@ package cc.mrbird.febs.dapp.basketball_nba.service.Impl; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.dapp.basketball_nba.entity.NbaLeagues; import cc.mrbird.febs.dapp.basketball_nba.entity.NbaSeasons; import cc.mrbird.febs.dapp.basketball_nba.mapper.NbaLeaguesMapper; import cc.mrbird.febs.dapp.basketball_nba.mapper.NbaSeasonsMapper; import cc.mrbird.febs.dapp.basketball_nba.service.BasketballService; import cc.mrbird.febs.dapp.basketball_nba.util.DataEnum; import cc.mrbird.febs.dapp.basketball_nba.util.SoccerResponseUtil; import cc.mrbird.febs.dapp.basketball_nba.vo.JsonResponse; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; 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 BasketballServiceImpl extends ServiceImpl<NbaSeasonsMapper, NbaSeasons> implements BasketballService { private final NbaSeasonsMapper nbaSeasonsMapper; private final NbaLeaguesMapper nbaLeaguesMapper; @Override public FebsResponse seasons() { HttpResponse<String> httpResponse = null; try { httpResponse = Unirest.get(DataEnum.SEASONS_URL.getCode()) .header(DataEnum.API_KEY.getType(), DataEnum.API_KEY.getCode()) .header(DataEnum.API_HOST.getType(), DataEnum.API_HOST.getCode()).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 object : responses){ NbaSeasons nbaSeasons = new NbaSeasons(); Integer seasonsCode = SoccerResponseUtil.objectToInteger(object); List<NbaSeasons> nbaSeasonsList = nbaSeasonsMapper.selectList(new QueryWrapper<NbaSeasons>().eq("seasons_code", seasonsCode)); if(CollUtil.isEmpty(nbaSeasonsList)){ nbaSeasons.setSeasonsCode(seasonsCode); nbaSeasonsMapper.insert(nbaSeasons); } } } } return new FebsResponse().success().data(jsonResponse); } @Override public FebsResponse leagues() { HttpResponse<String> httpResponse = null; try { httpResponse = Unirest.get(DataEnum.LEAGUES_URL.getCode()) .header(DataEnum.API_KEY.getType(), DataEnum.API_KEY.getCode()) .header(DataEnum.API_HOST.getType(), DataEnum.API_HOST.getCode()).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 object : responses){ NbaLeagues nbaLeagues = new NbaLeagues(); String leaguesCode = SoccerResponseUtil.objectToStr(object); List<NbaLeagues> nbaLeaguesList = nbaLeaguesMapper.selectList(new QueryWrapper<NbaLeagues>().eq("leagues_code", leaguesCode)); if(CollUtil.isEmpty(nbaLeaguesList)){ nbaLeagues.setLeaguesCode(leaguesCode); nbaLeaguesMapper.insert(nbaLeagues); } } } } return new FebsResponse().success().data(jsonResponse); } @Override public FebsResponse teams() { HttpResponse<String> httpResponse = null; try { httpResponse = Unirest.get(DataEnum.TEAMS_URL.getCode()) .header(DataEnum.API_KEY.getType(), DataEnum.API_KEY.getCode()) .header(DataEnum.API_HOST.getType(), DataEnum.API_HOST.getCode()) .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 object : responses){ NbaLeagues nbaLeagues = new NbaLeagues(); String leaguesCode = SoccerResponseUtil.objectToStr(object); List<NbaLeagues> nbaLeaguesList = nbaLeaguesMapper.selectList(new QueryWrapper<NbaLeagues>().eq("leagues_code", leaguesCode)); if(CollUtil.isEmpty(nbaLeaguesList)){ nbaLeagues.setLeaguesCode(leaguesCode); nbaLeaguesMapper.insert(nbaLeagues); } } } } return new FebsResponse().success().data(jsonResponse); } } src/main/java/cc/mrbird/febs/dapp/basketball_nba/util/DataEnum.java
New file @@ -0,0 +1,23 @@ package cc.mrbird.febs.dapp.basketball_nba.util; import lombok.Getter; @Getter public enum DataEnum { TEAMS_URL("TEAMS_URL","https://v2.nba.api-sports.io/teams"), LEAGUES_URL("LEAGUES_URL","https://v2.nba.api-sports.io/leagues"), SEASONS_URL("SEASONS_URL","https://v2.nba.api-sports.io/seasons"), API_HOST("x-rapidapi-host","v2.nba.api-sports.io"), API_KEY("x-rapidapi-key","87f8d87d629d1704ba49622cb978eb81"); private String type; private String code; DataEnum(String type, String code) { this.type = type; this.code = code; } } src/main/java/cc/mrbird/febs/dapp/basketball_nba/util/SoccerResponseUtil.java
New file @@ -0,0 +1,45 @@ package cc.mrbird.febs.dapp.basketball_nba.util; import cc.mrbird.febs.common.contants.SoccerContants; import cc.mrbird.febs.dapp.basketball_nba.vo.JsonResponse; import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.fasterxml.jackson.databind.ObjectMapper; 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); } /** * 将接口获取到的返回值转换成HsonResponse * @param response * @return */ public static JsonResponse getJsonResponse(HttpResponse<String> response){ JsonResponse jsonResponse = new JsonResponse(); ObjectMapper mapper = new ObjectMapper(); try { jsonResponse = mapper.readValue(response.getBody(), JsonResponse.class); } catch (Exception e) { e.printStackTrace(); } return jsonResponse; } 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; } } src/main/java/cc/mrbird/febs/dapp/basketball_nba/vo/JsonResponse.java
New file @@ -0,0 +1,37 @@ package cc.mrbird.febs.dapp.basketball_nba.vo; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import java.util.List; @Data public class JsonResponse { @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<Object> response; public static class Paging { @JsonProperty("current") private int current; @JsonProperty("total") private int total; } }