Browse Source

翻译api

master
La123123 4 weeks ago
parent
commit
2c972803c1
  1. 13
      im-platform/src/main/java/com/bx/implatform/controller/LoginController.java
  2. 97
      im-platform/src/main/java/com/bx/implatform/util/BaiduTranslationUtils.java
  3. 678
      im-web/src/components/chat/ChatBox.vue

13
im-platform/src/main/java/com/bx/implatform/controller/LoginController.java

@ -8,6 +8,7 @@ import com.bx.implatform.result.Result;
import com.bx.implatform.result.ResultUtils; import com.bx.implatform.result.ResultUtils;
import com.bx.implatform.service.ImAgentService; import com.bx.implatform.service.ImAgentService;
import com.bx.implatform.service.UserService; import com.bx.implatform.service.UserService;
import com.bx.implatform.util.BaiduTranslationUtils;
import com.bx.implatform.vo.LoginVO; import com.bx.implatform.vo.LoginVO;
import com.github.xiaoymin.knife4j.annotations.Ignore; import com.github.xiaoymin.knife4j.annotations.Ignore;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -73,4 +74,16 @@ public class LoginController {
return ResultUtils.success(jsonObject); return ResultUtils.success(jsonObject);
} }
@PostMapping("/getTranslate")
@Operation(summary = "获取配置", description = "用户注册")
public Result getTranslate(@RequestBody JSONObject jsonObject) {
System.out.println("1111111111");
String str = jsonObject.getStr("str");
String trans = BaiduTranslationUtils.translate(str,"zh");
return ResultUtils.success(trans,"success");
}
} }

97
im-platform/src/main/java/com/bx/implatform/util/BaiduTranslationUtils.java

@ -0,0 +1,97 @@
package com.bx.implatform.util;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.digest.DigestUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import java.nio.charset.StandardCharsets;
import java.util.List;
/**
* 百度翻译工具类
*/
@Slf4j
public class BaiduTranslationUtils {
/**
* 百度翻译API地址
*/
private static final String API_URL = "https://fanyi-api.baidu.com/api/trans/vip/translate";
/**
* 百度翻译APPID
*/
private static final String APP_ID = "20260420002597860";
/**
* 百度翻译密钥
*/
private static final String SECRET_KEY = "bGdLDbZgM3WMOL09_1qI";
/**
* 翻译文本
*
* @param query 待翻译文本
* @param from 源语言可设置为"auto"自动检测
* @param to 目标语言
* @return 翻译结果
*/
public static String translate(String query, String from, String to) {
try {
// 生成随机数
String salt = RandomUtil.randomNumbers(10);
// 生成签名:appid+q+salt+密钥的MD5值
String signStr = APP_ID + query + salt + SECRET_KEY;
String sign = DigestUtil.md5Hex(signStr);
// 发送请求
HttpResponse response = HttpRequest.post(API_URL)
.form("q", query)
.form("from", from)
.form("to", to)
.form("appid", APP_ID)
.form("salt", salt)
.form("sign", sign)
.execute();
// 解析响应
String body = response.body();
JSONObject result = JSONUtil.parseObj(body);
// 检查是否有错误
if (result.containsKey("error_code")) {
log.error("百度翻译失败,错误码:{},错误信息:{}", result.getStr("error_code"), result.getStr("error_msg"));
return result.getStr("error_msg") == null ? "system error" : "system error:" + result.getStr("error_msg");
}
// 获取翻译结果
List<JSONObject> transResults = result.getBeanList("trans_result", JSONObject.class);
if (transResults == null || transResults.isEmpty()) {
log.error("百度翻译结果为空");
return "result empty";
}
// 返回第一条翻译结果
return transResults.get(0).getStr("dst");
} catch (Exception e) {
log.error("百度翻译异常", e);
return "translation unknown error";
}
}
/**
* 翻译文本自动检测源语言
*
* @param query 待翻译文本
* @param to 目标语言
* @return 翻译结果
*/
public static String translate(String query, String to) {
return translate(query, "auto", to);
}
}

678
im-web/src/components/chat/ChatBox.vue

File diff suppressed because it is too large
Loading…
Cancel
Save