diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/english/api/RemoteCopyWritingFeign.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/english/api/RemoteCopyWritingFeign.java index b8801b71..2530327b 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/english/api/RemoteCopyWritingFeign.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/english/api/RemoteCopyWritingFeign.java @@ -12,7 +12,10 @@ import org.springframework.web.bind.annotation.GetMapping; * @desc RPC远程调用文案接口服务 * @create 2021-12-27 */ -@FeignClient(contextId = "remoteCopyWritingFeign", value = ServiceNameConstants.BUSINESS_ENGLISH_SERVICE, fallbackFactory = RemoteCopyWritingFactory.class) +@FeignClient(contextId = "remoteCopyWritingFeign", + value = ServiceNameConstants.BUSINESS_ENGLISH_SERVICE, + fallbackFactory = RemoteCopyWritingFactory.class) +@FunctionalInterface public interface RemoteCopyWritingFeign { /** * 获取文案 diff --git a/ruoyi-api/ruoyi-api-system/src/main/resources/rebel.xml b/ruoyi-api/ruoyi-api-system/src/main/resources/rebel.xml new file mode 100644 index 00000000..b40a7b1c --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + ruoyi-api-system + + + + + + + diff --git a/ruoyi-auth/src/main/resources/rebel.xml b/ruoyi-auth/src/main/resources/rebel.xml new file mode 100644 index 00000000..299d176d --- /dev/null +++ b/ruoyi-auth/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + ruoyi-auth + + + + + + + diff --git a/ruoyi-common/ruoyi-common-core/src/main/resources/rebel.xml b/ruoyi-common/ruoyi-common-core/src/main/resources/rebel.xml new file mode 100644 index 00000000..c2de2081 --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + ruoyi-common-core + + + + + + + diff --git a/ruoyi-common/ruoyi-common-datascope/src/main/resources/rebel.xml b/ruoyi-common/ruoyi-common-datascope/src/main/resources/rebel.xml new file mode 100644 index 00000000..39f2d6da --- /dev/null +++ b/ruoyi-common/ruoyi-common-datascope/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + ruoyi-common-datascope + + + + + + + diff --git a/ruoyi-common/ruoyi-common-datasource/src/main/resources/rebel.xml b/ruoyi-common/ruoyi-common-datasource/src/main/resources/rebel.xml new file mode 100644 index 00000000..af4c7aa8 --- /dev/null +++ b/ruoyi-common/ruoyi-common-datasource/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + ruoyi-common-datasource + + + + + + + diff --git a/ruoyi-common/ruoyi-common-log/src/main/resources/rebel.xml b/ruoyi-common/ruoyi-common-log/src/main/resources/rebel.xml new file mode 100644 index 00000000..bbff4d29 --- /dev/null +++ b/ruoyi-common/ruoyi-common-log/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + ruoyi-common-log + + + + + + + diff --git a/ruoyi-common/ruoyi-common-redis/src/main/resources/rebel.xml b/ruoyi-common/ruoyi-common-redis/src/main/resources/rebel.xml new file mode 100644 index 00000000..da34870c --- /dev/null +++ b/ruoyi-common/ruoyi-common-redis/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + ruoyi-common-redis + + + + + + + diff --git a/ruoyi-common/ruoyi-common-security/src/main/resources/rebel.xml b/ruoyi-common/ruoyi-common-security/src/main/resources/rebel.xml new file mode 100644 index 00000000..9c320a5e --- /dev/null +++ b/ruoyi-common/ruoyi-common-security/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + ruoyi-common-security + + + + + + + diff --git a/ruoyi-common/ruoyi-common-swagger/src/main/resources/rebel.xml b/ruoyi-common/ruoyi-common-swagger/src/main/resources/rebel.xml new file mode 100644 index 00000000..4ccb666e --- /dev/null +++ b/ruoyi-common/ruoyi-common-swagger/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + ruoyi-common-swagger + + + + + + + diff --git a/ruoyi-gateway/src/main/resources/rebel.xml b/ruoyi-gateway/src/main/resources/rebel.xml new file mode 100644 index 00000000..4326bc90 --- /dev/null +++ b/ruoyi-gateway/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + ruoyi-gateway + + + + + + + diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/rebel.xml b/ruoyi-modules/ruoyi-file/src/main/resources/rebel.xml new file mode 100644 index 00000000..d3b542af --- /dev/null +++ b/ruoyi-modules/ruoyi-file/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + ruoyi-modules-file + + + + + + + diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/rebel.xml b/ruoyi-modules/ruoyi-gen/src/main/resources/rebel.xml new file mode 100644 index 00000000..c1eb8ad3 --- /dev/null +++ b/ruoyi-modules/ruoyi-gen/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + ruoyi-modules-gen + + + + + + + diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/rebel.xml b/ruoyi-modules/ruoyi-job/src/main/resources/rebel.xml new file mode 100644 index 00000000..685658e3 --- /dev/null +++ b/ruoyi-modules/ruoyi-job/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + ruoyi-modules-job + + + + + + + diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/rebel.xml b/ruoyi-modules/ruoyi-system/src/main/resources/rebel.xml new file mode 100644 index 00000000..92292d97 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + ruoyi-modules-system + + + + + + + diff --git a/ruoyi-visual/ruoyi-monitor/src/main/resources/rebel.xml b/ruoyi-visual/ruoyi-monitor/src/main/resources/rebel.xml new file mode 100644 index 00000000..b5d26285 --- /dev/null +++ b/ruoyi-visual/ruoyi-monitor/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + ruoyi-visual-monitor + + + + + + + diff --git a/xjs-business/pom.xml b/xjs-business/pom.xml index 71c08350..a592ab4a 100644 --- a/xjs-business/pom.xml +++ b/xjs-business/pom.xml @@ -13,6 +13,7 @@ xjs-business pom 业务模块 + 业务模块 xjs-business-english diff --git a/xjs-business/xjs-business-english/pom.xml b/xjs-business/xjs-business-english/pom.xml index 0e50a38c..4f10cf7d 100644 --- a/xjs-business/xjs-business-english/pom.xml +++ b/xjs-business/xjs-business-english/pom.xml @@ -8,6 +8,7 @@ 3.3.0 4.0.0 + 业务模块-英语模块 xjs-business-english diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/common/aop/ApiLogAspect.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/aop/ApiLogAspect.java index c444135a..6d6807ed 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/common/aop/ApiLogAspect.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/aop/ApiLogAspect.java @@ -16,7 +16,7 @@ import java.util.Optional; /** * @author xiejs - * @desc + * @desc api日志切面类 * @create 2021-12-26 */ @Component diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/TianXingFeignClient.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/TianXingFeignClient.java index 37ec44b4..3aab4c25 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/TianXingFeignClient.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/TianXingFeignClient.java @@ -2,6 +2,7 @@ package com.xjs.common.client; import com.alibaba.fastjson.JSONObject; import com.xjs.common.aop.ApiLog; +import com.xjs.common.client.factory.TianXingFeignFactory; import com.xjs.copywriting.domain.RequestBody; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.SpringQueryMap; @@ -12,7 +13,7 @@ import org.springframework.web.bind.annotation.GetMapping; * @desc 天行数据朋友圈文案接口api调用 * @create 2021-12-27 */ -@FeignClient(name = "tianXing",url = "http://api.tianapi.com/pyqwenan/index") +@FeignClient(name = "tianXing",url = "http://api.tianapi.com/pyqwenan/index",fallbackFactory = TianXingFeignFactory.class) public interface TianXingFeignClient { @GetMapping diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/factory/TianXingFeignFactory.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/factory/TianXingFeignFactory.java new file mode 100644 index 00000000..73d1ec4c --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/factory/TianXingFeignFactory.java @@ -0,0 +1,48 @@ +package com.xjs.common.client.factory; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.xjs.common.client.TianXingFeignClient; +import com.xjs.copywriting.domain.CopyWriting; +import com.xjs.copywriting.domain.RequestBody; +import com.xjs.copywriting.service.CopyWritingService; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * @author xiejs + * @desc 天行数据平台接口降级处理 + * @create 2021-12-28 + */ +@Log4j2 +@Component +public class TianXingFeignFactory implements FallbackFactory { + @Autowired + private CopyWritingService copyWritingService; + + @Override + public TianXingFeignClient create(Throwable cause) { + log.error("英语模块文案服务调用失败:{},执行降级处理", cause.getMessage()); + //没用拉姆达考虑后面该feign接口还会调用其他api接口 + return new TianXingFeignClient() { + @Override + public JSONObject copyWritingApi(RequestBody requestBody) { + CopyWriting copyWriting = copyWritingService.getOneToRandom(); + String jsonString = JSON.toJSONString(copyWriting); + return JSONObject.parseObject(jsonString); + } + }; + } + + + + + + + + + + +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/CopyWritingController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/CopyWritingController.java index 1c537658..83451047 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/CopyWritingController.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/CopyWritingController.java @@ -9,6 +9,7 @@ import com.ruoyi.common.security.annotation.RequiresPermissions; import com.xjs.copywriting.domain.CopyWriting; import com.xjs.copywriting.domain.RequestBody; import com.xjs.copywriting.factory.CopyWritingFactory; +import com.xjs.copywriting.service.CopyWritingService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -32,6 +33,15 @@ public class CopyWritingController { @Autowired private CopyWritingFactory tianXingcopyWritingFactory; + @Autowired + private CopyWritingService copyWritingService; + + //todo 文案管理前端页面, + // 第三方api服务降级, + // 分析错误状态码(天行数据), + // 天行数据整合一个菜单, + // 实现其他天行数据接口, + // 实现其他朋友圈文案api, @GetMapping @ApiOperation("文案接口") @@ -41,7 +51,7 @@ public class CopyWritingController { public AjaxResult copyWriting(@Validated RequestBody requestBody) { requestBody = Optional.ofNullable(requestBody).orElseGet(RequestBody::new); CopyWritingFactory copyWritingFactory = this.randomApi(); - CopyWriting copyWriting = copyWritingFactory.productCopyWriting(requestBody); + CopyWriting copyWriting = this.handlerException(copyWritingFactory, requestBody); return AjaxResult.success(copyWriting); } @@ -50,7 +60,8 @@ public class CopyWritingController { @ApiOperation("供定时任务服务RPC远程调用") public R copyWriting() { CopyWritingFactory copyWritingFactory = this.randomApi(); - return R.ok(copyWritingFactory.productCopyWriting(new RequestBody())); + CopyWriting copyWriting = this.handlerException(copyWritingFactory, new RequestBody()); + return R.ok(copyWriting); } @@ -68,6 +79,26 @@ public class CopyWritingController { } + /** + * 捕获apiException异常,直接从数据库查询值然后返回 + * @param copyWritingFactory 工厂 + * @param requestBody 请求参数 + * @return 返回对象 + */ + private CopyWriting handlerException(CopyWritingFactory copyWritingFactory, RequestBody requestBody) { + CopyWriting copyWriting = null; + try { + copyWriting = copyWritingFactory.productCopyWriting(requestBody); + return copyWriting; + } catch (Exception e) { + e.printStackTrace(); + copyWriting = copyWritingService.getOneToRandom(); + return copyWriting; + } + } + + + diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/mapper/CopyWritingMapper.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/mapper/CopyWritingMapper.java index 433525df..0ca14e40 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/mapper/CopyWritingMapper.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/mapper/CopyWritingMapper.java @@ -9,4 +9,16 @@ import com.xjs.copywriting.domain.CopyWriting; * @create 2021-12-27 */ public interface CopyWritingMapper extends BaseMapper { + /** + * 获取数据库最新一条数据(根据时间分组) + * @return CopyWriting + */ + CopyWriting getOneToNew(); + + /** + * 从数据库随机获取一条数据 + * @return CopyWriting + */ + CopyWriting getOneToRandom(); + } diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/service/CopyWritingService.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/service/CopyWritingService.java new file mode 100644 index 00000000..9bf62be6 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/service/CopyWritingService.java @@ -0,0 +1,24 @@ +package com.xjs.copywriting.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.xjs.copywriting.domain.CopyWriting; + +/** + * @author xiejs + * @desc 文案服务接口 + * @create 2021-12-28 + */ +public interface CopyWritingService extends IService { + + /** + * 获取数据库最新一条数据(根据时间分组) + * @return CopyWriting + */ + CopyWriting getOneToNew(); + + /** + * 从数据库随机获取一条数据 + * @return CopyWriting + */ + CopyWriting getOneToRandom(); +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/service/impl/CopyWritingServiceImpl.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/service/impl/CopyWritingServiceImpl.java new file mode 100644 index 00000000..cd167c11 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/service/impl/CopyWritingServiceImpl.java @@ -0,0 +1,30 @@ +package com.xjs.copywriting.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xjs.copywriting.domain.CopyWriting; +import com.xjs.copywriting.mapper.CopyWritingMapper; +import com.xjs.copywriting.service.CopyWritingService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @author xiejs + * @desc + * @create 2021-12-28 + */ +@Service +public class CopyWritingServiceImpl extends ServiceImpl implements CopyWritingService{ + @Resource + private CopyWritingMapper copyWritingMapper; + + @Override + public CopyWriting getOneToNew() { + return copyWritingMapper.getOneToNew(); + } + + @Override + public CopyWriting getOneToRandom() { + return copyWritingMapper.getOneToRandom(); + } +} diff --git a/xjs-business/xjs-business-english/src/main/resources/mapper/english/CopyWritingMapper.xml b/xjs-business/xjs-business-english/src/main/resources/mapper/english/CopyWritingMapper.xml new file mode 100644 index 00000000..33ea1542 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/resources/mapper/english/CopyWritingMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/xjs-business/xjs-business-english/src/main/resources/rebel.xml b/xjs-business/xjs-business-english/src/main/resources/rebel.xml new file mode 100644 index 00000000..2ac5b89c --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + xjs-business-english + + + + + + +