From c0cce9fb0b93b4b1f5a6f6ad9053b5283042c0eb Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Tue, 18 Jan 2022 11:54:04 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E8=8E=B7=E5=8F=96=E8=8A=82=E5=81=87?= =?UTF-8?q?=E6=97=A5=E5=90=8E=E7=AB=AF=E6=8E=A5=E5=8F=A3=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=202=E3=80=81=E4=BF=AE=E6=94=B9=E5=88=A0=E9=99=A4=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E6=95=B0=E6=8D=AEcron=E8=A1=A8=E8=BE=BE=E5=BC=8F?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E6=97=B6=E9=97=B4=203=E3=80=81=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E9=A1=B5=E9=9D=A2=E8=8F=9C=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E7=9B=B8=E5=85=B3=E5=AE=BD=E5=BA=A6=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-ui/src/views/system/menu/index.vue | 908 +++++++++--------- .../controller/ApiToolsController.java | 28 + .../xjs/apitools/factory/ApiToolsFactory.java | 25 +- .../factory/impl/RollHolidayFactory.java | 32 +- .../xjs/apitools/service/ApiToolsService.java | 20 + .../service/impl/ApiToolsServiceImpl.java | 44 + .../api/roll/RollHolidayFeignClient.java | 27 + .../client/api/roll/RollIPFeignClient.java | 2 +- .../client/factory/BaiduFeignFactory.java | 4 +- .../factory/RollHolidayFeignFactory.java | 29 + .../com/xjs/common/task/DeleteRepeatTask.java | 4 +- .../weather/factory/impl/RollIPFactory.java | 2 +- 12 files changed, 656 insertions(+), 469 deletions(-) create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/service/ApiToolsService.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/service/impl/ApiToolsServiceImpl.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/roll/RollHolidayFeignClient.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/RollHolidayFeignFactory.java diff --git a/ruoyi-ui/src/views/system/menu/index.vue b/ruoyi-ui/src/views/system/menu/index.vue index 7fb1c7b6..c1a5c6aa 100644 --- a/ruoyi-ui/src/views/system/menu/index.vue +++ b/ruoyi-ui/src/views/system/menu/index.vue @@ -1,454 +1,454 @@ - - - + + + 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 c49c1e2f..cc6c9240 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 @@ -1,12 +1,24 @@ package com.xjs.apitools.controller; +import cn.hutool.core.collection.CollUtil; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.xjs.apitools.domain.ApiHoliday; +import com.xjs.apitools.service.ApiToolsService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** * api小工具控制器 + * * @author xiejs * @since 2022-01-17 */ @@ -15,4 +27,20 @@ import org.springframework.web.bind.annotation.RestController; @Api(tags = "业务模块-API小工具") @Log4j2 public class ApiToolsController { + + + @Autowired + private ApiToolsService apiToolsService; + + + @GetMapping + @ApiOperation("获取节假日信息") + @Log(title = "获取节假日") + @RequiresPermissions("open:apitools:holiday") + public R> getHolidayApiData() { + List apiHolidayList = apiToolsService.getApiHolidayList(); + return CollUtil.isNotEmpty(apiHolidayList) ? R.ok(apiHolidayList) : R.fail(); + } + + } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/factory/ApiToolsFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/factory/ApiToolsFactory.java index 337bdc91..99c73c54 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/factory/ApiToolsFactory.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/factory/ApiToolsFactory.java @@ -1,6 +1,8 @@ package com.xjs.apitools.factory; +import java.util.List; + /** * api工具工厂接口 * @@ -15,7 +17,15 @@ public interface ApiToolsFactory { * * @return T */ - default T ApiData() { + default T apiData() { + return null; + } + + /** + * 获取api数据工厂方法 (无参) + * @return List + */ + default List apiDataList() { return null; } @@ -25,9 +35,20 @@ public interface ApiToolsFactory { * @param req 请求参数 * @return T */ - default T ApiData(R req) { + default T apiData(R req) { + return null; + } + + /** + * 获取api数据工厂方法 (有参) + * + * @param req 请求参数 + * @return List + */ + default List apiDataList(R req) { return null; } + } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/factory/impl/RollHolidayFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/factory/impl/RollHolidayFactory.java index 03766716..5ecdde19 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/factory/impl/RollHolidayFactory.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/factory/impl/RollHolidayFactory.java @@ -1,31 +1,51 @@ package com.xjs.apitools.factory.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.xjs.apitools.domain.ApiHoliday; import com.xjs.apitools.factory.ApiToolsFactory; +import com.xjs.common.client.api.roll.RollHolidayFeignClient; import com.xjs.config.RollProperties; +import com.xjs.copywriting.domain.RequestBody; 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-17 */ @Component @Log4j2 -public class RollHolidayFactory implements ApiToolsFactory { +public class RollHolidayFactory implements ApiToolsFactory { @Autowired private RollProperties rollProperties; - - + @Autowired + private RollHolidayFeignClient rollHolidayFeignClient; @Override - public ApiHoliday ApiData() { - - + public List apiDataList() { + RequestBody requestBody = new RequestBody(); + requestBody.setApp_id(rollProperties.getApp_id()); + requestBody.setApp_secret(rollProperties.getApp_secret()); + JSONObject jsonObject = rollHolidayFeignClient.holidayApi(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(ApiHoliday.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 new file mode 100644 index 00000000..db49e3c3 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/service/ApiToolsService.java @@ -0,0 +1,20 @@ +package com.xjs.apitools.service; + +import com.xjs.apitools.domain.ApiHoliday; + +import java.util.List; + +/** + * api工具服务接口 + * @author xiejs + * @since 2022-01-18 + */ +public interface ApiToolsService { + + /** + * 获取节假日信息(获取未来节假日,已过的节假日排除) + * @return List + */ + List getApiHolidayList(); + +} 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 new file mode 100644 index 00000000..5afc4cb4 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/apitools/service/impl/ApiToolsServiceImpl.java @@ -0,0 +1,44 @@ +package com.xjs.apitools.service.impl; + +import com.xjs.apitools.domain.ApiHoliday; +import com.xjs.apitools.factory.ApiToolsFactory; +import com.xjs.apitools.factory.impl.RollHolidayFactory; +import com.xjs.apitools.service.ApiToolsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * api工具服务实现 + * + * @author xiejs + * @since 2022-01-18 + */ +@Service +public class ApiToolsServiceImpl implements ApiToolsService { + + private ApiToolsFactory holidayFactory; + + @Autowired + public void setHolidayFactory(RollHolidayFactory rollHolidayFactory) { + this.holidayFactory = rollHolidayFactory; + } + + + @Override + public List getApiHolidayList() { + List apiHolidayList = holidayFactory.apiDataList(); + List collect = apiHolidayList.stream().map(holidayFactory -> { + if (holidayFactory.getResidueDays() >= 0) { + return holidayFactory; + }else { + return null; + } + }).collect(Collectors.toList()); + collect.removeIf(Objects::isNull); + return collect; + } +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/roll/RollHolidayFeignClient.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/roll/RollHolidayFeignClient.java new file mode 100644 index 00000000..3e5d28e0 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/roll/RollHolidayFeignClient.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.common.client.factory.RollHolidayFeignFactory; +import com.xjs.copywriting.domain.RequestBody; +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_HOLIDAYS; +import static com.xjs.consts.ApiConst.ROLL_HOLIDAYS_URL; + +/** + * roll节假日api接口feign远程调用 + * @author xiejs + * @since 2022-01-18 + */ +@FeignClient(name = "rollHoliday", url = ROLL_HOLIDAYS_URL, fallbackFactory = RollHolidayFeignFactory.class) +public interface RollHolidayFeignClient { + + @GetMapping() + @ApiLog(name = ROLL_HOLIDAYS, + url = ROLL_HOLIDAYS_URL, + method = "Get") + JSONObject holidayApi(@SpringQueryMap RequestBody requestBody); +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/roll/RollIPFeignClient.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/roll/RollIPFeignClient.java index 191821e8..0d47392f 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/roll/RollIPFeignClient.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/roll/RollIPFeignClient.java @@ -24,6 +24,6 @@ public interface RollIPFeignClient { @ApiLog(name = ROLL_IP, url = ROLL_IP_URL, method = "Get") - JSONObject IpApi(@SpringQueryMap RequestBody requestBody); + JSONObject ipApi(@SpringQueryMap RequestBody requestBody); } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/BaiduFeignFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/BaiduFeignFactory.java index e691d8ae..8ccb13a7 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/BaiduFeignFactory.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/BaiduFeignFactory.java @@ -10,9 +10,9 @@ import org.springframework.stereotype.Component; import static com.xjs.consts.ApiConst.DEMOTE_ERROR; /** + * 百度翻译平台服务降级处理类 * @author xiejs - * @desc 百度翻译平台服务降级处理类 - * @create 2021-12-28 + * @since 2021-12-28 */ @Log4j2 @Component diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/RollHolidayFeignFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/RollHolidayFeignFactory.java new file mode 100644 index 00000000..f85acd5b --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/RollHolidayFeignFactory.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.RollHolidayFeignClient; +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-18 + */ +@Component +@Log4j2 +public class RollHolidayFeignFactory implements FallbackFactory { + @Override + public RollHolidayFeignClient create(Throwable cause) { + log.error("api模块roll 节假日服务调用失败:{},执行降级处理", cause.getMessage()); + return requestBody -> { + JSONObject jsonObject = new JSONObject(); + jsonObject.put(DEMOTE_ERROR, R.FAIL); + return jsonObject; + }; + } +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/task/DeleteRepeatTask.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/task/DeleteRepeatTask.java index 26cb0910..8b0195f6 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/task/DeleteRepeatTask.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/task/DeleteRepeatTask.java @@ -7,8 +7,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; -import javax.annotation.Resource; - /** * @author xiejs * @desc 删除重复文案数据 @@ -37,7 +35,7 @@ public class DeleteRepeatTask { * 2022-01-07 09:00:00 * 2022-01-07 10:00:00 */ - @Scheduled(cron = "0 0 7-23 * * ? ") + @Scheduled(cron = "0 0 10,14,20 * * ? ") public void execute() { int copyWritingCount = copyWritingService.deleteRepeatData(); log.info("thread id:{},定时清除文案重复数据,重复数:{}", Thread.currentThread().getId(),copyWritingCount); diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/factory/impl/RollIPFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/factory/impl/RollIPFactory.java index 2ffc9735..64f835bd 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/factory/impl/RollIPFactory.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/factory/impl/RollIPFactory.java @@ -41,7 +41,7 @@ public class RollIPFactory implements IPFactory { requestBody.setIp(ip); requestBody.setApp_id(rollProperties.getApp_id()); requestBody.setApp_secret(rollProperties.getApp_secret()); - JSONObject jsonObject = rollIPFeignClient.IpApi(requestBody); + JSONObject jsonObject = rollIPFeignClient.ipApi(requestBody); if (!jsonObject.containsKey(DEMOTE_ERROR) && jsonObject.getInteger("code") == ROLL_CODE_SUCCESS.intValue()) { JSONObject data = jsonObject.getJSONObject("data"); return data.toJavaObject(IPInfoVo.class);