From 90d7eb47d8b49e8c3bcd841d70f28898651c07d2 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Wed, 19 Jan 2022 21:38:40 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81roll=E5=B9=B3=E5=8F=B0=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E4=B8=8A=E7=9A=84=E4=BB=8A=E5=A4=A9api=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../main/java/com/xjs/consts/ApiConst.java | 7 ++ .../com/xjs/run/ApplicationRunnerImpl.java | 19 ++++++ .../controller/ApiToolsController.java | 10 ++- .../xjs/apitools/domain/ApiHistoryToday.java | 67 +++++++++++++++++++ .../com/xjs/apitools/domain/RequestBody.java | 5 ++ .../factory/impl/RollHistoryTodayFactory.java | 52 ++++++++++++++ .../xjs/apitools/service/ApiToolsService.java | 9 ++- .../service/impl/ApiToolsServiceImpl.java | 19 +++++- .../api/roll/RollHistoryTodayFeignClient.java | 27 ++++++++ .../factory/RollHistoryTodayFeignFactory.java | 29 ++++++++ 11 files changed, 242 insertions(+), 4 deletions(-) create mode 100644 xjs-business/xjs-business-common/src/main/java/com/xjs/run/ApplicationRunnerImpl.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/domain/ApiHistoryToday.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/factory/impl/RollHistoryTodayFactory.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/roll/RollHistoryTodayFeignClient.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/RollHistoryTodayFeignFactory.java diff --git a/README.md b/README.md index d3220131..90a2725f 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ ## 平台简介 若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。 -(xjs专用版) +(xjs专用版) 若依28900行代码 * 采用前后端分离的模式,微服务版本前端(基于 [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue))。 * 后端采用Spring Boot、Spring Cloud & Alibaba。 diff --git a/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/ApiConst.java b/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/ApiConst.java index 6b49def7..998d1c0f 100644 --- a/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/ApiConst.java +++ b/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/ApiConst.java @@ -60,6 +60,8 @@ public class ApiConst { public static final String ROLL_BEAUTY_PICTURE = "ROLL-美女图片"; + public static final String ROLL_HISTORY_TODAY = "ROLL-历史今天"; + //-------------------url------------------------------ @@ -129,6 +131,11 @@ public class ApiConst { */ public static final String ROLL_BEAUTY_PICTURE_URL = "https://www.mxnzp.com/api/image/girl/list/random"; + /** + * 接口文档:https://www.mxnzp.com/doc/detail?id=18 + */ + public static final String ROLL_HISTORY_TODAY_URL = "https://www.mxnzp.com/api/history/today"; + diff --git a/xjs-business/xjs-business-common/src/main/java/com/xjs/run/ApplicationRunnerImpl.java b/xjs-business/xjs-business-common/src/main/java/com/xjs/run/ApplicationRunnerImpl.java new file mode 100644 index 00000000..871940dd --- /dev/null +++ b/xjs-business/xjs-business-common/src/main/java/com/xjs/run/ApplicationRunnerImpl.java @@ -0,0 +1,19 @@ +package com.xjs.run; + +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +/** + * springboot启动成功后执行 + * @author xiejs + * @since 2022-01-19 + */ +@Component +public class ApplicationRunnerImpl implements ApplicationRunner { + + @Override + public void run(ApplicationArguments args) throws Exception { + System.out.println("-----------------启动成功!!!---------------------"); + } +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/controller/ApiToolsController.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/controller/ApiToolsController.java index 86ed3a10..450d11e0 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/controller/ApiToolsController.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/controller/ApiToolsController.java @@ -80,9 +80,17 @@ public class ApiToolsController { @ApiOperation("获取mm图片信息") @Log(title = "获取mm图片分类") public R> getBeautyPictureApiData() { - return R.ok(apiToolsService.getBeautyPicture()); + return R.ok(apiToolsService.getBeautyPictureList()); } + @GetMapping("historytoday") + @ApiOperation("获取历史今天信息") + @Log(title = "获取历史今天分类") + public R> getHistoryTodayApiData() { + return R.ok(apiToolsService.getHistoryTodayList()); + } + + diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/domain/ApiHistoryToday.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/domain/ApiHistoryToday.java new file mode 100644 index 00000000..a47440e6 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/domain/ApiHistoryToday.java @@ -0,0 +1,67 @@ +package com.xjs.apitools.domain; + +import lombok.Data; + +import java.io.Serializable; + +/** + * api历史今天实体 + * + * @author xiejs + * @since 2022-01-19 + */ +@Data +public class ApiHistoryToday implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 历史事件所对应的图片,可能为空 + */ + private String picUrl; + + /** + * 历史事件的名称 + */ + private String title; + + /** + * 该历史事件发生所对应的年份 + */ + private String year; + + /** + * 该历史事件发生所对应的月份 + */ + private String month; + + /** + * 该历史事件发生所对应的日期 + */ + private String day; + + /** + * 历史事件的详细介绍,如果type=1,则此字段有返回值,否则不返回 + */ + private String details; + + /** + * 拼接的具体时间 + */ + private String date; + + public String getDate() { + String m = this.month; + try { + if (Integer.parseInt(month) > 0 && Integer.parseInt(month) < 10) { + m = "0" + this.month; + } + } catch (NumberFormatException e) { + e.printStackTrace(); + } + return this.year + "-" + m + "-" + this.day; + + } + + +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/domain/RequestBody.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/domain/RequestBody.java index 0d316d4b..b4ffda06 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/domain/RequestBody.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/domain/RequestBody.java @@ -35,4 +35,9 @@ public class RequestBody { * 物品名称 */ private String name; + + /** + * 是否需要详情,0:不需要详情 1:需要详情 默认值 0 可不传 + */ + private Integer type; } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/factory/impl/RollHistoryTodayFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/factory/impl/RollHistoryTodayFactory.java new file mode 100644 index 00000000..8853a673 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/factory/impl/RollHistoryTodayFactory.java @@ -0,0 +1,52 @@ +package com.xjs.apitools.factory.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xjs.apitools.domain.ApiHistoryToday; +import com.xjs.apitools.domain.RequestBody; +import com.xjs.apitools.factory.ApiToolsFactory; +import com.xjs.common.client.api.roll.RollHistoryTodayFeignClient; +import com.xjs.config.RollProperties; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.xjs.consts.ApiConst.DEMOTE_ERROR; +import static com.xjs.consts.ApiConst.ROLL_CODE_SUCCESS; + +/** + * roll平台获取历史今天api工厂实现 + * + * @author xiejs + * @since 2022-01-19 + */ +@Component +@Log4j2 +public class RollHistoryTodayFactory implements ApiToolsFactory { + + @Autowired + private RollProperties rollProperties; + @Autowired + private RollHistoryTodayFeignClient rollHistoryTodayFeignClient; + + @Override + public List apiDataList() { + RequestBody requestBody = new RequestBody(); + requestBody.setApp_id(rollProperties.getApp_id()); + requestBody.setApp_secret(rollProperties.getApp_secret()); + //获取无详情的数据 + requestBody.setType(0); + JSONObject jsonObject = rollHistoryTodayFeignClient.historyTodayApi(requestBody); + if (!jsonObject.containsKey(DEMOTE_ERROR) && jsonObject.getInteger("code") == ROLL_CODE_SUCCESS.intValue()) { + JSONArray jsonArrayData = jsonObject.getJSONArray("data"); + return jsonArrayData.stream().map(data -> { + JSONObject jsonData = (JSONObject) data; + return jsonData.toJavaObject(ApiHistoryToday.class); + }).collect(Collectors.toList()); + } + return null; + } +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/service/ApiToolsService.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/service/ApiToolsService.java index 7fe55cd5..f17203d3 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/service/ApiToolsService.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/service/ApiToolsService.java @@ -53,7 +53,14 @@ public interface ApiToolsService { * 获取mm图片 * @return ApiBeautyPicture */ - List getBeautyPicture(); + List getBeautyPictureList(); + + + /** + * 获取历史上的今天数据 + * @return ApiHistoryToday + */ + List getHistoryTodayList(); diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/service/impl/ApiToolsServiceImpl.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/service/impl/ApiToolsServiceImpl.java index 3163bf09..2199e36a 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/service/impl/ApiToolsServiceImpl.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/service/impl/ApiToolsServiceImpl.java @@ -1,5 +1,6 @@ package com.xjs.apitools.service.impl; +import cn.hutool.core.collection.CollUtil; import com.ruoyi.common.core.utils.StringUtils; import com.xjs.apitools.domain.*; import com.xjs.apitools.factory.ApiToolsFactory; @@ -36,6 +37,7 @@ public class ApiToolsServiceImpl implements ApiToolsService { private ApiToolsFactory forecastWeatherFactory; private ApiToolsFactory garbageSortingFactory; private ApiToolsFactory beautyPictureFactory; + private ApiToolsFactory historyTodayFactory; @Autowired public void setHolidayFactory(RollHolidayFactory rollHolidayFactory) { @@ -67,6 +69,11 @@ public class ApiToolsServiceImpl implements ApiToolsService { this.beautyPictureFactory = rollBeautyPictureFactory; } + @Autowired + private void setHistoryTodayFactory(RollHistoryTodayFactory rollHistoryTodayFactory) { + this.historyTodayFactory = rollHistoryTodayFactory; + } + @Override public List getApiHolidayList() { @@ -116,7 +123,7 @@ public class ApiToolsServiceImpl implements ApiToolsService { } @Override - public List getBeautyPicture() { + public List getBeautyPictureList() { List beautyPictureList = Optional.ofNullable(beautyPictureFactory.apiDataList()) .orElseThrow(ApiException::new); beautyPictureList.forEach(bp ->{ @@ -129,4 +136,14 @@ public class ApiToolsServiceImpl implements ApiToolsService { }); return beautyPictureList; } + + @Override + public List getHistoryTodayList() { + List historyTodayList = historyTodayFactory.apiDataList(); + if (CollUtil.isNotEmpty(historyTodayList)) { + return historyTodayList.stream().limit(5).collect(Collectors.toList()); + }else { + throw new ApiException("获取历史上的今天api调用异常!!!"); + } + } } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/roll/RollHistoryTodayFeignClient.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/roll/RollHistoryTodayFeignClient.java new file mode 100644 index 00000000..18566843 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/roll/RollHistoryTodayFeignClient.java @@ -0,0 +1,27 @@ +package com.xjs.common.client.api.roll; + +import com.alibaba.fastjson.JSONObject; +import com.xjs.annotation.ApiLog; +import com.xjs.apitools.domain.RequestBody; +import com.xjs.common.client.factory.RollHistoryTodayFeignFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.web.bind.annotation.GetMapping; + +import static com.xjs.consts.ApiConst.ROLL_HISTORY_TODAY; +import static com.xjs.consts.ApiConst.ROLL_HISTORY_TODAY_URL; + +/** + * roll历史今天api接口feign远程调用 + * @author xiejs + * @since 2022-01-19 + */ +@FeignClient(name = "rollHistoryToday", url = ROLL_HISTORY_TODAY_URL, fallbackFactory = RollHistoryTodayFeignFactory.class) +public interface RollHistoryTodayFeignClient { + + @GetMapping() + @ApiLog(name = ROLL_HISTORY_TODAY, + url = ROLL_HISTORY_TODAY_URL, + method = "Get") + JSONObject historyTodayApi(@SpringQueryMap RequestBody requestBody); +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/RollHistoryTodayFeignFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/RollHistoryTodayFeignFactory.java new file mode 100644 index 00000000..1cd4043c --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/RollHistoryTodayFeignFactory.java @@ -0,0 +1,29 @@ +package com.xjs.common.client.factory; + +import com.alibaba.fastjson.JSONObject; +import com.ruoyi.common.core.domain.R; +import com.xjs.common.client.api.roll.RollHistoryTodayFeignClient; +import lombok.extern.log4j.Log4j2; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +import static com.xjs.consts.ApiConst.DEMOTE_ERROR; + +/** + * roll历史今天api接口feign远程调用降级 + * @author xiejs + * @since 2022-01-19 + */ +@Component +@Log4j2 +public class RollHistoryTodayFeignFactory implements FallbackFactory { + @Override + public RollHistoryTodayFeignClient create(Throwable cause) { + log.error("api模块roll 历史上的今天服务调用失败:{},执行降级处理", cause.getMessage()); + return requestBody -> { + JSONObject jsonObject = new JSONObject(); + jsonObject.put(DEMOTE_ERROR, R.FAIL); + return jsonObject; + }; + } +}