diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTopSearchFeign.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTopSearchFeign.java new file mode 100644 index 00000000..32510316 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTopSearchFeign.java @@ -0,0 +1,26 @@ +package com.xjs.business.api; + +import com.ruoyi.common.core.constant.ServiceNameConstants; +import com.ruoyi.common.core.domain.R; +import com.xjs.business.api.factory.RemoteTopSearchFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.List; +import java.util.Map; + +/** + * 获取热搜榜内部远程调用feign + * + * @author xiejs + * @since 2022-01-26 + */ +@FeignClient(contextId = "remoteTopSearchFeign", + value = ServiceNameConstants.BUSINESS_OPENAPI_SERVICE, + fallbackFactory = RemoteTopSearchFactory.class) +public interface RemoteTopSearchFeign { + + + @GetMapping("/topsearch/getTopsearchForRPC") + R> topSearchForRPC(); +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteTopSearchFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteTopSearchFactory.java new file mode 100644 index 00000000..6a70c3a4 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteTopSearchFactory.java @@ -0,0 +1,30 @@ +package com.xjs.business.api.factory; + +import com.ruoyi.common.core.domain.R; +import com.xjs.business.api.RemoteTopSearchFeign; +import lombok.extern.log4j.Log4j2; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; + +/** + * @author xiejs + * @since 2022-01-26 + */ +@Component +@Log4j2 +public class RemoteTopSearchFactory implements FallbackFactory { + + @Override + public RemoteTopSearchFeign create(Throwable cause) { + return new RemoteTopSearchFeign() { + @Override + public R> topSearchForRPC() { + log.error("api模块获取热搜服务调用失败:{}", cause.getMessage()); + return R.fail("文案服务调用失败" + cause.getMessage()); + } + }; + } +} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/xjs/job/task/TopSearchTask.java b/ruoyi-modules/ruoyi-job/src/main/java/com/xjs/job/task/TopSearchTask.java new file mode 100644 index 00000000..75f3cc73 --- /dev/null +++ b/ruoyi-modules/ruoyi-job/src/main/java/com/xjs/job/task/TopSearchTask.java @@ -0,0 +1,44 @@ +package com.xjs.job.task; + +import cn.hutool.core.date.DateUtil; +import com.ruoyi.common.core.domain.R; +import com.xjs.business.api.RemoteTopSearchFeign; +import lombok.extern.log4j.Log4j2; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.List; +import java.util.Map; + +/** + * 热搜榜定时任务 + * @author xiejs + * @since 2022-01-26 + */ +@Component("TopSearchTask") +@Log4j2 +public class TopSearchTask { + + @Resource + private RemoteTopSearchFeign remoteTopSearchFeign; + + /** + * 定时获取热搜榜 + */ + public void getTopSearch() { + log.info("---------------热搜榜定时任务Start-------------------"); + LocalDateTime localDateTime1 = DateUtil.date().toLocalDateTime(); + + R> mapR = remoteTopSearchFeign.topSearchForRPC(); + log.info("热搜榜定时任务结果:code={},msg={}",mapR.getCode(),mapR.getMsg()); + + LocalDateTime localDateTime2 = DateUtil.date().toLocalDateTime(); + long between = ChronoUnit.MILLIS.between(localDateTime1, localDateTime2); + log.info("热搜榜定时任务Job耗费时间:{}ms", between); + log.info("---------------热搜榜定时任务end---------------------"); + + } + +} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/xjs/job/task/WarningTask.java b/ruoyi-modules/ruoyi-job/src/main/java/com/xjs/job/task/WarningTask.java index 0a7f71cd..73ce21a2 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/xjs/job/task/WarningTask.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/com/xjs/job/task/WarningTask.java @@ -45,7 +45,7 @@ public class WarningTask { }); LocalDateTime localDateTime2 = DateUtil.date().toLocalDateTime(); long between = ChronoUnit.MILLIS.between(localDateTime1, localDateTime2); - log.info("文案定时任务Job耗费时间:{}ms", between); + log.info("预警次数初始化定时任务Job耗费时间:{}ms", between); log.info("---------------预警次数初始化定时任务end---------------------"); } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/task/OpenApiTask.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/task/OpenApiTask.java deleted file mode 100644 index c7da96b3..00000000 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/task/OpenApiTask.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.xjs.common.task; - -import com.xjs.copywriting.service.CopyWritingService; -import com.xjs.topsearch.service.*; -import lombok.extern.log4j.Log4j2; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -/** - * openapi模块内置定时任务 - * @author xiejs - * @since 2022-01-06 - */ -@Component -@Log4j2 -public class OpenApiTask { - @Autowired - private CopyWritingService copyWritingService; - - @Autowired - private TopSearchService topSearchService; - - - /** - * 删除重复文案数据
- * 2022-01-07 07:00:00
- * 2022-01-07 08:00:00
- * 2022-01-07 09:00:00
- * 2022-01-07 10:00:00
- */ - @Scheduled(cron = "0 0 10,14,20 * * ? ") - public void deleteRepeat() { - int copyWritingCount = copyWritingService.deleteRepeatData(); - log.info("thread id:{},定时清除文案重复数据,重复数:{}", Thread.currentThread().getId(),copyWritingCount); - Integer integer = topSearchService.deleteRepeatData(); - log.info("thread id:{},定时清除重复数据总数,重复数:{}", Thread.currentThread().getId(),integer); - - } - - /** - * 定时获取热搜榜
- * 2022-01-22 11:11:00
- * 2022-01-22 11:22:00
- * 2022-01-22 11:33:00
- * 2022-01-22 11:44:00
- * 2022-01-22 11:55:00
- */ - @Scheduled(cron = "0 0/11 * * * ? ") - public void getTopSearch() { - log.info("thread id:{},定时获取热搜榜数据", Thread.currentThread().getId()); - topSearchService.getAllTopSearch(); - } -} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/controller/CopyWritingController.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/controller/CopyWritingController.java index d16b2867..1d6dec7d 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/controller/CopyWritingController.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/controller/CopyWritingController.java @@ -16,6 +16,7 @@ import com.xjs.copywriting.factory.CopyWritingFactory; import com.xjs.copywriting.service.CopyWritingService; 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.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -33,6 +34,7 @@ import java.util.Optional; @RestController @RequestMapping("copyWriting") @Api(tags = "业务模块-文案管理") +@Log4j2 public class CopyWritingController extends BaseController { @Autowired @@ -66,6 +68,11 @@ public class CopyWritingController extends BaseController { public R copyWriting() { CopyWritingFactory copyWritingFactory = this.randomApi(); CopyWriting copyWriting = this.handlerException(copyWritingFactory, new RequestBody()); + + //清理重复内容 + int i = copyWritingService.deleteRepeatData(); + log.info("清理文案重复数:"+i); + return R.ok(copyWriting); } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/controller/ApiTopSearchController.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/controller/ApiTopSearchController.java index 0727be58..7b52f404 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/controller/ApiTopSearchController.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/controller/ApiTopSearchController.java @@ -1,5 +1,6 @@ package com.xjs.topsearch.controller; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.redis.service.RedisService; @@ -65,4 +66,13 @@ public class ApiTopSearchController { } + //-----------------------内部远程调用rpc------------------------------------- + @GetMapping("getTopsearchForRPC") + @ApiOperation("内部远程调用热搜榜接口") + public R> topSearchForRPC() { + Map map = topSearchService.getAllTopSearch(); + return R.ok(map); + } + + } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/TopSearchService.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/TopSearchService.java index 14c003b9..8f41730e 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/TopSearchService.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/TopSearchService.java @@ -11,7 +11,7 @@ import java.util.Map; public interface TopSearchService { /** - * 获取所有热搜 + * 获取所有热搜(内含插入) * @return */ Map getAllTopSearch(); diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/impl/TopSearchServiceImpl.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/impl/TopSearchServiceImpl.java index c0241eb0..24ca2781 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/impl/TopSearchServiceImpl.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/topsearch/service/impl/TopSearchServiceImpl.java @@ -64,6 +64,10 @@ public class TopSearchServiceImpl implements TopSearchService { listHashMap.put("baiduList", baiduList); listHashMap.put("weiboList", weiboList); listHashMap.put("douyinList", douyinList); + + //清理重复数据 + this.deleteRepeatData(); + return listHashMap; } diff --git a/xjs-business/xjs-business-openapi/src/test/java/com/xjs/common/task/OpenApiTaskTest.java b/xjs-business/xjs-business-openapi/src/test/java/com/xjs/common/task/OpenApiTaskTest.java deleted file mode 100644 index 56631380..00000000 --- a/xjs-business/xjs-business-openapi/src/test/java/com/xjs/common/task/OpenApiTaskTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.xjs.common.task; - -import com.xjs.XjsOpenApiApp; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; - -/** - * @author xiejs - * @since 2022-01-12 - */ -@SpringBootTest(classes = XjsOpenApiApp.class) -class OpenApiTaskTest { - @Autowired - private OpenApiTask openApiTask; - - @Test - void execute() { - openApiTask.deleteRepeat(); - } -} \ No newline at end of file diff --git a/xjs-business/xjs-business-warning/src/main/java/com/xjs/task/WarningTask.java b/xjs-business/xjs-business-warning/src/main/java/com/xjs/task/WarningTask.java deleted file mode 100644 index 7e12d53c..00000000 --- a/xjs-business/xjs-business-warning/src/main/java/com/xjs/task/WarningTask.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.xjs.task; - -import com.xjs.domain.ApiRecord; -import com.xjs.handler.RecordDateHandler; -import com.xjs.service.ApiWarningService; -import lombok.extern.log4j.Log4j2; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * 预警相关定时任务 - * @author xiejs - * @since 2022-01-21 - */ -@Component -@Log4j2 -public class WarningTask extends RecordDateHandler { - - @Autowired - private ApiWarningService apiWarningService; - - /** - * 处理预警api信息的每天调用次数
- * 最近10次运行:
- * 2022-01-22 00:00:10
- * 2022-01-23 00:00:10
- * 2022-01-24 00:00:10
- * 2022-01-25 00:00:10
- * 2022-01-26 00:00:10
- * 2022-01-27 00:00:10
- * 2022-01-28 00:00:10
- * 2022-01-29 00:00:10
- * 2022-01-30 00:00:10
- * 2022-01-31 00:00:10
- */ - @Scheduled(cron = "10 0 0 * * ? ") - public void handleRecordDate() { - List apiRecordList = apiWarningService.selectApiRecordList(new ApiRecord()); - List handleDate = super.handleDate(apiRecordList); - handleDate.forEach(data ->{ - apiWarningService.updateApiRecordByUrl(data); - }); - log.info("定时任务处理预警api信息的每天调用次数完毕"); - } - - -}