KKSU
2024-05-13 ff8e73504ab40738ce1c90f6394bbd7b88260f5e
球队信息
10 files added
318 ■■■■■ changed files
src/main/java/cc/mrbird/febs/dapp/basketball_nba/controller/BasketballController.java 41 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/basketball_nba/entity/NbaLeagues.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/basketball_nba/entity/NbaSeasons.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/basketball_nba/mapper/NbaLeaguesMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/basketball_nba/mapper/NbaSeasonsMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/basketball_nba/service/BasketballService.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/basketball_nba/service/Impl/BasketballServiceImpl.java 120 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/basketball_nba/util/DataEnum.java 23 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/basketball_nba/util/SoccerResponseUtil.java 45 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/basketball_nba/vo/JsonResponse.java 37 ●●●●● patch | view | raw | blame | history
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;
    }
}