From ff8e73504ab40738ce1c90f6394bbd7b88260f5e Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 13 May 2024 21:12:15 +0800
Subject: [PATCH] 球队信息

---
 src/main/java/cc/mrbird/febs/dapp/basketball_nba/vo/JsonResponse.java                    |   37 ++++++
 src/main/java/cc/mrbird/febs/dapp/basketball_nba/mapper/NbaLeaguesMapper.java            |    7 +
 src/main/java/cc/mrbird/febs/dapp/basketball_nba/entity/NbaLeagues.java                  |   13 ++
 src/main/java/cc/mrbird/febs/dapp/basketball_nba/service/BasketballService.java          |   12 ++
 src/main/java/cc/mrbird/febs/dapp/basketball_nba/entity/NbaSeasons.java                  |   13 ++
 src/main/java/cc/mrbird/febs/dapp/basketball_nba/mapper/NbaSeasonsMapper.java            |    7 +
 src/main/java/cc/mrbird/febs/dapp/basketball_nba/controller/BasketballController.java    |   41 ++++++
 src/main/java/cc/mrbird/febs/dapp/basketball_nba/util/DataEnum.java                      |   23 +++
 src/main/java/cc/mrbird/febs/dapp/basketball_nba/service/Impl/BasketballServiceImpl.java |  120 ++++++++++++++++++++
 src/main/java/cc/mrbird/febs/dapp/basketball_nba/util/SoccerResponseUtil.java            |   45 +++++++
 10 files changed, 318 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/basketball_nba/controller/BasketballController.java b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/controller/BasketballController.java
new file mode 100644
index 0000000..bfe4167
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/controller/BasketballController.java
@@ -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();
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/basketball_nba/entity/NbaLeagues.java b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/entity/NbaLeagues.java
new file mode 100644
index 0000000..ce3600e
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/entity/NbaLeagues.java
@@ -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;//联赛
+
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/basketball_nba/entity/NbaSeasons.java b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/entity/NbaSeasons.java
new file mode 100644
index 0000000..e527a2c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/entity/NbaSeasons.java
@@ -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;//赛季
+
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/basketball_nba/mapper/NbaLeaguesMapper.java b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/mapper/NbaLeaguesMapper.java
new file mode 100644
index 0000000..a78e1b6
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/mapper/NbaLeaguesMapper.java
@@ -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> {
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/basketball_nba/mapper/NbaSeasonsMapper.java b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/mapper/NbaSeasonsMapper.java
new file mode 100644
index 0000000..c809344
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/mapper/NbaSeasonsMapper.java
@@ -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> {
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/basketball_nba/service/BasketballService.java b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/service/BasketballService.java
new file mode 100644
index 0000000..4d98370
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/service/BasketballService.java
@@ -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();
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/basketball_nba/service/Impl/BasketballServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/service/Impl/BasketballServiceImpl.java
new file mode 100644
index 0000000..ba05a6b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/service/Impl/BasketballServiceImpl.java
@@ -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);
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/basketball_nba/util/DataEnum.java b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/util/DataEnum.java
new file mode 100644
index 0000000..99ac5ec
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/util/DataEnum.java
@@ -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;
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/basketball_nba/util/SoccerResponseUtil.java b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/util/SoccerResponseUtil.java
new file mode 100644
index 0000000..bd9b6ef
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/util/SoccerResponseUtil.java
@@ -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;
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/basketball_nba/vo/JsonResponse.java b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/vo/JsonResponse.java
new file mode 100644
index 0000000..e730139
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/basketball_nba/vo/JsonResponse.java
@@ -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;
+
+    }
+}

--
Gitblit v1.9.1