diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteCopyWritingFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteCopyWritingFactory.java index 0b785fd9..32f0a06e 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteCopyWritingFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteCopyWritingFactory.java @@ -20,7 +20,7 @@ public class RemoteCopyWritingFactory implements FallbackFactory R.fail("文案服务调用失败" + cause.getMessage()); } } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingJDTCFeignClient.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingJDTCFeignClient.java new file mode 100644 index 00000000..c2611b12 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingJDTCFeignClient.java @@ -0,0 +1,26 @@ +package com.xjs.common.client; + +import com.alibaba.fastjson.JSONObject; +import com.xjs.common.aop.ApiLog; +import com.xjs.common.client.factory.TianXingJDTCFeignFactory; +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.common.consts.ApiConst.TIANXING_JDTC; + +/** + * @author xiejs + * @desc 天行数据经典台词接口api调用 + * @create 2021-12-29 + */ +@FeignClient(name = "tianXingJDTC",url = "http://api.tianapi.com/dialogue/index?",fallbackFactory = TianXingJDTCFeignFactory.class) +public interface TianXingJDTCFeignClient { + + @GetMapping + @ApiLog(name = TIANXING_JDTC, + url = "http://api.tianapi.com/dialogue/index", + method = "Get") + JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody); +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingWYYFeignClient.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingWYYFeignClient.java index 88ff5005..dbd285a7 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingWYYFeignClient.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingWYYFeignClient.java @@ -18,6 +18,7 @@ import static com.xjs.common.consts.ApiConst.TIANXING_WYY; @FunctionalInterface @FeignClient(name = "tianXingWYY",url = "http://api.tianapi.com/hotreview/index",fallbackFactory = TianXingWYYFeignFactory.class) public interface TianXingWYYFeignClient { + @GetMapping @ApiLog(name = TIANXING_WYY, url = "http://api.tianapi.com/hotreview/index", 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 48981807..110fa00f 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 @@ -16,7 +16,7 @@ import org.springframework.stereotype.Component; public class BaiduFeignFactory implements FallbackFactory { @Override public BaiduFeignClient create(Throwable cause) { - log.error("英语模块百度翻译服务调用失败:{},执行降级处理", cause.getMessage()); + log.error("api模块百度翻译服务调用失败:{},执行降级处理", cause.getMessage()); return qo -> { JSONObject jsonObject = new JSONObject(); //构建一个异常json给下层接口处理 diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingJDTCFeignFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingJDTCFeignFactory.java new file mode 100644 index 00000000..22187a27 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingJDTCFeignFactory.java @@ -0,0 +1,28 @@ +package com.xjs.common.client.factory; + +import com.alibaba.fastjson.JSONObject; +import com.xjs.common.client.TianXingJDTCFeignClient; +import lombok.extern.log4j.Log4j2; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * @author xiejs + * @desc 天行数据经典台词降级处理 + * @create 2021-12-29 + */ +@Component +@Log4j2 +public class TianXingJDTCFeignFactory implements FallbackFactory { + + @Override + public TianXingJDTCFeignClient create(Throwable cause) { + log.error("api模块经典台词服务调用失败:{},执行降级处理", cause.getMessage()); + return requestBody -> { + JSONObject jsonObject = new JSONObject(); + //构建一个异常json给下层接口处理 + jsonObject.put("error", 500); + return jsonObject; + }; + } +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingPYQFeignFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingPYQFeignFactory.java index cf06f38f..b6e2c9c2 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingPYQFeignFactory.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingPYQFeignFactory.java @@ -16,7 +16,7 @@ import org.springframework.stereotype.Component; public class TianXingPYQFeignFactory implements FallbackFactory { @Override public TianXingPYQFeignClient create(Throwable cause) { - log.error("英语模块网易云热评服务调用失败:{},执行降级处理", cause.getMessage()); + log.error("api模块网易云热评服务调用失败:{},执行降级处理", cause.getMessage()); return requestBody -> { JSONObject jsonObject = new JSONObject(); //构建一个异常json给下层接口处理 diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingWYYFeignFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingWYYFeignFactory.java index 30402bc3..e16efd50 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingWYYFeignFactory.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingWYYFeignFactory.java @@ -16,7 +16,7 @@ import org.springframework.stereotype.Component; public class TianXingWYYFeignFactory implements FallbackFactory { @Override public TianXingWYYFeignClient create(Throwable cause) { - log.error("英语模块朋友圈文案服务调用失败:{},执行降级处理", cause.getMessage()); + log.error("api模块朋友圈文案服务调用失败:{},执行降级处理", cause.getMessage()); return requestBody -> { JSONObject jsonObject = new JSONObject(); //构建一个异常json给下层接口处理 diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/YouDaoFeignFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/YouDaoFeignFactory.java index 4407f254..c7203a02 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/YouDaoFeignFactory.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/YouDaoFeignFactory.java @@ -17,7 +17,7 @@ public class YouDaoFeignFactory implements FallbackFactory { @Override public YouDaoFeignClient create(Throwable cause) { - log.error("英语模块有道翻译服务调用失败:{},执行降级处理", cause.getMessage()); + log.error("api模块有道翻译服务调用失败:{},执行降级处理", cause.getMessage()); return qo -> { JSONObject jsonObject = new JSONObject(); //构建一个异常json给下层接口处理 diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/consts/ApiConst.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/consts/ApiConst.java index ecdfb9fb..a7a0e019 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/consts/ApiConst.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/consts/ApiConst.java @@ -13,4 +13,6 @@ public class ApiConst { public static final String TIANXING_PYQ= "天行-朋友圈"; public static final String TIANXING_WYY= "天行-网易云"; + + public static final String TIANXING_JDTC= "天行-经典台词"; } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/consts/TianXingConst.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/consts/TianXingConst.java index 15c6693b..339d5858 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/consts/TianXingConst.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/consts/TianXingConst.java @@ -7,6 +7,10 @@ package com.xjs.common.consts; */ public class TianXingConst { + //朋友圈 public static final Integer PYQ= 1; + //网易云 public static final Integer WYY= 2; + //经典台词 + public static final Integer JDTC= 3; } 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 bc8a9814..f3f13ea4 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 @@ -40,6 +40,8 @@ public class CopyWritingController extends BaseController { @Autowired private CopyWritingFactory tianXingWYYCopyWritingFactory; @Autowired + private CopyWritingFactory tianXingJDTCCopyWritingFactory; + @Autowired private CopyWritingService copyWritingService; @@ -73,6 +75,7 @@ public class CopyWritingController extends BaseController { //添加了新接口只需要在这add接口进去 factories.add(tianXingPYQCopyWritingFactory); factories.add(tianXingWYYCopyWritingFactory); + factories.add(tianXingJDTCCopyWritingFactory); //--------add----------------------------;- //随机调用集合中的接口 return RandomUtil.randomEle(factories); diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/TianXingJDTCCopyWritingFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/TianXingJDTCCopyWritingFactory.java new file mode 100644 index 00000000..b38814d5 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/TianXingJDTCCopyWritingFactory.java @@ -0,0 +1,58 @@ +package com.xjs.copywriting.factory.impl; + +import cn.hutool.http.HttpStatus; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xjs.common.client.TianXingJDTCFeignClient; +import com.xjs.common.config.TianXingProperties; +import com.xjs.common.consts.TianXingConst; +import com.xjs.common.exception.ApiException; +import com.xjs.copywriting.domain.CopyWriting; +import com.xjs.copywriting.domain.RequestBody; +import com.xjs.copywriting.factory.CopyWritingFactory; +import com.xjs.copywriting.mapper.CopyWritingMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @author xiejs + * @desc 天行数据经典台词工厂实现 + * @create 2021-12-29 + */ +@Service +public class TianXingJDTCCopyWritingFactory implements CopyWritingFactory { + @Autowired + private TianXingProperties tianXingProperties; + @Autowired + private TianXingJDTCFeignClient tianXingJDTCFeignClient; + @Resource + private CopyWritingMapper copyWritingMapper; + + @Override + public CopyWriting productCopyWriting(RequestBody requestBody) { + requestBody.setKey(tianXingProperties.getKey()); + JSONObject jsonObject = tianXingJDTCFeignClient.copyWritingApi(requestBody); + if(jsonObject.containsKey("code")){ + if (HttpStatus.HTTP_OK !=jsonObject.getInteger("code")) { + throw new ApiException("天行数据朋友圈文案接口调用异常"); + } + JSONArray newslist = jsonObject.getJSONArray("newslist"); + String dialogue = newslist.getJSONObject(0).getString("dialogue"); + String source = newslist.getJSONObject(0).getString("source"); + CopyWriting copyWriting = new CopyWriting(); + copyWriting.setContent(dialogue); + copyWriting.setSource(source); + copyWriting.setType(TianXingConst.JDTC); + copyWritingMapper.insert(copyWriting); + return copyWriting; + }else { + //调用服务失败的降级之后的处理 + if (jsonObject.containsKey("error")) { + return copyWritingMapper.getOneToNew(); + } + return new CopyWriting(); + } + } +}