|
@@ -1,13 +1,7 @@
|
|
|
package com.xy.service;
|
|
|
|
|
|
-import cn.hutool.core.collection.CollUtil;
|
|
|
-import cn.hutool.core.util.StrUtil;
|
|
|
-import cn.hutool.json.JSONArray;
|
|
|
-import cn.hutool.json.JSONObject;
|
|
|
-import cn.hutool.json.JSONUtil;
|
|
|
import com.xy.annotate.RestMappingController;
|
|
|
import com.xy.dto.TranslateDto;
|
|
|
-import com.xy.entity.SysMenu;
|
|
|
import com.xy.service.impl.SysMenuServiceImpl;
|
|
|
import com.xy.third.baidu.TransApi;
|
|
|
import com.xy.utils.R;
|
|
@@ -15,16 +9,11 @@ import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.springframework.cloud.client.loadbalancer.AsyncLoadBalancerAutoConfiguration;
|
|
|
-import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-
|
|
|
/**
|
|
|
* 翻译服务
|
|
|
*/
|
|
@@ -35,40 +24,15 @@ import java.util.List;
|
|
|
@RestMappingController("/translate")
|
|
|
public class TranslateService {
|
|
|
|
|
|
- private static final String APP_ID = "20240428002037687";
|
|
|
- private static final String SECURITY_KEY = "nXkFm4SaA2Wrmb42Xmky";
|
|
|
- private final SysMenuServiceImpl sysMenuService;
|
|
|
- private final AsyncLoadBalancerAutoConfiguration asyncLoadBalancerAutoConfiguration;
|
|
|
|
|
|
- /**
|
|
|
- * 调用百度翻译API
|
|
|
- *
|
|
|
- * @param query 待翻译的文本
|
|
|
- * @param lanSrc 原语言 zh
|
|
|
- * @param lanDst 目标语言 en
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static String translate(String query, String lanSrc, String lanDst) {
|
|
|
- TransApi api = new TransApi(APP_ID, SECURITY_KEY);
|
|
|
- log.info("正在翻译文本:{}", query);
|
|
|
- JSONObject res = JSONUtil.parseObj(api.getTransResult(query, lanSrc, lanDst));
|
|
|
- JSONArray transResult = res.getJSONArray("trans_result");
|
|
|
- if (!JSONUtil.isNull(transResult)) {
|
|
|
- JSONObject jsonObject = transResult.getJSONObject(0);
|
|
|
- log.info("文本:{},翻译结果:{}", query, jsonObject.getStr("dst"));
|
|
|
- return jsonObject.getStr("dst");
|
|
|
- } else {
|
|
|
- log.info("文本:{},翻译失败:{}", query, JSONUtil.toJsonPrettyStr(res));
|
|
|
- return "-";
|
|
|
- }
|
|
|
- }
|
|
|
+ private final SysMenuServiceImpl sysMenuService;
|
|
|
|
|
|
@PostMapping("/menuOne")
|
|
|
@ApiOperation("单个菜单翻译-同步返回结果")
|
|
|
public R<String> translateMenuOne(@RequestBody @Validated TranslateDto.One one) {
|
|
|
String content = one.getContent();
|
|
|
String targetType = one.getTargetType();
|
|
|
- String translatedValue = translate(content, "zh", targetType);
|
|
|
+ String translatedValue = TransApi.translate(content, "zh", targetType);
|
|
|
return R.ok(translatedValue);
|
|
|
}
|
|
|
|
|
@@ -81,34 +45,9 @@ public class TranslateService {
|
|
|
@PostMapping("/menuAll")
|
|
|
@ApiOperation("菜单全量翻译-已翻译的忽略")
|
|
|
public R<?> translateMenuAll() {
|
|
|
- translateAllMenu();
|
|
|
+ sysMenuService.translateAllMenu();
|
|
|
return R.ok();
|
|
|
}
|
|
|
|
|
|
- @Async
|
|
|
- protected void translateAllMenu() {
|
|
|
- List<SysMenu> sysMenus = sysMenuService.list();
|
|
|
- List<SysMenu> updateMenus = new ArrayList<>();
|
|
|
- for (SysMenu sysMenu : sysMenus) {
|
|
|
- String name = sysMenu.getName();
|
|
|
- String enName = sysMenu.getEnName();
|
|
|
- if (StrUtil.isEmpty(enName)) {
|
|
|
- //百度api翻译
|
|
|
- String translatedValue = translate(name, "zh", "en");
|
|
|
- sysMenu.setName(translatedValue);
|
|
|
- updateMenus.add(sysMenu);
|
|
|
- // 增加1.2秒的延迟
|
|
|
- try {
|
|
|
- Thread.sleep(1800);
|
|
|
- } catch (InterruptedException e) {
|
|
|
- Thread.currentThread().interrupt();
|
|
|
- log.error("线程中断异常", e);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (CollUtil.isNotEmpty(updateMenus)) {
|
|
|
- sysMenuService.updateBatchById(updateMenus);
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
}
|