diff --git a/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/ApiConst.java b/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/ApiConst.java index ce79ad3e..83eb1a08 100644 --- a/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/ApiConst.java +++ b/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/ApiConst.java @@ -27,9 +27,11 @@ public class ApiConst { public static final String TIANXING_ONE_ENGLISH= "天行-英语一言"; + public static final String ROLL_A_WORD= "ROLL-每日一句"; + + - public static final String TEN_YY= "Ten-一言"; //-------------------url------------------------------ @@ -52,8 +54,10 @@ public class ApiConst { public static final String TIANXING_ONE_ENGLISH_URL= "http://api.tianapi.com/ensentence/index"; + public static final String ROLL_A_WORD_URL= "https://www.mxnzp.com/api/daily_word/recommend"; + + - public static final String TEN_YY_URL= "https://tenapi.cn/yiyan/"; } diff --git a/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/TianXingConst.java b/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/TianXingConst.java index 5200760f..23e736b6 100644 --- a/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/TianXingConst.java +++ b/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/TianXingConst.java @@ -7,6 +7,8 @@ package com.xjs.consts; */ public class TianXingConst { + //---------------天行平台参数--------------------------- + //朋友圈 public static final Integer PYQ= 1; //网易云 @@ -15,6 +17,10 @@ public class TianXingConst { public static final Integer JDTC= 3; //名人名言 public static final Integer MMMY= 4; - //Ten-API 一言 - public static final Integer YY= 5; + + + //--------------------roll平台参数------------------- + + //每日一句 + public static final Integer MRYJ= 5; } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/RollMMYJFeignClient.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/RollMMYJFeignClient.java new file mode 100644 index 00000000..e5ada570 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/RollMMYJFeignClient.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.RollMMYJFeignFactory; +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.consts.ApiConst.ROLL_A_WORD; +import static com.xjs.consts.ApiConst.ROLL_A_WORD_URL; + +/** + * roll每日一句接口api调用 + * @author xiejs + * @since 2022-01-08 + */ +@FeignClient(name = "rollMMYJ", url = ROLL_A_WORD_URL, fallbackFactory = RollMMYJFeignFactory.class) +public interface RollMMYJFeignClient { + @GetMapping + @ApiLog(name = ROLL_A_WORD, + url = ROLL_A_WORD_URL, + method = "Get") + JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody); +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/RollMMYJFeignFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/RollMMYJFeignFactory.java new file mode 100644 index 00000000..1108108d --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/RollMMYJFeignFactory.java @@ -0,0 +1,27 @@ +package com.xjs.common.client.factory; + +import com.alibaba.fastjson.JSONObject; +import com.ruoyi.common.core.domain.R; +import com.xjs.common.client.RollMMYJFeignClient; +import lombok.extern.log4j.Log4j2; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * roll每日一句降级 + * @author xiejs + * @since 2022-01-08 + */ +@Component +@Log4j2 +public class RollMMYJFeignFactory implements FallbackFactory { + @Override + public RollMMYJFeignClient create(Throwable cause) { + log.error("api模块roll每日一句服务调用失败:{},执行降级处理", cause.getMessage()); + return requestBody -> { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("error", R.FAIL); + return jsonObject; + }; + } +} 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 de95a56f..59b5ae3f 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 @@ -44,6 +44,8 @@ public class CopyWritingController extends BaseController { @Autowired private CopyWritingFactory tianXingMMMYCopyWritingFactory; @Autowired + private CopyWritingFactory rollMMYJCopyWritingFactory; + @Autowired private CopyWritingService copyWritingService; @@ -89,6 +91,9 @@ public class CopyWritingController extends BaseController { factories.add(tianXingWYYCopyWritingFactory); factories.add(tianXingJDTCCopyWritingFactory); factories.add(tianXingMMMYCopyWritingFactory); + factories.add(rollMMYJCopyWritingFactory); + factories.add(rollMMYJCopyWritingFactory); + factories.add(rollMMYJCopyWritingFactory); //--------add----------------------------;- //随机调用集合中的接口 return RandomUtil.randomEle(factories); diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/domain/RequestBody.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/domain/RequestBody.java index f1be3c43..cc43afd7 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/domain/RequestBody.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/domain/RequestBody.java @@ -24,4 +24,20 @@ public class RequestBody { * 词 */ private String word; + + /** + * 应用id + */ + private String app_id; + + + /** + * 应用密钥 + */ + private String app_secret; + + /** + * 返回值数量 + */ + private Integer count; } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/RollMMYJCopyWritingFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/RollMMYJCopyWritingFactory.java new file mode 100644 index 00000000..ca0844dd --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/RollMMYJCopyWritingFactory.java @@ -0,0 +1,56 @@ +package com.xjs.copywriting.factory.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xjs.common.client.RollMMYJFeignClient; +import com.xjs.config.RollProperties; +import com.xjs.consts.TianXingConst; +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 com.xjs.exception.ApiException; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * roll平台每日一句工厂实现 + * @author xiejs + * @since 2022-01-08 + */ +@Component +@Log4j2 +public class RollMMYJCopyWritingFactory implements CopyWritingFactory { + @Autowired + private RollProperties rollProperties; + @Autowired + private RollMMYJFeignClient rollMMYJFeignClient; + @Autowired + private CopyWritingService copyWritingService; + + @Override + public CopyWriting productCopyWriting(RequestBody requestBody) { + requestBody.setCount(20); + requestBody.setApp_id(rollProperties.getApp_id()); + requestBody.setApp_secret(rollProperties.getApp_secret()); + JSONObject jsonObject = rollMMYJFeignClient.copyWritingApi(requestBody); + if (jsonObject.containsKey("error")) { + throw new ApiException("roll每日一句接口调用异常"); + } + JSONArray jsonArray = jsonObject.getJSONArray("data"); + List collect = jsonArray.stream().map(json -> { + CopyWriting copyWriting = new CopyWriting(); + JSONObject toJSON = (JSONObject) JSONObject.toJSON(json); + copyWriting.setContent(toJSON.getString("content")); + copyWriting.setSource(toJSON.getString("author")); + copyWriting.setType(TianXingConst.MRYJ); + return copyWriting; + }).collect(Collectors.toList()); + log.info("批量插入成功了嘛---"+copyWritingService.saveBatch(collect)); + return collect.get(0); + } +}