From 9bbeb47e53e08096f0fbe102c530392e91ad7d51 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Sun, 16 Jan 2022 22:10:41 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=90=8E=E7=AB=AF=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=AE=9E=E6=97=B6=E5=A4=A9=E6=B0=94=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/api/RemoteCopyWritingFeign.java | 4 +- .../xjs/business/api/RemoteTranDIctFeign.java | 4 +- .../business/api/RemoteTranslationFeign.java | 4 +- .../xjs/business/api/RemoteWeatherFeign.java | 21 ++++++++++ .../api/factory/RemoteWeatherFactory.java | 24 +++++++++++ .../com/xjs/job/task/CopyWritingTask.java | 4 +- .../java/com/xjs/job/task/WeatherTask.java | 41 +++++++++++++++++++ .../weather/controller/WeatherController.java | 17 +++++++- .../xjs/weather/service/WeatherService.java | 6 +++ .../service/impl/WeatherServiceImpl.java | 8 ++++ 10 files changed, 123 insertions(+), 10 deletions(-) create mode 100644 ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteWeatherFeign.java create mode 100644 ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteWeatherFactory.java create mode 100644 ruoyi-modules/ruoyi-job/src/main/java/com/xjs/job/task/WeatherTask.java diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteCopyWritingFeign.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteCopyWritingFeign.java index 6db46845..3e965484 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteCopyWritingFeign.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteCopyWritingFeign.java @@ -8,9 +8,9 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; /** + * RPC远程调用文案接口服务 * @author xiejs - * @desc RPC远程调用文案接口服务 - * @create 2021-12-27 + * @since 2021-12-27 */ @FeignClient(contextId = "remoteCopyWritingFeign", value = ServiceNameConstants.BUSINESS_OPENAPI_SERVICE, diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTranDIctFeign.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTranDIctFeign.java index 2797af72..cee2e81c 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTranDIctFeign.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTranDIctFeign.java @@ -9,9 +9,9 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; /** + * rpc调用翻译字典接口 * @author xiejs - * @desc rpc调用翻译字典接口 - * @create 2021-12-30 + * @since 2021-12-30 */ @FeignClient(contextId = "remoteTranDictFeign", value = ServiceNameConstants.BUSINESS_OPENAPI_SERVICE, diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTranslationFeign.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTranslationFeign.java index 319fe892..500c6c6a 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTranslationFeign.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTranslationFeign.java @@ -9,9 +9,9 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; /** + * rpc远程调用其他服务翻译接口 * @author xiejs - * @desc rpc远程调用其他服务翻译接口 - * @create 2021-12-29 + * @since 2021-12-29 */ @FeignClient(contextId = "remoteTranslationFeign", value = ServiceNameConstants.BUSINESS_OPENAPI_SERVICE, diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteWeatherFeign.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteWeatherFeign.java new file mode 100644 index 00000000..1bd28be7 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteWeatherFeign.java @@ -0,0 +1,21 @@ +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.RemoteWeatherFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +/** + * rpc远程调用其他服务天气接口 + * @author xiejs + * @since 2022-01-16 + */ +@FeignClient(contextId = "remoteTWeatherFeign", + value = ServiceNameConstants.BUSINESS_OPENAPI_SERVICE, + fallbackFactory = RemoteWeatherFactory.class) +public interface RemoteWeatherFeign { + + @GetMapping("/weather/getWeatherForRPC") + R getWeatherForRPC() ; +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteWeatherFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteWeatherFactory.java new file mode 100644 index 00000000..ae7ec7aa --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteWeatherFactory.java @@ -0,0 +1,24 @@ +package com.xjs.business.api.factory; + +import com.ruoyi.common.core.domain.R; +import com.xjs.business.api.RemoteWeatherFeign; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * 内部调用天气服务降级 + * @author xiejs + * @since 2022-01-16 + */ +@Component +public class RemoteWeatherFactory implements FallbackFactory { + private static final Logger log = LoggerFactory.getLogger(RemoteWeatherFactory.class); + + @Override + public RemoteWeatherFeign create(Throwable cause) { + log.error("api模块天气服务调用失败:{}", cause.getMessage()); + return () -> R.fail("天气服务调用失败" + cause.getMessage()); + } +} diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/xjs/job/task/CopyWritingTask.java b/ruoyi-modules/ruoyi-job/src/main/java/com/xjs/job/task/CopyWritingTask.java index b9880cca..38af048e 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/xjs/job/task/CopyWritingTask.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/com/xjs/job/task/CopyWritingTask.java @@ -13,9 +13,9 @@ import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; /** + * 调用文案定时任务 * @author xiejs - * @desc 调用文案定时任务 - * @create 2021-12-27 + * @since 2021-12-27 */ @Component("CopyWritingTask") public class CopyWritingTask { diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/xjs/job/task/WeatherTask.java b/ruoyi-modules/ruoyi-job/src/main/java/com/xjs/job/task/WeatherTask.java new file mode 100644 index 00000000..ae24a59c --- /dev/null +++ b/ruoyi-modules/ruoyi-job/src/main/java/com/xjs/job/task/WeatherTask.java @@ -0,0 +1,41 @@ +package com.xjs.job.task; + +import cn.hutool.core.date.DateUtil; +import com.ruoyi.common.core.domain.R; +import com.xjs.business.api.RemoteWeatherFeign; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; + +/** + * 调用天气定时任务 + * @author xiejs + * @since 2022-01-16 + */ +@Component("WeatherTask") +public class WeatherTask { + + @Resource + private RemoteWeatherFeign remoteWeatherFeign; + + private static final Logger log = LoggerFactory.getLogger(WeatherTask.class); + + /** + * 任务执行 + */ + public void execute() { + LocalDateTime localDateTime1 = DateUtil.date().toLocalDateTime(); + log.info("---------------天气定时任务Start-------------------"); + R r = remoteWeatherFeign.getWeatherForRPC(); + log.info("天气定时任务结果:code={},msg={},data={}",r.getCode(),r.getMsg(),r.getData()); + LocalDateTime localDateTime2 = DateUtil.date().toLocalDateTime(); + long between = ChronoUnit.MILLIS.between(localDateTime1, localDateTime2); + log.info("Job耗费时间:{}ms", between); + log.info("---------------天气定时任务end---------------------"); + } + +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/controller/WeatherController.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/controller/WeatherController.java index f96789a4..8d4634ca 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/controller/WeatherController.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/controller/WeatherController.java @@ -1,6 +1,7 @@ package com.xjs.weather.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.security.annotation.RequiresLogin; import com.xjs.weather.domain.NowWeather; @@ -13,8 +14,11 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.Objects; + /** * 天气控制器 + * * @author xiejs * @since 2022-01-16 */ @@ -27,11 +31,20 @@ public class WeatherController { @Autowired private WeatherService weatherService; + @GetMapping @ApiOperation("获取天气信息") @Log(title = "获取天气") @RequiresLogin - public R getWeatherApiData() { - return R.ok(weatherService.saveNowWeather()); + public AjaxResult getWeatherApiData() { + return AjaxResult.success(weatherService.saveNowWeather()); } + + @GetMapping("getWeatherForRPC") + @ApiOperation("远程调用获取天气信息ForRPC") + public R getWeatherForRPC() { + NowWeather nowWeather = weatherService.save(); + return Objects.nonNull(nowWeather.getCity()) ? R.ok() : R.fail(); + } + } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/service/WeatherService.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/service/WeatherService.java index 7b368887..ffd168a4 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/service/WeatherService.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/service/WeatherService.java @@ -15,5 +15,11 @@ public interface WeatherService { */ NowWeather saveNowWeather(); + /** + * 只保存 + * @return NowWeather + */ + NowWeather save(); + } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/service/impl/WeatherServiceImpl.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/service/impl/WeatherServiceImpl.java index 9e361c50..8260b8f7 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/service/impl/WeatherServiceImpl.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/weather/service/impl/WeatherServiceImpl.java @@ -12,6 +12,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.TimeUnit; import static com.xjs.consts.RedisConst.NOW_WEATHER; @@ -51,5 +52,12 @@ public class WeatherServiceImpl implements WeatherService { } } + @Override + public NowWeather save() { + NowWeather nowWeather = Optional.ofNullable(gaodeNowWeatherFactory.weatherApi()).orElseGet(NowWeather::new); + nowWeatherMapper.insert(nowWeather); + return nowWeather; + } + }