From 247fe674cfe1eb6d4c1802e1f7af2b6eddeec746 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Tue, 15 Feb 2022 10:02:53 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=AE=9E=E7=8E=B0roll=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E6=90=9E=E7=AC=91=E6=AE=B5=E5=AD=90api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/xjs/consts/ApiConst.java | 7 +++ .../java/com/xjs/consts/CopyWritingConst.java | 2 + .../client/api/roll/RollJokeFeignClient.java | 27 ++++++++ .../client/factory/RollJokeFeignFactory.java | 29 +++++++++ .../controller/CopyWritingController.java | 3 + .../impl/RollJokeCopyWritingFactory.java | 63 +++++++++++++++++++ .../impl/RollMMYJCopyWritingFactory.java | 2 +- 7 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/roll/RollJokeFeignClient.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/RollJokeFeignFactory.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/RollJokeCopyWritingFactory.java 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 7586ffe4..07c568ba 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 @@ -78,6 +78,8 @@ public class ApiConst { public static final String ALAPI_JOKE_ALL = "ALAPI-笑话大全"; + public static final String ROLL_JOKE = "ROLL-搞笑段子"; + //-------------------url------------------------------ @@ -192,6 +194,11 @@ public class ApiConst { */ public static final String ALAPI_JOKE_ALL_URL = "http://v2.alapi.cn/api/joke/random"; + /** + * 接口文档:https://www.mxnzp.com/doc/detail?id=5 + */ + public static final String ROLL_JOKE_URL = "https://www.mxnzp.com/api/jokes/list/random"; + //-----------------------api请求参数常量----------------------------- diff --git a/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/CopyWritingConst.java b/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/CopyWritingConst.java index a6afd100..663d6b3d 100644 --- a/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/CopyWritingConst.java +++ b/xjs-business/xjs-business-common/src/main/java/com/xjs/consts/CopyWritingConst.java @@ -23,6 +23,8 @@ public class CopyWritingConst { //每日一句 public static final Integer MRYJ= 5; + //搞笑段子 + public static final Integer GXDZ= 11; //--------------------零七平台参数----------------------- diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/roll/RollJokeFeignClient.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/roll/RollJokeFeignClient.java new file mode 100644 index 00000000..002eb510 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/roll/RollJokeFeignClient.java @@ -0,0 +1,27 @@ +package com.xjs.common.client.api.roll; + +import com.alibaba.fastjson.JSONObject; +import com.xjs.annotation.ApiLog; +import com.xjs.common.client.factory.RollJokeFeignFactory; +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_JOKE; +import static com.xjs.consts.ApiConst.ROLL_JOKE_URL; + + +/** + * roll平台 搞笑段子 api feign + * @author xiejs + * @since 2022-02-15 + */ +@FeignClient(name = "rollJoke", url = ROLL_JOKE_URL, fallbackFactory = RollJokeFeignFactory.class) +public interface RollJokeFeignClient { + @GetMapping() + @ApiLog(name = ROLL_JOKE, + url = ROLL_JOKE_URL, + method = "Get") + JSONObject jokeApi(@SpringQueryMap RequestBody requestBody); +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/RollJokeFeignFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/RollJokeFeignFactory.java new file mode 100644 index 00000000..09c31f1e --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/RollJokeFeignFactory.java @@ -0,0 +1,29 @@ +package com.xjs.common.client.factory; + +import com.alibaba.fastjson.JSONObject; +import com.ruoyi.common.core.domain.R; +import com.xjs.common.client.api.roll.RollJokeFeignClient; +import lombok.extern.log4j.Log4j2; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +import static com.xjs.consts.ApiConst.DEMOTE_ERROR; + +/** + * roll平台搞笑段子降级 + * @author xiejs + * @since 2022-02-15 + */ +@Component +@Log4j2 +public class RollJokeFeignFactory implements FallbackFactory { + @Override + public RollJokeFeignClient create(Throwable cause) { + log.error("api模块roll 搞笑段子服务调用失败:{},执行降级处理", cause.getMessage()); + return requestBody -> { + JSONObject jsonObject = new JSONObject(); + jsonObject.put(DEMOTE_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 c32d9f0a..435348cc 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 @@ -59,6 +59,8 @@ public class CopyWritingController extends BaseController { private CopyWritingFactory uomgEarthLoveCopyWritingFactory; @Autowired private CopyWritingFactory alapiJokeAllCopyWritingFactory; + @Autowired + private CopyWritingFactory rollJokeCopyWritingFactory; @GetMapping @@ -113,6 +115,7 @@ public class CopyWritingController extends BaseController { factories.add(lqPoisonChickenWritingFactory); factories.add(lqAWordCopyWritingFactory); factories.add(alapiJokeAllCopyWritingFactory); + factories.add(rollJokeCopyWritingFactory); //factories.add(uomgEarthLoveCopyWritingFactory); //--------add----------------------------;- //随机调用集合中的接口 diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/RollJokeCopyWritingFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/RollJokeCopyWritingFactory.java new file mode 100644 index 00000000..d69f504d --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/RollJokeCopyWritingFactory.java @@ -0,0 +1,63 @@ +package com.xjs.copywriting.factory.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xjs.common.client.api.roll.RollJokeFeignClient; +import com.xjs.consts.CopyWritingConst; +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 com.xjs.properties.RollProperties; +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; + +import static com.xjs.consts.ApiConst.DEMOTE_ERROR; +import static com.xjs.consts.ApiConst.ROLL_CODE_SUCCESS; + +/** + * roll平台 搞笑段子 工厂实现 + * @author xiejs + * @since 2022-02-15 + */ +@Component +@Log4j2 +public class RollJokeCopyWritingFactory implements CopyWritingFactory { + + @Autowired + private CopyWritingService copyWritingService; + @Autowired + private RollProperties rollProperties; + @Autowired + private RollJokeFeignClient rollJokeFeignClient; + + @Override + public CopyWriting productCopyWriting(RequestBody requestBody) { + requestBody.setApp_id(rollProperties.getApp_id()); + requestBody.setApp_secret(rollProperties.getApp_secret()); + JSONObject jsonObject = rollJokeFeignClient.jokeApi(requestBody); + if (jsonObject.containsKey(DEMOTE_ERROR)) { + throw new ApiException("roll搞笑段子接口调用异常"); + } + if (ROLL_CODE_SUCCESS.equals(jsonObject.getInteger("code"))) { + JSONArray jsonArrayData = jsonObject.getJSONArray("data"); + List collect = jsonArrayData.stream().map(json -> { + CopyWriting copyWriting = new CopyWriting(); + JSONObject toJSON = (JSONObject) JSONObject.toJSON(json); + copyWriting.setSource("搞笑段子"); + copyWriting.setContent(toJSON.getString("content")); + copyWriting.setType(CopyWritingConst.GXDZ); + return copyWriting; + }).collect(Collectors.toList()); + log.info("搞笑段子批量插入成功了嘛---"+copyWritingService.saveBatch(collect)); + return collect.get(0); + }else { + throw new ApiException("roll搞笑段子接口调用异常"); + } + } +} 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 index 53736681..d184ecb5 100644 --- 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 @@ -58,7 +58,7 @@ public class RollMMYJCopyWritingFactory implements CopyWritingFactory { } return copyWriting; }).collect(Collectors.toList()); - log.info("批量插入成功了嘛---"+copyWritingService.saveBatch(collect)); + log.info("每日一句批量插入成功了嘛---"+copyWritingService.saveBatch(collect)); return collect.get(0); } }