From 04b73bbb2b20f0c3bef5c8ca94edf97eeb9d0994 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Sat, 11 May 2024 11:35:26 +0800
Subject: [PATCH] 香港新环境

---
 src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerCountriesMapper.java    |    7 +
 src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java         |    2 
 src/main/java/cc/mrbird/febs/common/contants/SoccerContants.java              |    6 +
 src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerController.java     |   35 ++++++++
 src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/CountryServiceImpl.java |   97 ++++++++++++++++++++++++
 src/main/java/cc/mrbird/febs/dapp/soccer/util/SoccerResponseUtil.java         |   25 ++++++
 src/main/java/cc/mrbird/febs/dapp/soccer/dto/LeaguesApiDto.java               |    4 +
 src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerCountries.java          |   14 +++
 src/main/java/cc/mrbird/febs/dapp/soccer/service/CountryService.java          |   13 +++
 9 files changed, 202 insertions(+), 1 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/contants/SoccerContants.java b/src/main/java/cc/mrbird/febs/common/contants/SoccerContants.java
new file mode 100644
index 0000000..b9cae98
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/contants/SoccerContants.java
@@ -0,0 +1,6 @@
+package cc.mrbird.febs.common.contants;
+
+public class SoccerContants {
+
+    public static final String RESPONSE = "response";
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java b/src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java
index 2e67efd..648eeb3 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java
@@ -130,7 +130,7 @@
     }
 
     @ApiOperation(value = "获取国家", notes = "获取国家")
-    @GetMapping(value = "/testApi")
+    @GetMapping(value = "/countries")
     public FebsResponse testApi() {
         HttpResponse<String> response = null;
         try {
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerController.java b/src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerController.java
new file mode 100644
index 0000000..97b6cef
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerController.java
@@ -0,0 +1,35 @@
+package cc.mrbird.febs.dapp.soccer.controller;
+
+import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.dapp.soccer.dto.LeaguesApiDto;
+import cc.mrbird.febs.dapp.soccer.service.CountryService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@RequiredArgsConstructor
+@CrossOrigin("*")
+@RestController
+@Api(value = "FOOTBALL", tags = "FOOTBALL")
+@RequestMapping(value = "/dapi/footBall")
+public class SoccerController {
+
+    private final CountryService countryService;
+
+    @ApiOperation(value = "获取国家", notes = "获取国家")
+    @GetMapping(value = "/countries")
+    public FebsResponse countriesApi() {
+        return countryService.countries();
+    }
+
+    @ApiOperation(value = "获取联赛", notes = "获取联赛")
+    @PostMapping(value = "/leagues")
+    public FebsResponse leagues(LeaguesApiDto leaguesApiDto) {
+
+        return countryService.leagues(leaguesApiDto);
+
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/dto/LeaguesApiDto.java b/src/main/java/cc/mrbird/febs/dapp/soccer/dto/LeaguesApiDto.java
index 5c993d6..64e6eef 100644
--- a/src/main/java/cc/mrbird/febs/dapp/soccer/dto/LeaguesApiDto.java
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/dto/LeaguesApiDto.java
@@ -1,5 +1,6 @@
 package cc.mrbird.febs.dapp.soccer.dto;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 @Data
@@ -8,11 +9,14 @@
      * integer = 4 characters YYYY
      * The season of the league
      */
+
+    @ApiModelProperty(value = "年份,YYYY", example = "2024")
     private Integer season;
     /**
      * string Return the list of active seasons or the las...Show pattern
      * Enum: "true" "false"
      * The state of the league
      */
+    @ApiModelProperty(value = "联赛状态,Enum: \"true\" \"false\"", example = "true")
     private String current;
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerCountries.java b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerCountries.java
new file mode 100644
index 0000000..c5e5362
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerCountries.java
@@ -0,0 +1,14 @@
+package cc.mrbird.febs.dapp.soccer.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("soccer_countries")
+public class SoccerCountries extends BaseEntity {
+
+    private String name;//名称
+    private String code;//编码
+    private String flag;//旗帜
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerCountriesMapper.java b/src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerCountriesMapper.java
new file mode 100644
index 0000000..da3981c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerCountriesMapper.java
@@ -0,0 +1,7 @@
+package cc.mrbird.febs.dapp.soccer.mapper;
+
+import cc.mrbird.febs.dapp.soccer.entity.SoccerCountries;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface SoccerCountriesMapper extends BaseMapper<SoccerCountries> {
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/service/CountryService.java b/src/main/java/cc/mrbird/febs/dapp/soccer/service/CountryService.java
new file mode 100644
index 0000000..343e757
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/service/CountryService.java
@@ -0,0 +1,13 @@
+package cc.mrbird.febs.dapp.soccer.service;
+
+import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.dapp.soccer.dto.LeaguesApiDto;
+import cc.mrbird.febs.dapp.soccer.entity.SoccerCountries;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface CountryService extends IService<SoccerCountries> {
+
+    FebsResponse countries();
+
+    FebsResponse leagues(LeaguesApiDto leaguesApiDto);
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/CountryServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/CountryServiceImpl.java
new file mode 100644
index 0000000..e99f75b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/CountryServiceImpl.java
@@ -0,0 +1,97 @@
+package cc.mrbird.febs.dapp.soccer.service.Impl;
+
+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.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;
+
+@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);
+                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);
+
+                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);
+            }
+        }
+        System.out.println(jsonArray);
+        log.info(String.valueOf(response.getRawBody()));
+        return new FebsResponse().success();
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/soccer/util/SoccerResponseUtil.java b/src/main/java/cc/mrbird/febs/dapp/soccer/util/SoccerResponseUtil.java
new file mode 100644
index 0000000..ae41d99
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/soccer/util/SoccerResponseUtil.java
@@ -0,0 +1,25 @@
+package cc.mrbird.febs.dapp.soccer.util;
+
+import cc.mrbird.febs.common.contants.SoccerContants;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+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);
+    }
+
+    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;
+    }
+}

--
Gitblit v1.9.1