diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/BaiduFeignClient.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/BaiduFeignClient.java index 879c7831..11ccb869 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/BaiduFeignClient.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/BaiduFeignClient.java @@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.PostMapping; /** * @author xiejs - * @desc + * @desc 百度翻译接口api调用 * @create 2021-12-25 */ @FeignClient(name = "baidu",url = "http://api.fanyi.baidu.com/api/trans/vip/translate?") 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/TianXingFeignClient.java new file mode 100644 index 00000000..37ec44b4 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/TianXingFeignClient.java @@ -0,0 +1,23 @@ +package com.xjs.common.client; + +import com.alibaba.fastjson.JSONObject; +import com.xjs.common.aop.ApiLog; +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-27 + */ +@FeignClient(name = "tianXing",url = "http://api.tianapi.com/pyqwenan/index") +public interface TianXingFeignClient { + + @GetMapping + @ApiLog(name = "tianXing", + url = "http://api.tianapi.com/pyqwenan/index", + method = "Get") + JSONObject copyWritingApi(@SpringQueryMap RequestBody requestBody); +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/YouDaoFeignClient.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/YouDaoFeignClient.java index 379b0052..35f35279 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/YouDaoFeignClient.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/client/YouDaoFeignClient.java @@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.GetMapping; /** * @author xiejs - * @desc + * @desc 有道翻译接口api调用 * @create 2021-12-25 */ @FeignClient(name = "youdao",url = "http://fanyi.youdao.com/translate?") diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/common/exception/ApiException.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/exception/ApiException.java new file mode 100644 index 00000000..b86799bb --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/exception/ApiException.java @@ -0,0 +1,24 @@ +package com.xjs.common.exception; + +import lombok.extern.log4j.Log4j2; + +/** + * @author xiejs + * @desc + * @create 2021-12-27 + */ +@Log4j2 +public class ApiException extends RuntimeException{ + public ApiException() { + super(); + } + + public ApiException(String message) { + super(message); + log.error("调用第三方API异常----{}",message); + } + + public ApiException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/common/job/CopyWritingJob.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/job/CopyWritingJob.java new file mode 100644 index 00000000..b57994ed --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/common/job/CopyWritingJob.java @@ -0,0 +1,17 @@ +package com.xjs.common.job; + +import com.xjs.copywriting.factory.CopyWritingFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author xiejs + * @desc 获取文案定时任务 + * @create 2021-12-27 + */ +@Component +public class CopyWritingJob { + + @Autowired + private CopyWritingFactory tianXingcopyWritingFactory; +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/CopyWritingController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/CopyWritingController.java new file mode 100644 index 00000000..42d11670 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/CopyWritingController.java @@ -0,0 +1,51 @@ +package com.xjs.copywriting; + +import cn.hutool.core.util.RandomUtil; +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.security.annotation.RequiresLogin; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.xjs.copywriting.domain.CopyWriting; +import com.xjs.copywriting.domain.RequestBody; +import com.xjs.copywriting.factory.CopyWritingFactory; +import com.xjs.translation.domain.qo.translation.TranslationQo; +import com.xjs.translation.domain.vo.translation.TranslationVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.Optional; + +/** + * @author xiejs + * @desc + * @create 2021-12-27 + */ +@RestController +@RequestMapping("copyWriting") +@Api(tags = "业务模块-文案管理") +public class CopyWritingController { + + @Autowired + private CopyWritingFactory tianXingcopyWritingFactory; + + @GetMapping + @ApiOperation("文案接口") + @Log(title = "文案管理") + @RequiresLogin + @RequiresPermissions("english:translation:api") + public AjaxResult translation(@Validated RequestBody requestBody) { + requestBody = Optional.ofNullable(requestBody).orElseGet(RequestBody::new); + ArrayList factories = new ArrayList<>(); + //添加了新接口只需要在这add接口进去 + factories.add(tianXingcopyWritingFactory); + //随机调用集合中的接口 + CopyWritingFactory copyWritingFactory = RandomUtil.randomEle(factories); + CopyWriting copyWriting = copyWritingFactory.productCopyWriting(requestBody); + return AjaxResult.success(copyWriting); + } + +} 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 new file mode 100644 index 00000000..050e1d65 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/domain/CopyWriting.java @@ -0,0 +1,38 @@ +package com.xjs.copywriting.domain; + +import com.baomidou.mybatisplus.annotation.FieldFill; +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 lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @author xiejs + * @desc 文案实体类 + * @create 2021-12-27 + */ +@TableName("api_copywriting") +@Data +public class CopyWriting implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId + private Long id; + + /** 文案内容 */ + @Excel(name = "文案内容") + private String content; + + /** 文案来源 */ + @Excel(name = "文案来源") + private String source; + + @Excel(name = "创建时间") + @TableField(fill = FieldFill.INSERT) + private Date createTime; +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/domain/RequestBody.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/domain/RequestBody.java new file mode 100644 index 00000000..7c5c6a4b --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/domain/RequestBody.java @@ -0,0 +1,16 @@ +package com.xjs.copywriting.domain; + +import lombok.Data; + +/** + * @author xiejs + * @desc 文案api请求参数 + * @create 2021-12-27 + */ +@Data +public class RequestBody { + /** + * 平台key密钥 + */ + private String key; +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/factory/CopyWritingFactory.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/factory/CopyWritingFactory.java new file mode 100644 index 00000000..3dfdd649 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/factory/CopyWritingFactory.java @@ -0,0 +1,21 @@ +package com.xjs.copywriting.factory; + +import com.xjs.copywriting.domain.CopyWriting; +import com.xjs.copywriting.domain.RequestBody; + +/** + * @author xiejs + * @desc 文案工厂,生产文案factory + * @create 2021-12-27 + */ +public interface CopyWritingFactory { + + /** + * 统一调用第三方api接口 + * + * @param requestBody + * @return + */ + CopyWriting productCopyWriting(RequestBody requestBody); + +} 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/TianXingCopyWritingFactory.java new file mode 100644 index 00000000..dddf3092 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/factory/impl/TianXingCopyWritingFactory.java @@ -0,0 +1,49 @@ +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.config.TianXingProperties; +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-27 + */ +@Service +public class TianXingCopyWritingFactory implements CopyWritingFactory { + + @Autowired + private TianXingProperties tianXingProperties; + @Autowired + private TianXingFeignClient tianXingFeignClient; + @Resource + private CopyWritingMapper copyWritingMapper; + + @Override + public CopyWriting productCopyWriting(RequestBody requestBody) { + requestBody.setKey(tianXingProperties.getKey()); + JSONObject jsonObject = tianXingFeignClient.copyWritingApi(requestBody); + 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); + copyWritingMapper.insert(copyWriting); + return copyWriting; + } +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/mapper/CopyWritingMapper.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/mapper/CopyWritingMapper.java new file mode 100644 index 00000000..433525df --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/mapper/CopyWritingMapper.java @@ -0,0 +1,12 @@ +package com.xjs.copywriting.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xjs.copywriting.domain.CopyWriting; + +/** + * @author xiejs + * @desc + * @create 2021-12-27 + */ +public interface CopyWritingMapper extends BaseMapper { +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/service/CopyWritingFactory.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/service/CopyWritingFactory.java deleted file mode 100644 index 16474090..00000000 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/copywriting/service/CopyWritingFactory.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.xjs.copywriting.service; - -/** - * @author xiejs - * @desc 文案工厂,生产文案factory - * @create 2021-12-27 - */ -public interface CopyWritingFactory { -} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/factory/impl/BaiDuTranslationFactory.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/factory/impl/BaiDuTranslationFactory.java index f48b573b..44e4e228 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/factory/impl/BaiDuTranslationFactory.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/factory/impl/BaiDuTranslationFactory.java @@ -5,10 +5,10 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.xjs.common.client.BaiduFeignClient; import com.xjs.common.config.BaiduProperties; +import com.xjs.common.exception.ApiException; import com.xjs.translation.domain.qo.translation.BaiDuTranslationQo; import com.xjs.translation.domain.qo.translation.TranslationQo; import com.xjs.translation.domain.vo.translation.TranslationVo; -import com.xjs.common.exception.BusinessException; import com.xjs.translation.factory.TranslationFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -42,7 +42,7 @@ public class BaiDuTranslationFactory implements TranslationFactory { baiDuTranslationQo.setQ(translationQo.getQ()); JSONObject jsonObject = baiduFeignClient.translationApi(baiDuTranslationQo); if(Objects.nonNull(jsonObject.getString("error_code"))){ - throw new BusinessException("百度翻译接口调用异常"); + throw new ApiException("百度翻译接口调用异常"); } TranslationVo translationVo = new TranslationVo(); String from = jsonObject.getString("from"); diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/factory/impl/YouDaoTranslationFactory.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/factory/impl/YouDaoTranslationFactory.java index 5175e4ae..f9bea0af 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/factory/impl/YouDaoTranslationFactory.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/factory/impl/YouDaoTranslationFactory.java @@ -3,10 +3,10 @@ package com.xjs.translation.factory.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.xjs.common.client.YouDaoFeignClient; +import com.xjs.common.exception.ApiException; import com.xjs.translation.domain.qo.translation.TranslationQo; import com.xjs.translation.domain.qo.translation.YouDaoTranslationQo; import com.xjs.translation.domain.vo.translation.TranslationVo; -import com.xjs.common.exception.BusinessException; import com.xjs.translation.factory.TranslationFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -32,7 +32,7 @@ public class YouDaoTranslationFactory implements TranslationFactory { youDaoTranslationQo.setI(translationQo.getQ()); JSONObject translationApi = youDaoFeignClient.translationApi(youDaoTranslationQo); if(!"0".equals(translationApi.getString("errorCode"))){ - throw new BusinessException("有道翻译接口调用异常"); + throw new ApiException("有道翻译接口调用异常"); } String type = translationApi.getString("type"); TranslationVo translationVo = new TranslationVo(); 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/TianXingCopyWritingFactoryTestJob.java new file mode 100644 index 00000000..623730a6 --- /dev/null +++ b/xjs-business/xjs-business-english/src/test/java/com/xjs/copywriting/factory/impl/TianXingCopyWritingFactoryTestJob.java @@ -0,0 +1,29 @@ +package com.xjs.copywriting.factory.impl; + +import com.xjs.XjsEnglishApp; +import com.xjs.copywriting.domain.RequestBody; +import com.xjs.copywriting.factory.CopyWritingFactory; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import javax.annotation.Resource; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * @author xiejs + * @desc + * @create 2021-12-27 + */ +@SpringBootTest(classes = XjsEnglishApp.class) +class TianXingCopyWritingFactoryTestJob { + + @Autowired + CopyWritingFactory tianXingCopyWritingFactory; + + @Test + void productCopyWriting() { + tianXingCopyWritingFactory.productCopyWriting(new RequestBody()); + } +} \ No newline at end of file