From de097be0e9907e69a27aae06cda24edcb8f7bedf Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Tue, 28 Dec 2021 20:03:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A1=E3=80=81=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E7=BD=91=E6=98=93=E4=BA=91=E7=83=AD=E8=AF=84=E7=AC=AC?= =?UTF-8?q?=E4=B8=89=E6=96=B9api=E6=8E=A5=E5=8F=A3=E5=8F=8A=E9=99=8D?= =?UTF-8?q?=E7=BA=A7=E5=A4=84=E7=90=86=20=20=20=20=20=202=E3=80=81?= =?UTF-8?q?=E5=9C=A8=E7=8A=B6=E6=80=81=E6=9E=9A=E4=B8=BE=E7=B1=BB=E4=B8=AD?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E4=BA=86=E6=96=87=E6=A1=88=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...lient.java => TianXingPYQFeignClient.java} | 6 +- .../common/client/TianXingWYYFeignClient.java | 24 ++++++++ ...tory.java => TianXingPYQFeignFactory.java} | 11 ++-- .../factory/TianXingWYYFeignFactory.java | 27 +++++++++ .../java/com/xjs/common/enums/StatusEnum.java | 5 +- .../controller/CopyWritingController.java | 7 ++- .../xjs/copywriting/domain/CopyWriting.java | 4 ++ ...ava => TianXingPYQCopyWritingFactory.java} | 12 ++-- .../impl/TianXingWYYCopyWritingFactory.java | 60 +++++++++++++++++++ ...TianXingPYQCopyWritingFactoryTestJob.java} | 2 +- 10 files changed, 140 insertions(+), 18 deletions(-) rename xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/{TianXingFeignClient.java => TianXingPYQFeignClient.java} (73%) create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/TianXingWYYFeignClient.java rename xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/factory/{TianXingFeignFactory.java => TianXingPYQFeignFactory.java} (61%) create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/factory/TianXingWYYFeignFactory.java rename xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/factory/impl/{TianXingCopyWritingFactory.java => TianXingPYQCopyWritingFactory.java} (81%) create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/factory/impl/TianXingWYYCopyWritingFactory.java rename xjs-business/xjs-business-english/src/test/java/com/xjs/copywriting/factory/impl/{TianXingCopyWritingFactoryTestJob.java => TianXingPYQCopyWritingFactoryTestJob.java} (93%) 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/TianXingPYQFeignClient.java similarity index 73% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/TianXingFeignClient.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/TianXingPYQFeignClient.java index 3a0d3377..6e3ebf9a 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/TianXingPYQFeignClient.java @@ -2,7 +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.common.client.factory.TianXingPYQFeignFactory; import com.xjs.copywriting.domain.RequestBody; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.SpringQueryMap; @@ -14,8 +14,8 @@ import org.springframework.web.bind.annotation.GetMapping; * @create 2021-12-27 */ @FunctionalInterface -@FeignClient(name = "tianXing",url = "http://api.tianapi.com/pyqwenan/index",fallbackFactory = TianXingFeignFactory.class) -public interface TianXingFeignClient { +@FeignClient(name = "tianXingPYQ",url = "http://api.tianapi.com/pyqwenan/index",fallbackFactory = TianXingPYQFeignFactory.class) +public interface TianXingPYQFeignClient { @GetMapping @ApiLog(name = "tianXing", diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/TianXingWYYFeignClient.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/TianXingWYYFeignClient.java new file mode 100644 index 00000000..da1240bc --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/TianXingWYYFeignClient.java @@ -0,0 +1,24 @@ +package com.xjs.common.client; + +import com.alibaba.fastjson.JSONObject; +import com.xjs.common.aop.ApiLog; +import com.xjs.common.client.factory.TianXingWYYFeignFactory; +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; + +/** + * @author xiejs + * @desc 天行数据网易云热评接口api调用 + * @create 2021-12-28 + */ +@FunctionalInterface +@FeignClient(name = "tianXingWYY",url = "http://api.tianapi.com/hotreview/index",fallbackFactory = TianXingWYYFeignFactory.class) +public interface TianXingWYYFeignClient { + @GetMapping + @ApiLog(name = "tianXing", + url = "http://api.tianapi.com/hotreview/index", + method = "Get") + JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody); +} 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/TianXingPYQFeignFactory.java similarity index 61% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/factory/TianXingFeignFactory.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/factory/TianXingPYQFeignFactory.java index 6e3139d9..cf06f38f 100644 --- 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/TianXingPYQFeignFactory.java @@ -1,23 +1,22 @@ package com.xjs.common.client.factory; import com.alibaba.fastjson.JSONObject; -import com.xjs.common.client.TianXingFeignClient; +import com.xjs.common.client.TianXingPYQFeignClient; import lombok.extern.log4j.Log4j2; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; /** * @author xiejs - * @desc 天行数据平台接口降级处理 + * @desc 天行数据平台朋友圈文案接口降级处理 * @create 2021-12-28 */ @Log4j2 @Component -public class TianXingFeignFactory implements FallbackFactory { - +public class TianXingPYQFeignFactory implements FallbackFactory { @Override - public TianXingFeignClient create(Throwable cause) { - log.error("英语模块文案服务调用失败:{},执行降级处理", cause.getMessage()); + public TianXingPYQFeignClient create(Throwable cause) { + log.error("英语模块网易云热评服务调用失败:{},执行降级处理", cause.getMessage()); return requestBody -> { JSONObject jsonObject = new JSONObject(); //构建一个异常json给下层接口处理 diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/factory/TianXingWYYFeignFactory.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/factory/TianXingWYYFeignFactory.java new file mode 100644 index 00000000..30402bc3 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/factory/TianXingWYYFeignFactory.java @@ -0,0 +1,27 @@ +package com.xjs.common.client.factory; + +import com.alibaba.fastjson.JSONObject; +import com.xjs.common.client.TianXingWYYFeignClient; +import lombok.extern.log4j.Log4j2; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * @author xiejs + * @desc 天行数据平台网易云热评接口降级处理 + * @create 2021-12-28 + */ +@Log4j2 +@Component +public class TianXingWYYFeignFactory implements FallbackFactory { + @Override + public TianXingWYYFeignClient create(Throwable cause) { + log.error("英语模块朋友圈文案服务调用失败:{},执行降级处理", cause.getMessage()); + return requestBody -> { + JSONObject jsonObject = new JSONObject(); + //构建一个异常json给下层接口处理 + jsonObject.put("error", 500); + return jsonObject; + }; + } +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/common/enums/StatusEnum.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/enums/StatusEnum.java index 85329a30..697948b9 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/common/enums/StatusEnum.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/enums/StatusEnum.java @@ -11,7 +11,9 @@ import com.fasterxml.jackson.annotation.JsonValue; public enum StatusEnum { SUCCESS(1,"成功"), - ERROR(2,"失败"); + ERROR(2,"失败"), + PYQ(1,"朋友圈文案"), + WYY(2,"网易云热评"); private String desc; @@ -25,6 +27,7 @@ public enum StatusEnum { this.desc = desc; } + @Override public String toString() { return desc; diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/controller/CopyWritingController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/controller/CopyWritingController.java index 8fd5e384..f84db3c5 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/controller/CopyWritingController.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/controller/CopyWritingController.java @@ -32,7 +32,9 @@ import java.util.Optional; public class CopyWritingController { @Autowired - private CopyWritingFactory tianXingcopyWritingFactory; + private CopyWritingFactory tianXingPYQCopyWritingFactory; + @Autowired + private CopyWritingFactory tianXingWYYCopyWritingFactory; @Autowired private CopyWritingService copyWritingService; @@ -70,7 +72,8 @@ public class CopyWritingController { private CopyWritingFactory randomApi() { ArrayList factories = new ArrayList<>(); //添加了新接口只需要在这add接口进去 - factories.add(tianXingcopyWritingFactory); + factories.add(tianXingPYQCopyWritingFactory); + factories.add(tianXingWYYCopyWritingFactory); //--------add----------------------------;- //随机调用集合中的接口 return RandomUtil.randomEle(factories); diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/domain/CopyWriting.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/domain/CopyWriting.java index 050e1d65..eacbc1c0 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/domain/CopyWriting.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/domain/CopyWriting.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.ruoyi.common.core.annotation.Excel; +import com.xjs.common.enums.StatusEnum; import lombok.Data; import java.io.Serializable; @@ -35,4 +36,7 @@ public class CopyWriting implements Serializable { @Excel(name = "创建时间") @TableField(fill = FieldFill.INSERT) private Date createTime; + + @Excel(name = "文案类型") + private StatusEnum type; } diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/factory/impl/TianXingCopyWritingFactory.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/factory/impl/TianXingPYQCopyWritingFactory.java similarity index 81% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/factory/impl/TianXingCopyWritingFactory.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/factory/impl/TianXingPYQCopyWritingFactory.java index 2bee7c73..bf570953 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/factory/impl/TianXingCopyWritingFactory.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/factory/impl/TianXingPYQCopyWritingFactory.java @@ -3,8 +3,9 @@ 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.TianXingFeignClient; +import com.xjs.common.client.TianXingPYQFeignClient; import com.xjs.common.config.TianXingProperties; +import com.xjs.common.enums.StatusEnum; import com.xjs.common.exception.ApiException; import com.xjs.copywriting.domain.CopyWriting; import com.xjs.copywriting.domain.RequestBody; @@ -17,23 +18,23 @@ import javax.annotation.Resource; /** * @author xiejs - * @desc 天行数据平台工厂实现 + * @desc 天行数据朋友圈文案平台工厂实现 * @create 2021-12-27 */ @Service -public class TianXingCopyWritingFactory implements CopyWritingFactory { +public class TianXingPYQCopyWritingFactory implements CopyWritingFactory { @Autowired private TianXingProperties tianXingProperties; @Autowired - private TianXingFeignClient tianXingFeignClient; + private TianXingPYQFeignClient tianXingPYQFeignClient; @Resource private CopyWritingMapper copyWritingMapper; @Override public CopyWriting productCopyWriting(RequestBody requestBody) { requestBody.setKey(tianXingProperties.getKey()); - JSONObject jsonObject = tianXingFeignClient.copyWritingApi(requestBody); + JSONObject jsonObject = tianXingPYQFeignClient.copyWritingApi(requestBody); //调用服务正常 if(jsonObject.containsKey("code")){ if (HttpStatus.HTTP_OK !=jsonObject.getInteger("code")) { @@ -45,6 +46,7 @@ public class TianXingCopyWritingFactory implements CopyWritingFactory { CopyWriting copyWriting = new CopyWriting(); copyWriting.setContent(content); copyWriting.setSource(source); + copyWriting.setType(StatusEnum.PYQ); copyWritingMapper.insert(copyWriting); return copyWriting; }else { diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/factory/impl/TianXingWYYCopyWritingFactory.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/factory/impl/TianXingWYYCopyWritingFactory.java new file mode 100644 index 00000000..361761c4 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/factory/impl/TianXingWYYCopyWritingFactory.java @@ -0,0 +1,60 @@ +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.TianXingWYYFeignClient; +import com.xjs.common.config.TianXingProperties; +import com.xjs.common.enums.StatusEnum; +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-28 + */ +@Service +public class TianXingWYYCopyWritingFactory implements CopyWritingFactory { + + @Autowired + private TianXingProperties tianXingProperties; + @Autowired + private TianXingWYYFeignClient tianXingWYYFeignClient; + @Resource + private CopyWritingMapper copyWritingMapper; + + @Override + public CopyWriting productCopyWriting(RequestBody requestBody) { + requestBody.setKey(tianXingProperties.getKey()); + JSONObject jsonObject = tianXingWYYFeignClient.copyWritingApi(requestBody); + //调用服务正常 + if(jsonObject.containsKey("code")){ + if (HttpStatus.HTTP_OK !=jsonObject.getInteger("code")) { + throw new ApiException("天行数据网易云热评接口调用异常"); + } + JSONArray newslist = jsonObject.getJSONArray("newslist"); + String content = newslist.getJSONObject(0).getString("content"); + String source = newslist.getJSONObject(0).getString("source"); + CopyWriting copyWriting = new CopyWriting(); + copyWriting.setContent(content); + copyWriting.setSource(source); + copyWriting.setType(StatusEnum.WYY); + copyWritingMapper.insert(copyWriting); + return copyWriting; + }else { + //调用服务失败的降级之后的处理 + if (jsonObject.containsKey("error")) { + return copyWritingMapper.getOneToNew(); + } + return new CopyWriting(); + } + } +} diff --git a/xjs-business/xjs-business-english/src/test/java/com/xjs/copywriting/factory/impl/TianXingCopyWritingFactoryTestJob.java b/xjs-business/xjs-business-english/src/test/java/com/xjs/copywriting/factory/impl/TianXingPYQCopyWritingFactoryTestJob.java similarity index 93% rename from xjs-business/xjs-business-english/src/test/java/com/xjs/copywriting/factory/impl/TianXingCopyWritingFactoryTestJob.java rename to xjs-business/xjs-business-english/src/test/java/com/xjs/copywriting/factory/impl/TianXingPYQCopyWritingFactoryTestJob.java index 623730a6..4c548d8b 100644 --- a/xjs-business/xjs-business-english/src/test/java/com/xjs/copywriting/factory/impl/TianXingCopyWritingFactoryTestJob.java +++ b/xjs-business/xjs-business-english/src/test/java/com/xjs/copywriting/factory/impl/TianXingPYQCopyWritingFactoryTestJob.java @@ -17,7 +17,7 @@ import static org.junit.jupiter.api.Assertions.*; * @create 2021-12-27 */ @SpringBootTest(classes = XjsEnglishApp.class) -class TianXingCopyWritingFactoryTestJob { +class TianXingPYQCopyWritingFactoryTestJob { @Autowired CopyWritingFactory tianXingCopyWritingFactory;