说明:1、英语模块添加单词接口修改,可以feign远程调用其他服务完成翻译

pull/254/head
xjs 4 years ago
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 truefalse
*/
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…
Cancel
Save