diff --git a/im-platform/src/main/java/com/bx/implatform/controller/LoginController.java b/im-platform/src/main/java/com/bx/implatform/controller/LoginController.java index 6dce7a2..fba3da3 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/LoginController.java +++ b/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.service.ImAgentService; import com.bx.implatform.service.UserService; +import com.bx.implatform.util.BaiduTranslationUtils; import com.bx.implatform.vo.LoginVO; import com.github.xiaoymin.knife4j.annotations.Ignore; import io.swagger.v3.oas.annotations.Operation; @@ -73,4 +74,16 @@ public class LoginController { 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"); + } + } diff --git a/im-platform/src/main/java/com/bx/implatform/util/BaiduTranslationUtils.java b/im-platform/src/main/java/com/bx/implatform/util/BaiduTranslationUtils.java new file mode 100644 index 0000000..bf5b222 --- /dev/null +++ b/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 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); + } +} diff --git a/im-web/src/components/chat/ChatBox.vue b/im-web/src/components/chat/ChatBox.vue index 2636435..28b5aaf 100644 --- a/im-web/src/components/chat/ChatBox.vue +++ b/im-web/src/components/chat/ChatBox.vue @@ -1,166 +1,259 @@ \ No newline at end of file +