From a86f84e4a1e33043b780986b9561ba08def36a52 Mon Sep 17 00:00:00 2001
From: xjs <1294405880@qq.com>
Date: Sun, 26 Dec 2021 09:48:34 +0800
Subject: [PATCH] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A=201=E3=80=81?=
=?UTF-8?q?=E6=8E=A5=E5=85=A5=E7=99=BE=E5=BA=A6=E3=80=81=E6=9C=89=E9=81=93?=
=?UTF-8?q?=E7=BF=BB=E8=AF=91API=202=E3=80=81=E5=AE=9E=E7=8E=B0=E4=BA=86?=
=?UTF-8?q?=E4=BB=A5=E4=B8=8A=E4=B8=A4=E4=B8=AA=E6=8E=A5=E5=8F=A3=203?=
=?UTF-8?q?=E3=80=81=E5=9C=A8business=E6=A8=A1=E5=9D=97=E5=A2=9E=E5=8A=A0?=
=?UTF-8?q?=E4=BA=86hutools=E4=BE=9D=E8=B5=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../annotation/EnableRyFeignClients.java | 2 +-
xjs-business/pom.xml | 20 ++++++
.../xjs/english/client/BaiduFeignClient.java | 19 ++++++
.../xjs/english/client/YouDaoFeignClient.java | 21 ++++++
.../xjs/english/config/BaiduProperties.java | 28 ++++++++
.../com/xjs/english/config/FeignConfig.java | 22 +++++++
.../english/consts/TranslationTypeConst.java | 12 ++++
.../controller/TranslationController.java | 39 +++++++++++
.../qo/translation/BaiDuTranslationQo.java | 48 ++++++++++++++
.../domain/qo/translation/TranslationQo.java | 36 +++++++++++
.../qo/translation/YouDaoTranslationQo.java | 30 +++++++++
.../vo/translation/GoogleTranslationVo.java | 11 ++++
.../domain/vo/translation/TranslationVo.java | 52 +++++++++++++++
.../english/exception/BusinessException.java | 24 +++++++
.../english/service/TranslationService.java | 22 +++++++
.../impl/BaiDuTranslationServiceImpl.java | 64 +++++++++++++++++++
.../impl/YouDaoTranslationServiceImpl.java | 63 ++++++++++++++++++
.../impl/BaiDuTranslationServiceImplTest.java | 30 +++++++++
.../YouDaoTranslationServiceImplTest.java | 31 +++++++++
19 files changed, 573 insertions(+), 1 deletion(-)
create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/BaiduFeignClient.java
create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/YouDaoFeignClient.java
create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/BaiduProperties.java
create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/FeignConfig.java
create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/consts/TranslationTypeConst.java
create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/controller/TranslationController.java
create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/BaiDuTranslationQo.java
create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/TranslationQo.java
create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/YouDaoTranslationQo.java
create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/GoogleTranslationVo.java
create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/TranslationVo.java
create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/exception/BusinessException.java
create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/TranslationService.java
create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/BaiDuTranslationServiceImpl.java
create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/YouDaoTranslationServiceImpl.java
create mode 100644 xjs-business/xjs-business-english/src/test/java/com/xjs/english/service/impl/BaiDuTranslationServiceImplTest.java
create mode 100644 xjs-business/xjs-business-english/src/test/java/com/xjs/english/service/impl/YouDaoTranslationServiceImplTest.java
diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableRyFeignClients.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableRyFeignClients.java
index 066e8349..9cf97fee 100644
--- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableRyFeignClients.java
+++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableRyFeignClients.java
@@ -17,7 +17,7 @@ public @interface EnableRyFeignClients
{
String[] value() default {};
- String[] basePackages() default { "com.ruoyi" };
+ String[] basePackages() default { "com.ruoyi" ,"com.xjs"};
Class>[] basePackageClasses() default {};
diff --git a/xjs-business/pom.xml b/xjs-business/pom.xml
index df25d204..0c0c494b 100644
--- a/xjs-business/pom.xml
+++ b/xjs-business/pom.xml
@@ -21,6 +21,7 @@
11
11
3.4.3.4
+ 5.7.17
@@ -92,6 +93,25 @@
${mybatisplus.version}
+
+
+ org.projectlombok
+ lombok
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+
+
+ cn.hutool
+ hutool-all
+ ${hutool.version}
+
+
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/BaiduFeignClient.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/BaiduFeignClient.java
new file mode 100644
index 00000000..0fd1fbf8
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/BaiduFeignClient.java
@@ -0,0 +1,19 @@
+package com.xjs.english.client;
+
+import com.xjs.english.domain.qo.translation.BaiDuTranslationQo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PostMapping;
+
+/**
+ * @author xiejs
+ * @desc
+ * @create 2021-12-25
+ */
+@FeignClient(name = "baidu",url = "http://api.fanyi.baidu.com/api/trans/vip/translate?")
+public interface BaiduFeignClient {
+
+ @PostMapping(headers = {"Content-Type=application/x-www-form-urlencoded"})
+ String translationApi(BaiDuTranslationQo qo);
+
+}
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/YouDaoFeignClient.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/YouDaoFeignClient.java
new file mode 100644
index 00000000..fa4e9c69
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/YouDaoFeignClient.java
@@ -0,0 +1,21 @@
+package com.xjs.english.client;
+
+import com.alibaba.fastjson.JSONObject;
+import com.xjs.english.domain.qo.translation.YouDaoTranslationQo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.cloud.openfeign.SpringQueryMap;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+/**
+ * @author xiejs
+ * @desc
+ * @create 2021-12-25
+ */
+@FeignClient(name = "youdao",url = "http://fanyi.youdao.com/translate?")
+public interface YouDaoFeignClient {
+
+ @GetMapping( headers ={ "Accept-Encoding=''"})
+ JSONObject translationApi(@SpringQueryMap YouDaoTranslationQo qo);
+}
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/BaiduProperties.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/BaiduProperties.java
new file mode 100644
index 00000000..7153600b
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/BaiduProperties.java
@@ -0,0 +1,28 @@
+package com.xjs.english.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author xiejs
+ * @desc
+ * @create 2021-12-25
+ */
+@Data
+@ConfigurationProperties(prefix = "baidu.open")
+@Component
+public class BaiduProperties {
+
+ /**
+ * APP ID
+ */
+ private String appId;
+
+ /**
+ * 密钥
+ */
+ private String key;
+
+
+}
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/FeignConfig.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/FeignConfig.java
new file mode 100644
index 00000000..48a3f614
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/FeignConfig.java
@@ -0,0 +1,22 @@
+package com.xjs.english.config;
+
+import feign.Logger;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author xiejs
+ * @desc
+ * @create 2021-12-25
+ */
+@Configuration
+public class FeignConfig{
+ /**
+ * 配置日志输出
+ * @return
+ */
+ @Bean
+ Logger.Level feignLoggerLevel() {
+ return Logger.Level.FULL;
+ }
+}
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/consts/TranslationTypeConst.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/consts/TranslationTypeConst.java
new file mode 100644
index 00000000..b1ed689b
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/consts/TranslationTypeConst.java
@@ -0,0 +1,12 @@
+package com.xjs.english.consts;
+
+/**
+ * @author xiejs
+ * @desc
+ * @create 2021-12-25
+ */
+public interface TranslationTypeConst {
+ Integer BAIDU = 1;
+ Integer YOUDAO = 2;
+ Integer GOOGLE = 3;
+}
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/controller/TranslationController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/controller/TranslationController.java
new file mode 100644
index 00000000..05ac396a
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/controller/TranslationController.java
@@ -0,0 +1,39 @@
+package com.xjs.english.controller;
+
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.xjs.english.domain.qo.translation.TranslationQo;
+import com.xjs.english.domain.vo.translation.TranslationVo;
+import com.xjs.english.service.TranslationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import static com.xjs.english.consts.TranslationTypeConst.BAIDU;
+import static com.xjs.english.consts.TranslationTypeConst.YOUDAO;
+
+/**
+ * @author xiejs
+ * @desc
+ * @create 2021-12-25
+ */
+@RestController
+@RequestMapping("translation")
+public class TranslationController {
+
+ @Autowired
+ private TranslationService youDaoTranslationServiceImpl;
+ @Autowired
+ private TranslationService baiDuTranslationServiceImpl;
+
+ @PostMapping
+ public AjaxResult translation(@Validated @RequestBody TranslationQo translationQo) {
+ TranslationVo translationVo=new TranslationVo();
+ if (BAIDU.equals(translationQo.getTranslationType())) {
+ translationVo = baiDuTranslationServiceImpl.translationApi(translationQo);
+ }
+ if (YOUDAO.equals(translationQo.getTranslationType())) {
+ translationVo = youDaoTranslationServiceImpl.translationApi(translationQo);
+ }
+ return AjaxResult.success(translationVo);
+ }
+}
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/BaiDuTranslationQo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/BaiDuTranslationQo.java
new file mode 100644
index 00000000..d9d22137
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/BaiDuTranslationQo.java
@@ -0,0 +1,48 @@
+package com.xjs.english.domain.qo.translation;
+
+import lombok.Data;
+
+/**
+ * @author xiejs
+ * @desc 百度翻译条件
+ * @create 2021-12-25
+ */
+@Data
+public class BaiDuTranslationQo {
+ /**
+ * appid
+ */
+ private String appid;
+
+ /**
+ * 密钥
+ */
+ private String key;
+
+ /**
+ * 需要翻译的词
+ */
+ private String q;
+
+ /**
+ * 翻译目标语言
+ */
+ private String to ;
+
+
+ /**
+ * 翻译源语言
+ */
+ private String from = "auto";
+
+
+ /**
+ * 盐(随机数)
+ */
+ private String salt = "xjsisyourfatter";
+
+ /**
+ * 签名(appid+query+salt+key的MD5值)
+ */
+ private String sign;
+}
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/TranslationQo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/TranslationQo.java
new file mode 100644
index 00000000..55af146d
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/TranslationQo.java
@@ -0,0 +1,36 @@
+package com.xjs.english.domain.qo.translation;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @author xiejs
+ * @desc 翻译条件
+ * @create 2021-12-25
+ */
+@Data
+public class TranslationQo implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 需要翻译的词(前端可以指定翻译词)
+ */
+ @NotBlank(message = "翻译内容不能为空")
+ private String q="你傻吗,大傻逼?嗯,哈哈哈";
+
+ /**
+ * 翻译目标语言(前端可以指定目标语言)
+ */
+ private String to = "auto";
+
+ /**
+ * 翻译api类型(例如:有道、谷歌、百度等)
+ * 1、百度 2、有道 3、谷歌 4 ...
+ */
+ @NotNull(message = "翻译api类型不能为空")
+ private Integer translationType;
+}
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/YouDaoTranslationQo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/YouDaoTranslationQo.java
new file mode 100644
index 00000000..4a38538e
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/YouDaoTranslationQo.java
@@ -0,0 +1,30 @@
+package com.xjs.english.domain.qo.translation;
+
+import lombok.Data;
+
+/**
+ * @author xiejs
+ * @desc 有道翻译条件实体
+ * @create 2021-12-25
+ */
+@Data
+public class YouDaoTranslationQo{
+
+ /**
+ * 响应类型
+ */
+ private String doctype="json";
+
+ /**
+ * 目标语言(有道的目标语言无效,中转英、英转中)
+ */
+ private String type;
+
+ /**
+ * 翻译的内容
+ */
+ private String i ;
+
+
+
+}
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/GoogleTranslationVo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/GoogleTranslationVo.java
new file mode 100644
index 00000000..17460360
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/GoogleTranslationVo.java
@@ -0,0 +1,11 @@
+package com.xjs.english.domain.vo.translation;
+
+/**
+ * @author xiejs
+ * @desc 谷歌翻译实体
+ * @create 2021-12-25
+ */
+public class GoogleTranslationVo extends TranslationVo {
+
+
+}
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/TranslationVo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/TranslationVo.java
new file mode 100644
index 00000000..3b653b00
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/TranslationVo.java
@@ -0,0 +1,52 @@
+package com.xjs.english.domain.vo.translation;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author xiejs
+ * @desc 翻译实体类VO
+ * @create 2021-12-25
+ */
+@Data
+public class TranslationVo implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 源语言
+ */
+ private String from;
+
+ /**
+ * 目标语言
+ */
+ private String to;
+
+ /**
+ * 翻译结果
+ */
+ private List