From 7a708fef7cb458e239f54c5e7c5abb437bd009e6 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Mon, 14 Feb 2022 18:27:19 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81openapi=E6=A8=A1=E5=9D=97=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E8=88=94=E7=8B=97=E6=97=A5=E8=AE=B0=E6=96=87=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/xjs/consts/ApiConst.java | 10 +++++ .../java/com/xjs/consts/TianXingConst.java | 6 +++ .../java/com/xjs/common/aop/ApiLogAspect.java | 14 ++++++- .../client/api/lq/LqDogDiaryFeignClient.java | 24 +++++++++++ .../factory/LqDogDiaryFeignFactory.java | 22 ++++++++++ .../controller/CopyWritingController.java | 7 ++-- .../impl/LqDogDiaryCopyWritingFactory.java | 42 +++++++++++++++++++ .../LqDogDiaryCopyWritingFactoryTest.java | 25 +++++++++++ 8 files changed, 144 insertions(+), 6 deletions(-) create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/lq/LqDogDiaryFeignClient.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/LqDogDiaryFeignFactory.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/LqDogDiaryCopyWritingFactory.java create mode 100644 xjs-business/xjs-business-openapi/src/test/java/com/xjs/copywriting/factory/impl/LqDogDiaryCopyWritingFactoryTest.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 571b30dc..0f5de6f6 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 @@ -68,6 +68,8 @@ public class ApiConst { public static final String ROLL_IDCARD_QUERY = "ROLL-身份证查询"; + public static final String LQ_DOG_DIARY = "零七-舔狗日记"; + //-------------------url------------------------------ @@ -157,6 +159,14 @@ public class ApiConst { */ public static final String ROLL_IDCARD_QUERY_URL = "https://www.mxnzp.com/api/idcard/search"; + /** + * 接口文档:https://api.oick.cn/dog/ + */ + public static final String LQ_DOG_DIARY_URL = "https://api.oick.cn/dog/api.php"; + + + + //-----------------------api请求参数常量----------------------------- 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 23e736b6..3f1ec0a5 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 @@ -23,4 +23,10 @@ public class TianXingConst { //每日一句 public static final Integer MRYJ= 5; + + + //--------------------零七平台----------------------- + + //舔狗日记 + public static final Integer TGRJ= 6; } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/aop/ApiLogAspect.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/aop/ApiLogAspect.java index 2f3b236d..0c97646f 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/aop/ApiLogAspect.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/aop/ApiLogAspect.java @@ -16,6 +16,7 @@ import com.xjs.consts.ReqConst; import com.xjs.enums.WarnLevelEnum; import com.xjs.enums.WarnTypeEnum; import lombok.extern.log4j.Log4j2; +import org.apache.commons.lang3.StringUtils; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.Signature; @@ -79,6 +80,13 @@ public class ApiLogAspect { warning(between, joinPoint); } } + //返回值为String情况 + if (obj instanceof String) { + if (StringUtils.isNotEmpty(String.valueOf(obj))) { + warning(between, joinPoint); + } + } + return obj; } catch (Throwable e) { e.printStackTrace(); @@ -126,8 +134,10 @@ public class ApiLogAspect { entity.setRequest(objects.toJSONString()); } } else { - String jsonString = JSON.toJSONString(args[0]); - entity.setRequest(jsonString); + if(args.length>0){ + String jsonString = JSON.toJSONString(args[0]); + entity.setRequest(jsonString); + } } entity.setMethod(apiLog.method()); if (Objects.nonNull(jsonResult)) { diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/lq/LqDogDiaryFeignClient.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/lq/LqDogDiaryFeignClient.java new file mode 100644 index 00000000..ba733625 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/api/lq/LqDogDiaryFeignClient.java @@ -0,0 +1,24 @@ +package com.xjs.common.client.api.lq; + +import com.xjs.annotation.ApiLog; +import com.xjs.common.client.factory.LqDogDiaryFeignFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +import static com.xjs.consts.ApiConst.LQ_DOG_DIARY; +import static com.xjs.consts.ApiConst.LQ_DOG_DIARY_URL; + +/** + * 零七平台 dog日记 feign + * @author xiejs + * @since 2022-02-14 + */ +@FeignClient(name = "lqDogDiary", url = LQ_DOG_DIARY_URL, fallbackFactory = LqDogDiaryFeignFactory.class) +public interface LqDogDiaryFeignClient { + + @GetMapping() + @ApiLog(name = LQ_DOG_DIARY, + url = LQ_DOG_DIARY_URL, + method = "Get") + String dogDiaryApi(); +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/LqDogDiaryFeignFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/LqDogDiaryFeignFactory.java new file mode 100644 index 00000000..fe58c78d --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/LqDogDiaryFeignFactory.java @@ -0,0 +1,22 @@ +package com.xjs.common.client.factory; + +import com.xjs.common.client.api.lq.LqDogDiaryFeignClient; +import lombok.extern.log4j.Log4j2; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * @author xiejs + * @since 2022-02-14 + */ +@Component +@Log4j2 +public class LqDogDiaryFeignFactory implements FallbackFactory { + @Override + public LqDogDiaryFeignClient create(Throwable cause) { + log.error("api模块零七舔狗日记服务调用失败:{},执行降级处理", cause.getMessage()); + return () -> { + return ""; + }; + } +} 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 1d6dec7d..8a294294 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 @@ -49,6 +49,8 @@ public class CopyWritingController extends BaseController { private CopyWritingFactory rollMMYJCopyWritingFactory; @Autowired private CopyWritingService copyWritingService; + @Autowired + private CopyWritingFactory lqDogDiaryCopyWritingFactory; @GetMapping @@ -98,11 +100,8 @@ public class CopyWritingController extends BaseController { factories.add(tianXingWYYCopyWritingFactory); factories.add(tianXingJDTCCopyWritingFactory); factories.add(tianXingMMMYCopyWritingFactory); - factories.add(tianXingPYQCopyWritingFactory); - factories.add(tianXingWYYCopyWritingFactory); - factories.add(tianXingJDTCCopyWritingFactory); - factories.add(tianXingMMMYCopyWritingFactory); factories.add(rollMMYJCopyWritingFactory); + factories.add(lqDogDiaryCopyWritingFactory); //--------add----------------------------;- //随机调用集合中的接口 return RandomUtil.randomEle(factories); diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/LqDogDiaryCopyWritingFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/LqDogDiaryCopyWritingFactory.java new file mode 100644 index 00000000..05f84872 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/copywriting/factory/impl/LqDogDiaryCopyWritingFactory.java @@ -0,0 +1,42 @@ +package com.xjs.copywriting.factory.impl; + +import com.xjs.common.client.api.lq.LqDogDiaryFeignClient; +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.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author xiejs + * @since 2022-02-14 + */ +@Component +@Log4j2 +public class LqDogDiaryCopyWritingFactory implements CopyWritingFactory { + + @Autowired + private CopyWritingService copyWritingService; + @Autowired + private LqDogDiaryFeignClient lqDogDiaryFeignClient; + + @Override + public CopyWriting productCopyWriting(RequestBody requestBody) { + String data = lqDogDiaryFeignClient.dogDiaryApi(); + if (StringUtils.isEmpty(data)) { + throw new ApiException("零七-舔狗日记接口调用异常"); + } + CopyWriting copyWriting = new CopyWriting(); + copyWriting.setContent(data); + copyWriting.setSource("舔狗日记"); + copyWriting.setType(TianXingConst.TGRJ); + + copyWritingService.save(copyWriting); + return copyWriting; + } +} diff --git a/xjs-business/xjs-business-openapi/src/test/java/com/xjs/copywriting/factory/impl/LqDogDiaryCopyWritingFactoryTest.java b/xjs-business/xjs-business-openapi/src/test/java/com/xjs/copywriting/factory/impl/LqDogDiaryCopyWritingFactoryTest.java new file mode 100644 index 00000000..f2c75ae1 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/test/java/com/xjs/copywriting/factory/impl/LqDogDiaryCopyWritingFactoryTest.java @@ -0,0 +1,25 @@ +package com.xjs.copywriting.factory.impl; + +import com.xjs.XjsOpenApiApp; +import com.xjs.copywriting.domain.RequestBody; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * @author xiejs + * @since 2022-02-14 + */ +@SpringBootTest(classes = XjsOpenApiApp.class) +class LqDogDiaryCopyWritingFactoryTest { + + @Autowired + private LqDogDiaryCopyWritingFactory lqDogDiaryCopyWritingFactory; + + @Test + void productCopyWriting() { + lqDogDiaryCopyWritingFactory.productCopyWriting(new RequestBody()); + } +} \ No newline at end of file