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