diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/BaiduFeignClient.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/BaiduFeignClient.java index 95e8aee7..1d154f20 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/BaiduFeignClient.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/BaiduFeignClient.java @@ -7,19 +7,19 @@ import com.xjs.translation.domain.qo.translation.BaiDuTranslationQo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; -import static com.xjs.common.consts.ApiConst.BAIDU_FY; +import static com.xjs.common.consts.ApiConst.*; /** * @author xiejs - * @desc 百度翻译接口api调用 + * @desc 百度翻译接口api调用 * @create 2021-12-25 */ -@FeignClient(name = "baidu",url = "http://api.fanyi.baidu.com/api/trans/vip/translate?",fallbackFactory = BaiduFeignFactory.class) +@FeignClient(name = "baidu", url = BAIDU_FY_URL, fallbackFactory = BaiduFeignFactory.class) public interface BaiduFeignClient { @PostMapping(headers = {"Content-Type=application/x-www-form-urlencoded"}) @ApiLog(name = BAIDU_FY, - url = "http://api.fanyi.baidu.com/api/trans/vip/translate", + url = BAIDU_FY_URL, method = "Post") JSONObject translationApi(BaiDuTranslationQo qo); 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 index c2611b12..2bd4972d 100644 --- 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 @@ -9,18 +9,19 @@ import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.web.bind.annotation.GetMapping; import static com.xjs.common.consts.ApiConst.TIANXING_JDTC; +import static com.xjs.common.consts.ApiConst.TIANXING_JDTC_URL; /** * @author xiejs * @desc 天行数据经典台词接口api调用 * @create 2021-12-29 */ -@FeignClient(name = "tianXingJDTC",url = "http://api.tianapi.com/dialogue/index?",fallbackFactory = TianXingJDTCFeignFactory.class) +@FeignClient(name = "tianXingJDTC",url = TIANXING_JDTC_URL,fallbackFactory = TianXingJDTCFeignFactory.class) public interface TianXingJDTCFeignClient { @GetMapping @ApiLog(name = TIANXING_JDTC, - url = "http://api.tianapi.com/dialogue/index", + url = TIANXING_JDTC_URL, method = "Get") JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody); } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingMMMYFeignClient.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingMMMYFeignClient.java new file mode 100644 index 00000000..55610d63 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingMMMYFeignClient.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.TianXingMMMYFeignFactory; +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_MMMY; +import static com.xjs.common.consts.ApiConst.TIANXING_MMMY_URL; + +/** + * @author xiejs + * @desc 天行数据名人名言接口api调用 + * @create 2021-12-29 + */ +@FeignClient(name = "tianXingMMMY",url = TIANXING_MMMY_URL,fallbackFactory = TianXingMMMYFeignFactory.class) +public interface TianXingMMMYFeignClient { + @GetMapping + @ApiLog(name = TIANXING_MMMY, + url = TIANXING_MMMY_URL, + method = "Get") + JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody); +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingPYQFeignClient.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingPYQFeignClient.java index 3dfeabdf..5cc39cf4 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingPYQFeignClient.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingPYQFeignClient.java @@ -9,6 +9,7 @@ import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.web.bind.annotation.GetMapping; import static com.xjs.common.consts.ApiConst.TIANXING_PYQ; +import static com.xjs.common.consts.ApiConst.TIANXING_PYQ_URL; /** * @author xiejs @@ -16,12 +17,12 @@ import static com.xjs.common.consts.ApiConst.TIANXING_PYQ; * @create 2021-12-27 */ @FunctionalInterface -@FeignClient(name = "tianXingPYQ",url = "http://api.tianapi.com/pyqwenan/index",fallbackFactory = TianXingPYQFeignFactory.class) +@FeignClient(name = "tianXingPYQ",url = TIANXING_PYQ_URL,fallbackFactory = TianXingPYQFeignFactory.class) public interface TianXingPYQFeignClient { @GetMapping @ApiLog(name = TIANXING_PYQ, - url = "http://api.tianapi.com/pyqwenan/index", + url = TIANXING_PYQ_URL, 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 dbd285a7..e0f1b5b4 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 @@ -9,6 +9,7 @@ import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.web.bind.annotation.GetMapping; import static com.xjs.common.consts.ApiConst.TIANXING_WYY; +import static com.xjs.common.consts.ApiConst.TIANXING_WYY_URL; /** * @author xiejs @@ -16,12 +17,12 @@ import static com.xjs.common.consts.ApiConst.TIANXING_WYY; * @create 2021-12-28 */ @FunctionalInterface -@FeignClient(name = "tianXingWYY",url = "http://api.tianapi.com/hotreview/index",fallbackFactory = TianXingWYYFeignFactory.class) +@FeignClient(name = "tianXingWYY",url = TIANXING_WYY_URL,fallbackFactory = TianXingWYYFeignFactory.class) public interface TianXingWYYFeignClient { @GetMapping @ApiLog(name = TIANXING_WYY, - url = "http://api.tianapi.com/hotreview/index", + url = TIANXING_WYY_URL, method = "Get") JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody); } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/YouDaoFeignClient.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/YouDaoFeignClient.java index 789528ae..86591243 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/YouDaoFeignClient.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/YouDaoFeignClient.java @@ -9,18 +9,19 @@ import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.web.bind.annotation.GetMapping; import static com.xjs.common.consts.ApiConst.YOUDAO_FY; +import static com.xjs.common.consts.ApiConst.YOUDAO_FY_URL; /** * @author xiejs * @desc 有道翻译接口api调用 * @create 2021-12-25 */ -@FeignClient(name = "youdao",url = "http://fanyi.youdao.com/translate?",fallbackFactory = YouDaoFeignFactory.class) +@FeignClient(name = "youdao",url = YOUDAO_FY_URL,fallbackFactory = YouDaoFeignFactory.class) public interface YouDaoFeignClient { @GetMapping( headers ={ "Accept-Encoding=''"}) @ApiLog(name = YOUDAO_FY, - url = "http://fanyi.youdao.com/translate", + url = YOUDAO_FY_URL, method = "Get") JSONObject translationApi(@SpringQueryMap YouDaoTranslationQo qo); } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingMMMYFeignFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingMMMYFeignFactory.java new file mode 100644 index 00000000..c412bb58 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingMMMYFeignFactory.java @@ -0,0 +1,28 @@ +package com.xjs.common.client.factory; + +import com.alibaba.fastjson.JSONObject; +import com.xjs.common.client.TianXingMMMYFeignClient; +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 TianXingMMMYFeignFactory implements FallbackFactory { + + @Override + public TianXingMMMYFeignClient 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/consts/ApiConst.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/consts/ApiConst.java index a7a0e019..956e3a7e 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 @@ -6,6 +6,9 @@ package com.xjs.common.consts; * @create 2021-12-28 */ public class ApiConst { + + //--------------------name------------------------------ + public static final String YOUDAO_FY= "有道翻译"; public static final String BAIDU_FY= "百度翻译"; @@ -15,4 +18,22 @@ public class ApiConst { public static final String TIANXING_WYY= "天行-网易云"; public static final String TIANXING_JDTC= "天行-经典台词"; + + public static final String TIANXING_MMMY= "天行-名人名言"; + + + //-------------------url------------------------------ + + public static final String BAIDU_FY_URL= "http://api.fanyi.baidu.com/api/trans/vip/translate"; + + public static final String YOUDAO_FY_URL= "http://fanyi.youdao.com/translate"; + + public static final String TIANXING_PYQ_URL= "http://api.tianapi.com/pyqwenan/index"; + + public static final String TIANXING_WYY_URL= "http://api.tianapi.com/hotreview/index"; + + public static final String TIANXING_JDTC_URL= "http://api.tianapi.com/dialogue/index"; + + public static final String TIANXING_MMMY_URL= "http://api.tianapi.com/mingyan/index"; + } 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 339d5858..cd8f9519 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 @@ -13,4 +13,6 @@ public class TianXingConst { public static final Integer WYY= 2; //经典台词 public static final Integer JDTC= 3; + //名人名言 + public static final Integer MMMY= 4; } 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 f3f13ea4..f9155f7e 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 @@ -42,6 +42,8 @@ public class CopyWritingController extends BaseController { @Autowired private CopyWritingFactory tianXingJDTCCopyWritingFactory; @Autowired + private CopyWritingFactory tianXingMMMYCopyWritingFactory; + @Autowired private CopyWritingService copyWritingService; @@ -76,6 +78,7 @@ public class CopyWritingController extends BaseController { factories.add(tianXingPYQCopyWritingFactory); factories.add(tianXingWYYCopyWritingFactory); factories.add(tianXingJDTCCopyWritingFactory); + factories.add(tianXingMMMYCopyWritingFactory); //--------add----------------------------;- //随机调用集合中的接口 return RandomUtil.randomEle(factories); diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/domain/CopyWriting.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/domain/CopyWriting.java index ddff51b6..794b0c89 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/domain/CopyWriting.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/domain/CopyWriting.java @@ -42,6 +42,6 @@ public class CopyWriting implements Serializable { @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date endCreateTime; - @Excel(name = "文案类型" ,readConverterExp = "1=、朋友圈文案2、网易云热评") + @Excel(name = "文案类型" ,readConverterExp = "1=朋友圈文案,2=网易云热评,3=经典语句,4=名人名言") private Integer type; } 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 index b38814d5..a62ecb22 100644 --- 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 @@ -36,7 +36,7 @@ public class TianXingJDTCCopyWritingFactory implements CopyWritingFactory { JSONObject jsonObject = tianXingJDTCFeignClient.copyWritingApi(requestBody); if(jsonObject.containsKey("code")){ if (HttpStatus.HTTP_OK !=jsonObject.getInteger("code")) { - throw new ApiException("天行数据朋友圈文案接口调用异常"); + throw new ApiException("天行数据经典台词接口调用异常"); } JSONArray newslist = jsonObject.getJSONArray("newslist"); String dialogue = newslist.getJSONObject(0).getString("dialogue"); diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/TianXingMMMYCopyWritingFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/TianXingMMMYCopyWritingFactory.java new file mode 100644 index 00000000..81f4fcb8 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/TianXingMMMYCopyWritingFactory.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.TianXingMMMYFeignClient; +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 TianXingMMMYCopyWritingFactory implements CopyWritingFactory { + @Autowired + private TianXingProperties tianXingProperties; + @Autowired + private TianXingMMMYFeignClient tianXingMMMYeignClient; + @Resource + private CopyWritingMapper copyWritingMapper; + + @Override + public CopyWriting productCopyWriting(RequestBody requestBody) { + requestBody.setKey(tianXingProperties.getKey()); + JSONObject jsonObject = tianXingMMMYeignClient.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 author = newslist.getJSONObject(0).getString("author"); + CopyWriting copyWriting = new CopyWriting(); + copyWriting.setContent(content); + copyWriting.setSource(author); + copyWriting.setType(TianXingConst.MMMY); + copyWritingMapper.insert(copyWriting); + return copyWriting; + }else { + //调用服务失败的降级之后的处理 + if (jsonObject.containsKey("error")) { + return copyWritingMapper.getOneToNew(); + } + return new CopyWriting(); + } + } +}