From 1b0ad3fe0ea7c104d97cbb5b707b9ff7406fdd54 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Thu, 30 Dec 2021 20:50:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A1=E3=80=81api?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=AE=9E=E7=8E=B0=E8=B0=83=E7=94=A8=E5=A4=A9?= =?UTF-8?q?=E6=80=A7=E6=95=B0=E6=8D=AE=E7=BF=BB=E8=AF=91=E5=AD=97=E5=85=B8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=20=20=20=20=202=E3=80=81=E8=8B=B1?= =?UTF-8?q?=E8=AF=AD=E6=A8=A1=E5=9D=97=E5=AE=9E=E7=8E=B0=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?rpc=E8=B0=83=E7=94=A8api=E6=A8=A1=E5=9D=97=E6=8E=A5=E5=8F=A3=20?= =?UTF-8?q?=20=20=20=20=203=E3=80=81=E5=89=8D=E7=AB=AF=E6=A0=A1=E9=AA=8Cbu?= =?UTF-8?q?g=E4=BF=AE=E5=A4=8D=20=20=20=20=20=204=E3=80=81=E6=A0=B9?= =?UTF-8?q?=E6=8D=AEid=E6=9F=A5=E7=9C=8B=E8=8B=B1=E8=AF=AD=E5=8D=95?= =?UTF-8?q?=E8=AF=8D=E6=8E=A5=E5=8F=A3=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xjs/business/api/RemoteTranDIctFeign.java | 24 +++++ .../RemoteTranslationFeign.java | 6 +- .../domain/TranslationVo.java | 2 +- .../api/factory/RemoteCopyWritingFactory.java | 3 +- .../api/factory/RemoteTranDictFactory.java | 24 +++++ .../factory/RemoteTranslationFactory.java | 7 +- .../src/views/business/english/word/index.vue | 99 ++++++++++++++----- .../java/com/xjs/word/domain/EnglishWord.java | 4 + .../service/impl/EnglishWordServiceImpl.java | 60 +++++++---- .../common/client/TianXingTranDictClient.java | 29 ++++++ .../factory/TianXingTranDictFeignFactory.java | 27 +++++ .../client/factory/YouDaoFeignFactory.java | 3 +- .../java/com/xjs/common/consts/ApiConst.java | 8 ++ .../xjs/copywriting/domain/RequestBody.java | 5 + .../controller/TranDictController.java | 45 +++++++++ .../controller/TranslationController.java | 2 +- .../factory/impl/TianXingTranDictFactory.java | 53 ++++++++++ 17 files changed, 343 insertions(+), 58 deletions(-) create mode 100644 ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTranDIctFeign.java rename ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/{english => api}/RemoteTranslationFeign.java (83%) rename ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/{english => api}/domain/TranslationVo.java (97%) create mode 100644 ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteTranDictFactory.java rename ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/{english => api}/factory/RemoteTranslationFactory.java (78%) create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingTranDictClient.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingTranDictFeignFactory.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/controller/TranDictController.java create mode 100644 xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/factory/impl/TianXingTranDictFactory.java diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTranDIctFeign.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTranDIctFeign.java new file mode 100644 index 00000000..2797af72 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTranDIctFeign.java @@ -0,0 +1,24 @@ +package com.xjs.business.api; + +import com.ruoyi.common.core.constant.ServiceNameConstants; +import com.ruoyi.common.core.domain.R; +import com.xjs.business.api.domain.TranslationVo; +import com.xjs.business.api.factory.RemoteTranDictFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * @author xiejs + * @desc rpc调用翻译字典接口 + * @create 2021-12-30 + */ +@FeignClient(contextId = "remoteTranDictFeign", + value = ServiceNameConstants.BUSINESS_OPENAPI_SERVICE, + fallbackFactory = RemoteTranDictFactory.class) +public interface RemoteTranDIctFeign { + + @GetMapping(value = "/tranDict/tranDictForRPC") + R tranDict(@RequestParam("content") String content); + +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/english/RemoteTranslationFeign.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTranslationFeign.java similarity index 83% rename from ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/english/RemoteTranslationFeign.java rename to ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTranslationFeign.java index 8710dd33..319fe892 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/english/RemoteTranslationFeign.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/RemoteTranslationFeign.java @@ -1,9 +1,9 @@ -package com.xjs.business.english; +package com.xjs.business.api; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; -import com.xjs.business.english.domain.TranslationVo; -import com.xjs.business.english.factory.RemoteTranslationFactory; +import com.xjs.business.api.domain.TranslationVo; +import com.xjs.business.api.factory.RemoteTranslationFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/english/domain/TranslationVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/domain/TranslationVo.java similarity index 97% rename from ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/english/domain/TranslationVo.java rename to ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/domain/TranslationVo.java index 9a1f6531..fadabaed 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/english/domain/TranslationVo.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/domain/TranslationVo.java @@ -1,4 +1,4 @@ -package com.xjs.business.english.domain; +package com.xjs.business.api.domain; import java.io.Serializable; diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteCopyWritingFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteCopyWritingFactory.java index 32f0a06e..f7000da9 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteCopyWritingFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteCopyWritingFactory.java @@ -1,7 +1,6 @@ package com.xjs.business.api.factory; import com.ruoyi.common.core.domain.R; -import com.ruoyi.system.api.factory.RemoteFileFallbackFactory; import com.xjs.business.api.RemoteCopyWritingFeign; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -16,7 +15,7 @@ import org.springframework.stereotype.Component; @Component public class RemoteCopyWritingFactory implements FallbackFactory { - private static final Logger log = LoggerFactory.getLogger(RemoteFileFallbackFactory.class); + private static final Logger log = LoggerFactory.getLogger(RemoteCopyWritingFactory.class); @Override public RemoteCopyWritingFeign create(Throwable cause) { diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteTranDictFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteTranDictFactory.java new file mode 100644 index 00000000..65cb4f79 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteTranDictFactory.java @@ -0,0 +1,24 @@ +package com.xjs.business.api.factory; + +import com.ruoyi.common.core.domain.R; +import com.xjs.business.api.RemoteTranDIctFeign; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * @author xiejs + * @desc 翻译字段服务降级处理 + * @create 2021-12-30 + */ +@Component +public class RemoteTranDictFactory implements FallbackFactory { + private static final Logger log = LoggerFactory.getLogger(RemoteTranDictFactory.class); + + @Override + public RemoteTranDIctFeign create(Throwable cause) { + log.error("api模块文案服务调用失败:{}", cause.getMessage()); + return content -> R.fail("文案服务调用失败" + cause.getMessage()); + } +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/english/factory/RemoteTranslationFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteTranslationFactory.java similarity index 78% rename from ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/english/factory/RemoteTranslationFactory.java rename to ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteTranslationFactory.java index cb28ef4d..87753505 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/english/factory/RemoteTranslationFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/xjs/business/api/factory/RemoteTranslationFactory.java @@ -1,8 +1,7 @@ -package com.xjs.business.english.factory; +package com.xjs.business.api.factory; import com.ruoyi.common.core.domain.R; -import com.ruoyi.system.api.factory.RemoteFileFallbackFactory; -import com.xjs.business.english.RemoteTranslationFeign; +import com.xjs.business.api.RemoteTranslationFeign; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; @@ -16,7 +15,7 @@ import org.springframework.stereotype.Component; @Component public class RemoteTranslationFactory implements FallbackFactory { - private static final Logger log = LoggerFactory.getLogger(RemoteFileFallbackFactory.class); + private static final Logger log = LoggerFactory.getLogger(RemoteTranslationFactory.class); @Override public RemoteTranslationFeign create(Throwable cause) { diff --git a/ruoyi-ui/src/views/business/english/word/index.vue b/ruoyi-ui/src/views/business/english/word/index.vue index 19d72323..91f137b2 100644 --- a/ruoyi-ui/src/views/business/english/word/index.vue +++ b/ruoyi-ui/src/views/business/english/word/index.vue @@ -106,6 +106,14 @@ @@ -221,6 +243,8 @@ export default { dicts: ['english_collect', 'english_top'], data() { return { + //抽屉开关 + drawer: false, // 遮罩层 loading: true, // 选中数组 @@ -251,7 +275,9 @@ export default { createTime: null }, // 表单参数 - form: {}, + form: { + sort: 0 + }, // 表单校验 rulesEdit: { englishWord: [ @@ -261,10 +287,10 @@ export default { {required: true, message: "中文不能为空", trigger: "blur"} ], isCollect: [ - {required: true, message: "是否收藏 1收藏 2不收藏不能为空", trigger: "change"} + {required: true, message: "是否收藏 1收藏 2不收藏不能为空", trigger: "blur"} ], top: [ - {required: true, message: "置顶 1置顶 2不置顶不能为空", trigger: "change"} + {required: true, message: "置顶 1置顶 2不置顶不能为空", trigger: "blur"} ], createTime: [ {required: true, message: "创建时间不能为空", trigger: "blur"} @@ -275,10 +301,10 @@ export default { {required: true, message: "中英文不能为空", trigger: "blur"} ], isCollect: [ - {required: true, message: "是否收藏 1收藏 2不收藏不能为空", trigger: "change"} + {required: true, message: "是否收藏 1收藏 2不收藏不能为空", trigger: "blur"} ], top: [ - {required: true, message: "置顶 1置顶 2不置顶不能为空", trigger: "change"} + {required: true, message: "置顶 1置顶 2不置顶不能为空", trigger: "blur"} ], createTime: [ {required: true, message: "创建时间不能为空", trigger: "blur"} @@ -290,6 +316,17 @@ export default { this.getList(); }, methods: { + //关闭抽屉 + handleClose(done) { + done(); + }, + + /** 详细按钮操作 */ + handleView(row) { + this.drawer = true + this.form = row; + }, + /** 查询英语单词列表 */ getList() { this.loading = true; @@ -358,25 +395,37 @@ export default { }); }, /** 提交按钮 */ - submitForm() { - this.$refs["form"].validate(valid => { - if (valid) { - if (this.form.id != null) { - updateWord(this.form).then(response => { - this.$modal.msgSuccess("修改成功"); - this.open = false; - this.getList(); - }); - } else { - addWord(this.form).then(response => { - this.$modal.msgSuccess("新增成功"); - this.openAdd = false; - this.getList(); - }); + submitFormEdit() { + this.$refs["formEdit"].validate(valid => { + if (valid) { + if (this.form.id != null) { + updateWord(this.form).then(response => { + this.$modal.msgSuccess("修改成功"); + this.open = false; + this.getList(); + }); + } } } - }); + ); }, + + submitFormAdd() { + this.$refs["formAdd"].validate(valid => { + if (valid) { + if (this.form.id == null) { + addWord(this.form).then(response => { + this.$modal.msgSuccess("新增成功"); + this.openAdd = false; + this.getList(); + }); + } + } + } + ); + }, + + /** 删除按钮操作 */ handleDelete(row) { const ids = row.id || this.ids; diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/word/domain/EnglishWord.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/word/domain/EnglishWord.java index 9fe52646..4ca28d7f 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/word/domain/EnglishWord.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/word/domain/EnglishWord.java @@ -8,6 +8,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import java.util.Date; /** @@ -31,6 +32,7 @@ public class EnglishWord { */ @Excel(name = "英语单词") @NotBlank(message = "英语单词不能为空",groups = {UpdateGroup.class}) + @Size(max = 15,message = "请控制长度在5字符",groups = {UpdateGroup.class}) private String englishWord; /** @@ -38,6 +40,7 @@ public class EnglishWord { */ @Excel(name = "中文") @NotBlank(message = "中文不能为空",groups = {UpdateGroup.class}) + @Size(max = 5,message = "请控制长度在5字符",groups = {UpdateGroup.class}) private String chineseWord; @@ -46,6 +49,7 @@ public class EnglishWord { */ @TableField(exist = false) @NotBlank(message = "内容不能为空",groups = {AddGroup.class}) + @Size(max = 15,message = "请控制长度在5字符",groups = {AddGroup.class}) private String content; /** diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/word/service/impl/EnglishWordServiceImpl.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/word/service/impl/EnglishWordServiceImpl.java index 6c5fd303..82e9d8bd 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/word/service/impl/EnglishWordServiceImpl.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/word/service/impl/EnglishWordServiceImpl.java @@ -2,8 +2,9 @@ package com.xjs.word.service.impl; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.domain.R; -import com.xjs.business.english.RemoteTranslationFeign; -import com.xjs.business.english.domain.TranslationVo; +import com.xjs.business.api.RemoteTranDIctFeign; +import com.xjs.business.api.RemoteTranslationFeign; +import com.xjs.business.api.domain.TranslationVo; import com.xjs.exception.BusinessException; import com.xjs.utils.ChineseUtil; import com.xjs.word.domain.EnglishWord; @@ -14,6 +15,8 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; +import java.util.Objects; +import java.util.Optional; /** * 英语单词Service业务层处理 @@ -27,30 +30,31 @@ public class EnglishWordServiceImpl implements IEnglishWordService { private EnglishWordMapper englishWordMapper; @Autowired private RemoteTranslationFeign remoteTranslationFeign; + @Autowired + private RemoteTranDIctFeign remoteTranDIctFeign; - //------------------------代码自动生成----------------------------------- - /** - * 查询英语单词 + * 查询英语单词、远程调用获取翻译字典 * * @param id 英语单词主键 * @return 英语单词 */ @Override public EnglishWord selectEnglishWordById(Long id) { - return englishWordMapper.selectEnglishWordById(id); - } - - /** - * 查询英语单词列表 - * - * @param englishWord 英语单词 - * @return 英语单词 - */ - @Override - public List selectEnglishWordList(EnglishWord englishWord) { - return englishWordMapper.selectEnglishWordList(englishWord); + //todo 查看单个单词详细信息 + EnglishWord englishWord = englishWordMapper.selectById(id); + R r = remoteTranDIctFeign.tranDict(englishWord.getEnglishWord()); + if (r.getCode() != R.FAIL) { + if (Objects.isNull(r.getData().getErrorCode())) { + //指定to为翻译字典转换的内容 + englishWord.setContent(r.getData().getTo()); + } + } + //每次调用查看次数+1 + Long count = englishWord.getLookCount() + 1; + englishWord.setLookCount(count); + return englishWord; } /** @@ -64,13 +68,9 @@ public class EnglishWordServiceImpl implements IEnglishWordService { //校验前端传入的是否英文或中文 boolean alpha = ChineseUtil.isAlpha(englishWord.getContent()); boolean chinese = ChineseUtil.checkNameChese(englishWord.getContent()); - boolean contains = englishWord.getContent().contains(" "); - //如果两个都不成立,代表包含字符 if (!alpha && !chinese) { throw new BusinessException("不能包含其他符号!!!"); } - - //代表用户输入中文 if (chinese) { englishWord.setChineseWord(englishWord.getContent()); @@ -89,11 +89,29 @@ public class EnglishWordServiceImpl implements IEnglishWordService { } } englishWord.setLookCount(0L); + //如果排序字段没有值默认=0 + Integer integer = Optional.ofNullable(englishWord.getSort()).orElseGet(() -> 0); + englishWord.setSort(integer); return englishWordMapper.insert(englishWord); } + + + //------------------------代码自动生成----------------------------------- + + /** + * 查询英语单词列表 + * + * @param englishWord 英语单词 + * @return 英语单词 + */ + @Override + public List selectEnglishWordList(EnglishWord englishWord) { + return englishWordMapper.selectEnglishWordList(englishWord); + } + /** * 修改英语单词 * diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingTranDictClient.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingTranDictClient.java new file mode 100644 index 00000000..bd504400 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/TianXingTranDictClient.java @@ -0,0 +1,29 @@ +package com.xjs.common.client; + +import com.alibaba.fastjson.JSONObject; +import com.xjs.common.aop.ApiLog; +import com.xjs.common.client.factory.TianXingTranDictFeignFactory; +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_TRAN_DICT; +import static com.xjs.common.consts.ApiConst.TIANXING_TRAN_DICT_URL; + +/** + * @author xiejs + * @desc 天行翻译字典接口api调用 + * @create 2021-12-30 + */ +@FunctionalInterface +@FeignClient(name = "tianXingTranDict",url = TIANXING_TRAN_DICT_URL,fallbackFactory = TianXingTranDictFeignFactory.class) +public interface TianXingTranDictClient { + + @GetMapping + @ApiLog(name = TIANXING_TRAN_DICT, + url = TIANXING_TRAN_DICT_URL, + method = "Get") + JSONObject tranDictApi(@SpringQueryMap RequestBody requestBody); + +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingTranDictFeignFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingTranDictFeignFactory.java new file mode 100644 index 00000000..fc9c36c0 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/TianXingTranDictFeignFactory.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.TianXingTranDictClient; +import lombok.extern.log4j.Log4j2; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * @author xiejs + * @desc 天行api翻译字典降级处理 + * @create 2021-12-30 + */ +@Component +@Log4j2 +public class TianXingTranDictFeignFactory implements FallbackFactory { + @Override + public TianXingTranDictClient create(Throwable cause) { + log.error("api模块翻译字典服务调用失败:{},执行降级处理", 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/common/client/factory/YouDaoFeignFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/YouDaoFeignFactory.java index c7203a02..3fc3d997 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/YouDaoFeignFactory.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/common/client/factory/YouDaoFeignFactory.java @@ -1,6 +1,7 @@ package com.xjs.common.client.factory; import com.alibaba.fastjson.JSONObject; +import com.ruoyi.common.core.domain.R; import com.xjs.common.client.YouDaoFeignClient; import lombok.extern.log4j.Log4j2; import org.springframework.cloud.openfeign.FallbackFactory; @@ -21,7 +22,7 @@ public class YouDaoFeignFactory implements FallbackFactory { return qo -> { JSONObject jsonObject = new JSONObject(); //构建一个异常json给下层接口处理 - jsonObject.put("error", 500); + jsonObject.put("error", R.FAIL); 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 939b3ce8..69c16eb4 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 @@ -21,6 +21,10 @@ public class ApiConst { public static final String TIANXING_MMMY= "天行-名人名言"; + public static final String TIANXING_TRAN_DICT= "天行-翻译字典"; + + + public static final String TEN_YY= "Ten-一言"; @@ -38,6 +42,10 @@ public class ApiConst { public static final String TIANXING_MMMY_URL= "http://api.tianapi.com/mingyan/index"; + public static final String TIANXING_TRAN_DICT_URL= "http://api.tianapi.com/enwords/index"; + + + public static final String TEN_YY_URL= "https://tenapi.cn/yiyan/"; } 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 033da45f..f1be3c43 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 @@ -19,4 +19,9 @@ public class RequestBody { * 请求类型 json/js/text */ private String format; + + /** + * 词 + */ + private String word; } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/controller/TranDictController.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/controller/TranDictController.java new file mode 100644 index 00000000..759d6fc7 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/controller/TranDictController.java @@ -0,0 +1,45 @@ +package com.xjs.translation.controller; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.security.annotation.RequiresLogin; +import com.xjs.translation.domain.qo.translation.TranslationQo; +import com.xjs.translation.domain.vo.translation.TranslationVo; +import com.xjs.translation.factory.TranslationFactory; +import io.swagger.annotations.Api; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author xiejs + * @desc 翻译字典控制器 + * @create 2021-12-30 + */ +@RestController +@RequestMapping("tranDict") +@Api(tags = "业务模块-翻译字典管理") +@Log4j2 +public class TranDictController { + + @Autowired + private TranslationFactory tianXingTranDictFactory; + + @GetMapping("tranDictForRPC") + @RequiresLogin + public R tranDict(String content) { + TranslationQo translationQo = new TranslationQo(); + translationQo.setQ(content); + TranslationVo translationVo; + try { + translationVo = tianXingTranDictFactory.translationApi(translationQo); + } catch (Exception e) { + translationVo = new TranslationVo(); + translationVo.setErrorCode((long) R.FAIL); + log.error("翻译字典接口平台异常"); + e.printStackTrace(); + } + return R.ok(translationVo); + } +} diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/controller/TranslationController.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/controller/TranslationController.java index 58ceaf55..f984f78f 100644 --- a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/controller/TranslationController.java +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/controller/TranslationController.java @@ -65,7 +65,7 @@ public class TranslationController { translationVo = translationFactory.translationApi(translationQo); } catch (Exception e) { translationVo = new TranslationVo(); - translationVo.setErrorCode(500L); + translationVo.setErrorCode((long) R.FAIL); log.error("翻译接口平台异常"); e.printStackTrace(); } diff --git a/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/factory/impl/TianXingTranDictFactory.java b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/factory/impl/TianXingTranDictFactory.java new file mode 100644 index 00000000..1f772c54 --- /dev/null +++ b/xjs-business/xjs-business-openapi/src/main/java/com/xjs/translation/factory/impl/TianXingTranDictFactory.java @@ -0,0 +1,53 @@ +package com.xjs.translation.factory.impl; + +import cn.hutool.http.HttpStatus; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xjs.common.client.TianXingTranDictClient; +import com.xjs.config.TianXingProperties; +import com.xjs.copywriting.domain.RequestBody; +import com.xjs.exception.ApiException; +import com.xjs.translation.domain.qo.translation.TranslationQo; +import com.xjs.translation.domain.vo.translation.TranslationVo; +import com.xjs.translation.factory.TranslationFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @author xiejs + * @desc 天行数据平台翻译字典实现工厂 + * @create 2021-12-30 + */ +@Component +public class TianXingTranDictFactory implements TranslationFactory { + @Autowired + private TianXingProperties tianXingProperties; + @Autowired + private TianXingTranDictClient tianXingTranDictClient; + + @Override + public TranslationVo translationApi(TranslationQo translationQo) { + RequestBody requestBody = new RequestBody(); + requestBody.setWord(translationQo.getQ()); + requestBody.setKey(tianXingProperties.getKey()); + JSONObject jsonObject = tianXingTranDictClient.tranDictApi(requestBody); + TranslationVo translationVo = new TranslationVo(); + if (!jsonObject.containsKey("error")) { + //代表没进入降级类 + if (jsonObject.getInteger("code") == 250) { + throw new ApiException("内容输入错误"); + } + if (jsonObject.getInteger("code") == HttpStatus.HTTP_OK) { + JSONArray newslist = jsonObject.getJSONArray("newslist"); + JSONObject contentJson = newslist.getJSONObject(0); + String content = contentJson.getString("content"); + translationVo.setTo(content); + } else { + throw new ApiException("api调用成功,但返回错误信息"); + } + }else { + translationVo.setTo(" - "); + } + return translationVo; + } +}