说明:1、英语模块添加单词接口修改,可以feign远程调用其他服务完成翻译
This commit is contained in:
parent
75fded8127
commit
576be05dfa
|
|
@ -0,0 +1,25 @@
|
||||||
|
package com.xjs.business.english;
|
||||||
|
|
||||||
|
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 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-29
|
||||||
|
*/
|
||||||
|
@FeignClient(contextId = "remoteTranslationFeign",
|
||||||
|
value = ServiceNameConstants.BUSINESS_OPENAPI_SERVICE,
|
||||||
|
fallbackFactory = RemoteTranslationFactory.class)
|
||||||
|
public interface RemoteTranslationFeign {
|
||||||
|
|
||||||
|
@GetMapping(value = "/translation/forRPC")
|
||||||
|
//get请求传递单个参数需要此注解
|
||||||
|
R<TranslationVo> translation(@RequestParam("content") String content);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,96 @@
|
||||||
|
package com.xjs.business.english.domain;
|
||||||
|
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xiejs
|
||||||
|
* @desc 翻译实体类VO
|
||||||
|
* @create 2021-12-25
|
||||||
|
*/
|
||||||
|
public class TranslationVo implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 源语言
|
||||||
|
*/
|
||||||
|
private String from;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 目标语言
|
||||||
|
*/
|
||||||
|
private String to;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 翻译结果
|
||||||
|
*/
|
||||||
|
private List<Map<String, String>> transResult;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否错误
|
||||||
|
*/
|
||||||
|
private Long errorCode;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运行时间,单位毫秒
|
||||||
|
*/
|
||||||
|
private Long elapsedTime;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 语言类型
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
public String getFrom() {
|
||||||
|
return from;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFrom(String from) {
|
||||||
|
this.from = from;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTo() {
|
||||||
|
return to;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTo(String to) {
|
||||||
|
this.to = to;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Map<String, String>> getTransResult() {
|
||||||
|
return transResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTransResult(List<Map<String, String>> transResult) {
|
||||||
|
this.transResult = transResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getErrorCode() {
|
||||||
|
return errorCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setErrorCode(Long errorCode) {
|
||||||
|
this.errorCode = errorCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getElapsedTime() {
|
||||||
|
return elapsedTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setElapsedTime(Long elapsedTime) {
|
||||||
|
this.elapsedTime = elapsedTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType(String type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
package com.xjs.business.english.factory;
|
||||||
|
|
||||||
|
import com.ruoyi.common.core.domain.R;
|
||||||
|
import com.ruoyi.system.api.factory.RemoteFileFallbackFactory;
|
||||||
|
import com.xjs.business.english.RemoteTranslationFeign;
|
||||||
|
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-29
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class RemoteTranslationFactory implements FallbackFactory<RemoteTranslationFeign> {
|
||||||
|
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(RemoteFileFallbackFactory.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RemoteTranslationFeign create(Throwable cause) {
|
||||||
|
log.error("api模块翻译服务调用失败:{}", cause.getMessage());
|
||||||
|
return content -> R.fail("翻译服务调用失败" + cause.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -46,7 +46,8 @@
|
||||||
size="mini"
|
size="mini"
|
||||||
@click="handleAdd"
|
@click="handleAdd"
|
||||||
v-hasPermi="['english:word:add']"
|
v-hasPermi="['english:word:add']"
|
||||||
>新增</el-button>
|
>新增
|
||||||
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button
|
<el-button
|
||||||
|
|
@ -57,7 +58,8 @@
|
||||||
:disabled="single"
|
:disabled="single"
|
||||||
@click="handleUpdate"
|
@click="handleUpdate"
|
||||||
v-hasPermi="['english:word:edit']"
|
v-hasPermi="['english:word:edit']"
|
||||||
>修改</el-button>
|
>修改
|
||||||
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button
|
<el-button
|
||||||
|
|
@ -68,7 +70,8 @@
|
||||||
:disabled="multiple"
|
:disabled="multiple"
|
||||||
@click="handleDelete"
|
@click="handleDelete"
|
||||||
v-hasPermi="['english:word:remove']"
|
v-hasPermi="['english:word:remove']"
|
||||||
>删除</el-button>
|
>删除
|
||||||
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button
|
<el-button
|
||||||
|
|
@ -78,16 +81,17 @@
|
||||||
size="mini"
|
size="mini"
|
||||||
@click="handleExport"
|
@click="handleExport"
|
||||||
v-hasPermi="['english:word:export']"
|
v-hasPermi="['english:word:export']"
|
||||||
>导出</el-button>
|
>导出
|
||||||
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-table v-loading="loading" :data="wordList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="wordList" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center"/>
|
||||||
<el-table-column label="英语单词" align="center" prop="englishWord" :show-overflow-tooltip="true"/>
|
<el-table-column label="英语单词" align="center" prop="englishWord" :show-overflow-tooltip="true"/>
|
||||||
<el-table-column label="中文" align="center" prop="chineseWord" :show-overflow-tooltip="true"/>
|
<el-table-column label="中文" align="center" prop="chineseWord" :show-overflow-tooltip="true"/>
|
||||||
<el-table-column label="排序" align="center" prop="sort" :show-overflow-tooltip="true"/>
|
<el-table-column label="排序" align="center" prop="sort" :show-overflow-tooltip="true"/>
|
||||||
<el-table-column label="收藏" align="center" prop="isCollect">
|
<el-table-column label="收藏" align="center" prop="isCollect">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<dict-tag :options="dict.type.english_collect" :value="scope.row.isCollect"/>
|
<dict-tag :options="dict.type.english_collect" :value="scope.row.isCollect"/>
|
||||||
|
|
@ -100,19 +104,19 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="查看次数" align="center" prop="lookCount" :show-overflow-tooltip="true"/>
|
<el-table-column label="查看次数" align="center" prop="lookCount" :show-overflow-tooltip="true"/>
|
||||||
<el-table-column label="创建时间" align="center" prop="createTime" :show-overflow-tooltip="true"/>
|
<el-table-column label="创建时间" align="center" prop="createTime" :show-overflow-tooltip="true"/>
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button circle
|
<el-button circle
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-edit"
|
icon="el-icon-edit"
|
||||||
@click="handleUpdate(scope.row)"
|
@click="handleUpdate(scope.row)"
|
||||||
v-hasPermi="['english:word:edit']"
|
v-hasPermi="['english:word:edit']"
|
||||||
></el-button>
|
></el-button>
|
||||||
<el-button circle
|
<el-button circle
|
||||||
type="danger"
|
type="danger"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
@click="handleDelete(scope.row)"
|
@click="handleDelete(scope.row)"
|
||||||
v-hasPermi="['english:word:remove']"
|
v-hasPermi="['english:word:remove']"
|
||||||
></el-button>
|
></el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
@ -130,13 +134,13 @@
|
||||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="英语单词" prop="englishWord">
|
<el-form-item label="英语单词" prop="englishWord">
|
||||||
<el-input v-model="form.englishWord" placeholder="请输入英语单词" />
|
<el-input v-model="form.englishWord" placeholder="请输入英语单词"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="中文" prop="chineseWord">
|
<el-form-item label="中文" prop="chineseWord">
|
||||||
<el-input v-model="form.chineseWord" placeholder="请输入对应的中文" />
|
<el-input v-model="form.chineseWord" placeholder="请输入对应的中文"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="排序" prop="sort">
|
<el-form-item label="排序" prop="sort">
|
||||||
<el-input v-model="form.sort" placeholder="请输入排序" />
|
<el-input v-model="form.sort" placeholder="请输入排序"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="收藏" prop="isCollect">
|
<el-form-item label="收藏" prop="isCollect">
|
||||||
<el-select v-model="form.isCollect" placeholder="请选择是否收藏">
|
<el-select v-model="form.isCollect" placeholder="请选择是否收藏">
|
||||||
|
|
@ -144,7 +148,7 @@
|
||||||
v-for="dict in dict.type.english_collect"
|
v-for="dict in dict.type.english_collect"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
:label="dict.label"
|
:label="dict.label"
|
||||||
:value="parseInt(dict.value)"
|
:value="parseInt(dict.value)"
|
||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -154,7 +158,7 @@
|
||||||
v-for="dict in dict.type.english_top"
|
v-for="dict in dict.type.english_top"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
:label="dict.label"
|
:label="dict.label"
|
||||||
:value="parseInt(dict.value)"
|
:value="parseInt(dict.value)"
|
||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -168,7 +172,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { listWord, getWord, delWord, addWord, updateWord } from "@/api/business/english/word";
|
import {listWord, getWord, delWord, addWord, updateWord} from "@/api/business/english/word";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Word",
|
name: "Word",
|
||||||
|
|
@ -208,16 +212,16 @@ export default {
|
||||||
// 表单校验
|
// 表单校验
|
||||||
rules: {
|
rules: {
|
||||||
englishWord: [
|
englishWord: [
|
||||||
{ required: true, message: "英语单词不能为空", trigger: "blur" }
|
{required: true, message: "英语单词不能为空", trigger: "blur"}
|
||||||
],
|
],
|
||||||
isCollect: [
|
isCollect: [
|
||||||
{ required: true, message: "是否收藏 1收藏 2不收藏不能为空", trigger: "change" }
|
{required: true, message: "是否收藏 1收藏 2不收藏不能为空", trigger: "change"}
|
||||||
],
|
],
|
||||||
top: [
|
top: [
|
||||||
{ required: true, message: "置顶 1置顶 2不置顶不能为空", trigger: "change" }
|
{required: true, message: "置顶 1置顶 2不置顶不能为空", trigger: "change"}
|
||||||
],
|
],
|
||||||
createTime: [
|
createTime: [
|
||||||
{ required: true, message: "创建时间不能为空", trigger: "blur" }
|
{required: true, message: "创建时间不能为空", trigger: "blur"}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -273,7 +277,7 @@ export default {
|
||||||
// 多选框选中数据
|
// 多选框选中数据
|
||||||
handleSelectionChange(selection) {
|
handleSelectionChange(selection) {
|
||||||
this.ids = selection.map(item => item.id)
|
this.ids = selection.map(item => item.id)
|
||||||
this.single = selection.length!==1
|
this.single = selection.length !== 1
|
||||||
this.multiple = !selection.length
|
this.multiple = !selection.length
|
||||||
},
|
},
|
||||||
/** 新增按钮操作 */
|
/** 新增按钮操作 */
|
||||||
|
|
@ -315,12 +319,13 @@ export default {
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
handleDelete(row) {
|
handleDelete(row) {
|
||||||
const ids = row.id || this.ids;
|
const ids = row.id || this.ids;
|
||||||
this.$modal.confirm('是否确认删除英语单词编号为"' + ids + '"的数据项?').then(function() {
|
this.$modal.confirm('是否确认删除英语单词编号为"' + ids + '"的数据项?').then(function () {
|
||||||
return delWord(ids);
|
return delWord(ids);
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.getList();
|
this.getList();
|
||||||
this.$modal.msgSuccess("删除成功");
|
this.$modal.msgSuccess("删除成功");
|
||||||
}).catch(() => {});
|
}).catch(() => {
|
||||||
|
});
|
||||||
},
|
},
|
||||||
/** 导出按钮操作 */
|
/** 导出按钮操作 */
|
||||||
handleExport() {
|
handleExport() {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.xjs.common.exception;
|
package com.xjs.exception;
|
||||||
|
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.xjs.common.exception;
|
package com.xjs.exception;
|
||||||
|
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
|
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
package com.xjs.utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xiejs
|
||||||
|
* @desc 中文工具类
|
||||||
|
* @create 2021-12-29
|
||||||
|
*/
|
||||||
|
public class ChineseUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验String是否全是中文
|
||||||
|
*
|
||||||
|
* @param name
|
||||||
|
* 被校验的字符串
|
||||||
|
* @return true代表全是汉字
|
||||||
|
*/
|
||||||
|
public static boolean checkNameChese(String name) {
|
||||||
|
boolean res = true;
|
||||||
|
char[] cTemp = name.toCharArray();
|
||||||
|
for (int i = 0; i < name.length(); i++) {
|
||||||
|
if (!isChinese(cTemp[i])) {
|
||||||
|
res = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判定输入的是否是汉字
|
||||||
|
*
|
||||||
|
* @param c
|
||||||
|
* 被校验的字符
|
||||||
|
* @return true代表是汉字
|
||||||
|
*/
|
||||||
|
public static boolean isChinese(char c) {
|
||||||
|
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
|
||||||
|
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|
||||||
|
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|
||||||
|
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|
||||||
|
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|
||||||
|
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|
||||||
|
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
* 判断是否是字母
|
||||||
|
|
||||||
|
* @param str 传入字符串
|
||||||
|
|
||||||
|
* @return 是字母返回true,否则返回false
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static boolean isAlpha(String str) {
|
||||||
|
|
||||||
|
if(str==null) return false;
|
||||||
|
|
||||||
|
return str.matches("[a-zA-Z]+");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
package com.xjs.utils;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xiejs
|
||||||
|
* @desc
|
||||||
|
* @create 2021-12-29
|
||||||
|
*/
|
||||||
|
class ChineseUtilTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test1() {
|
||||||
|
boolean b = ChineseUtil.checkNameChese("爱喔爱");
|
||||||
|
System.out.println(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -34,6 +34,13 @@ public class EnglishWord {
|
||||||
@Excel(name = "中文")
|
@Excel(name = "中文")
|
||||||
private String chineseWord;
|
private String chineseWord;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 前端传递的内容(可能是中、英文)
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String content;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 排序1,2,3,4
|
* 排序1,2,3,4
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,15 @@
|
||||||
package com.xjs.word.service.impl;
|
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.exception.BusinessException;
|
||||||
|
import com.xjs.utils.ChineseUtil;
|
||||||
import com.xjs.word.domain.EnglishWord;
|
import com.xjs.word.domain.EnglishWord;
|
||||||
import com.xjs.word.mapper.EnglishWordMapper;
|
import com.xjs.word.mapper.EnglishWordMapper;
|
||||||
import com.xjs.word.service.IEnglishWordService;
|
import com.xjs.word.service.IEnglishWordService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
@ -18,6 +25,8 @@ import java.util.List;
|
||||||
public class EnglishWordServiceImpl implements IEnglishWordService {
|
public class EnglishWordServiceImpl implements IEnglishWordService {
|
||||||
@Resource
|
@Resource
|
||||||
private EnglishWordMapper englishWordMapper;
|
private EnglishWordMapper englishWordMapper;
|
||||||
|
@Autowired
|
||||||
|
private RemoteTranslationFeign remoteTranslationFeign;
|
||||||
|
|
||||||
|
|
||||||
//------------------------代码自动生成-----------------------------------
|
//------------------------代码自动生成-----------------------------------
|
||||||
|
|
@ -52,9 +61,38 @@ public class EnglishWordServiceImpl implements IEnglishWordService {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int insertEnglishWord(EnglishWord englishWord) {
|
public int insertEnglishWord(EnglishWord englishWord) {
|
||||||
|
//校验前端传入的是否英文或中文
|
||||||
|
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());
|
||||||
|
R<TranslationVo> translationResult = remoteTranslationFeign.translation(englishWord.getContent());
|
||||||
|
if(translationResult.getCode()!= Constants.FAIL){
|
||||||
|
String dst = translationResult.getData().getTransResult().get(0).get("dst");
|
||||||
|
englishWord.setEnglishWord(dst);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (alpha) {
|
||||||
|
englishWord.setEnglishWord(englishWord.getContent());
|
||||||
|
R<TranslationVo> translationResult = remoteTranslationFeign.translation(englishWord.getContent());
|
||||||
|
if(translationResult.getCode()!= Constants.FAIL){
|
||||||
|
String dst = translationResult.getData().getTransResult().get(0).get("dst");
|
||||||
|
englishWord.setChineseWord(dst);
|
||||||
|
}
|
||||||
|
}
|
||||||
return englishWordMapper.insert(englishWord);
|
return englishWordMapper.insert(englishWord);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改英语单词
|
* 修改英语单词
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||||
import com.xjs.common.client.TianXingJDTCFeignClient;
|
import com.xjs.common.client.TianXingJDTCFeignClient;
|
||||||
import com.xjs.config.TianXingProperties;
|
import com.xjs.config.TianXingProperties;
|
||||||
import com.xjs.common.consts.TianXingConst;
|
import com.xjs.common.consts.TianXingConst;
|
||||||
import com.xjs.common.exception.ApiException;
|
import com.xjs.exception.ApiException;
|
||||||
import com.xjs.copywriting.domain.CopyWriting;
|
import com.xjs.copywriting.domain.CopyWriting;
|
||||||
import com.xjs.copywriting.domain.RequestBody;
|
import com.xjs.copywriting.domain.RequestBody;
|
||||||
import com.xjs.copywriting.factory.CopyWritingFactory;
|
import com.xjs.copywriting.factory.CopyWritingFactory;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||||
import com.xjs.common.client.TianXingMMMYFeignClient;
|
import com.xjs.common.client.TianXingMMMYFeignClient;
|
||||||
import com.xjs.config.TianXingProperties;
|
import com.xjs.config.TianXingProperties;
|
||||||
import com.xjs.common.consts.TianXingConst;
|
import com.xjs.common.consts.TianXingConst;
|
||||||
import com.xjs.common.exception.ApiException;
|
import com.xjs.exception.ApiException;
|
||||||
import com.xjs.copywriting.domain.CopyWriting;
|
import com.xjs.copywriting.domain.CopyWriting;
|
||||||
import com.xjs.copywriting.domain.RequestBody;
|
import com.xjs.copywriting.domain.RequestBody;
|
||||||
import com.xjs.copywriting.factory.CopyWritingFactory;
|
import com.xjs.copywriting.factory.CopyWritingFactory;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||||
import com.xjs.common.client.TianXingPYQFeignClient;
|
import com.xjs.common.client.TianXingPYQFeignClient;
|
||||||
import com.xjs.config.TianXingProperties;
|
import com.xjs.config.TianXingProperties;
|
||||||
import com.xjs.common.consts.TianXingConst;
|
import com.xjs.common.consts.TianXingConst;
|
||||||
import com.xjs.common.exception.ApiException;
|
import com.xjs.exception.ApiException;
|
||||||
import com.xjs.copywriting.domain.CopyWriting;
|
import com.xjs.copywriting.domain.CopyWriting;
|
||||||
import com.xjs.copywriting.domain.RequestBody;
|
import com.xjs.copywriting.domain.RequestBody;
|
||||||
import com.xjs.copywriting.factory.CopyWritingFactory;
|
import com.xjs.copywriting.factory.CopyWritingFactory;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||||
import com.xjs.common.client.TianXingWYYFeignClient;
|
import com.xjs.common.client.TianXingWYYFeignClient;
|
||||||
import com.xjs.config.TianXingProperties;
|
import com.xjs.config.TianXingProperties;
|
||||||
import com.xjs.common.consts.TianXingConst;
|
import com.xjs.common.consts.TianXingConst;
|
||||||
import com.xjs.common.exception.ApiException;
|
import com.xjs.exception.ApiException;
|
||||||
import com.xjs.copywriting.domain.CopyWriting;
|
import com.xjs.copywriting.domain.CopyWriting;
|
||||||
import com.xjs.copywriting.domain.RequestBody;
|
import com.xjs.copywriting.domain.RequestBody;
|
||||||
import com.xjs.copywriting.factory.CopyWritingFactory;
|
import com.xjs.copywriting.factory.CopyWritingFactory;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package com.xjs.translation.controller;
|
package com.xjs.translation.controller;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.RandomUtil;
|
||||||
|
import com.ruoyi.common.core.domain.R;
|
||||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||||
import com.ruoyi.common.log.annotation.Log;
|
import com.ruoyi.common.log.annotation.Log;
|
||||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||||
|
|
@ -9,12 +11,12 @@ import com.xjs.translation.domain.vo.translation.TranslationVo;
|
||||||
import com.xjs.translation.factory.TranslationFactory;
|
import com.xjs.translation.factory.TranslationFactory;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.log4j.Log4j2;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import java.util.ArrayList;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import static com.xjs.common.consts.TranslationTypeConst.BAIDU;
|
import static com.xjs.common.consts.TranslationTypeConst.BAIDU;
|
||||||
import static com.xjs.common.consts.TranslationTypeConst.YOUDAO;
|
import static com.xjs.common.consts.TranslationTypeConst.YOUDAO;
|
||||||
|
|
@ -27,6 +29,7 @@ import static com.xjs.common.consts.TranslationTypeConst.YOUDAO;
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("translation")
|
@RequestMapping("translation")
|
||||||
@Api(tags = "业务模块-翻译管理")
|
@Api(tags = "业务模块-翻译管理")
|
||||||
|
@Log4j2
|
||||||
public class TranslationController {
|
public class TranslationController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|
@ -40,7 +43,7 @@ public class TranslationController {
|
||||||
@RequiresLogin
|
@RequiresLogin
|
||||||
@RequiresPermissions("openapi:translation:api")
|
@RequiresPermissions("openapi:translation:api")
|
||||||
public AjaxResult translation(@Validated @RequestBody TranslationQo translationQo) {
|
public AjaxResult translation(@Validated @RequestBody TranslationQo translationQo) {
|
||||||
TranslationVo translationVo=new TranslationVo();
|
TranslationVo translationVo = new TranslationVo();
|
||||||
if (BAIDU.equals(translationQo.getTranslationType())) {
|
if (BAIDU.equals(translationQo.getTranslationType())) {
|
||||||
translationVo = baiDuTranslationFactory.translationApi(translationQo);
|
translationVo = baiDuTranslationFactory.translationApi(translationQo);
|
||||||
}
|
}
|
||||||
|
|
@ -49,4 +52,39 @@ public class TranslationController {
|
||||||
}
|
}
|
||||||
return AjaxResult.success(translationVo);
|
return AjaxResult.success(translationVo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping("forRPC")
|
||||||
|
@ApiOperation("翻译接口远程PRC调用")
|
||||||
|
public R<TranslationVo> translation(String content) {
|
||||||
|
TranslationFactory translationFactory = this.randomApi();
|
||||||
|
TranslationQo translationQo = new TranslationQo();
|
||||||
|
translationQo.setQ(content);
|
||||||
|
TranslationVo translationVo;
|
||||||
|
try {
|
||||||
|
translationVo = translationFactory.translationApi(translationQo);
|
||||||
|
} catch (Exception e) {
|
||||||
|
translationVo = new TranslationVo();
|
||||||
|
translationVo.setErrorCode(500L);
|
||||||
|
log.error("翻译接口平台异常");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return R.ok(translationVo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 封装随机调用api
|
||||||
|
*
|
||||||
|
* @return 文案工厂
|
||||||
|
*/
|
||||||
|
private TranslationFactory randomApi() {
|
||||||
|
ArrayList<TranslationFactory> factories = new ArrayList<>();
|
||||||
|
//添加了新接口只需要在这add接口进去
|
||||||
|
factories.add(youDaoTranslationFactory);
|
||||||
|
factories.add(baiDuTranslationFactory);
|
||||||
|
//--------add----------------------------;-
|
||||||
|
//随机调用集合中的接口
|
||||||
|
return RandomUtil.randomEle(factories);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.xjs.common.client.BaiduFeignClient;
|
import com.xjs.common.client.BaiduFeignClient;
|
||||||
import com.xjs.config.BaiduProperties;
|
import com.xjs.config.BaiduProperties;
|
||||||
import com.xjs.common.exception.ApiException;
|
import com.xjs.exception.ApiException;
|
||||||
import com.xjs.translation.domain.qo.translation.BaiDuTranslationQo;
|
import com.xjs.translation.domain.qo.translation.BaiDuTranslationQo;
|
||||||
import com.xjs.translation.domain.qo.translation.TranslationQo;
|
import com.xjs.translation.domain.qo.translation.TranslationQo;
|
||||||
import com.xjs.translation.domain.vo.translation.TranslationVo;
|
import com.xjs.translation.domain.vo.translation.TranslationVo;
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package com.xjs.translation.factory.impl;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.xjs.common.client.YouDaoFeignClient;
|
import com.xjs.common.client.YouDaoFeignClient;
|
||||||
import com.xjs.common.exception.ApiException;
|
import com.xjs.exception.ApiException;
|
||||||
import com.xjs.translation.domain.qo.translation.TranslationQo;
|
import com.xjs.translation.domain.qo.translation.TranslationQo;
|
||||||
import com.xjs.translation.domain.qo.translation.YouDaoTranslationQo;
|
import com.xjs.translation.domain.qo.translation.YouDaoTranslationQo;
|
||||||
import com.xjs.translation.domain.vo.translation.TranslationVo;
|
import com.xjs.translation.domain.vo.translation.TranslationVo;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue