From a67a4adf69bf20169e703c2075a5a4cfbe3fc6d7 Mon Sep 17 00:00:00 2001 From: La123123 <617330105@qq.com> Date: Tue, 28 Apr 2026 10:11:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E9=85=8D=E7=BD=AE=E8=B0=B7?= =?UTF-8?q?=E6=AD=8C=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/im/setting/indexSetting.vue | 102 +++++++++++++++++- .../setting/domain/TranslationSetting.java | 2 + .../im/service/impl/ImSettingServiceImpl.java | 38 ++++--- 3 files changed, 125 insertions(+), 17 deletions(-) diff --git a/im-admin-ui/src/views/im/setting/indexSetting.vue b/im-admin-ui/src/views/im/setting/indexSetting.vue index 3c02fb9..3f44ac2 100644 --- a/im-admin-ui/src/views/im/setting/indexSetting.vue +++ b/im-admin-ui/src/views/im/setting/indexSetting.vue @@ -50,6 +50,25 @@ + + + + + + + +
+ 保存配置 +
+
+
+
@@ -75,6 +94,7 @@ const defaultSettingData = ref({ // 存储初始获取的数据 const initialBaiduData = ref({}); const initialYoudaoData = ref({}); +const initialGoogleData = ref({}); // 添加谷歌初始数据存储 const baiduSettingData = ref({ appId: '', @@ -86,6 +106,10 @@ const youdaoSettingData = ref({ appSecret: '' }); +const googleSettingData = ref({ + googleApiKey: '' +}); + // 百度翻译配置验证规则 const baiduRules = { appId: [ @@ -110,6 +134,14 @@ const youdaoRules = { ] }; +// 谷歌翻译配置验证规则 +const googleRules = { + googleApiKey: [ + { required: true, message: '请输入谷歌API Key', trigger: 'blur' }, + { min: 1, max: 200, message: '长度在 1 到 200 个字符', trigger: 'blur' } + ] +}; + /** 查询配置列表 */ const getList = async () => { loading.value = true; @@ -147,6 +179,16 @@ const getList = async () => { }); } + // 添加谷歌翻译数据初始化 + if (parsedData.googleApiKey) { + Object.assign(googleSettingData.value, { + googleApiKey: parsedData.googleApiKey + }); + Object.assign(initialGoogleData.value, { + googleApiKey: parsedData.googleApiKey + }); + } + // 根据type判断是否使用默认配置 if (parsedData.type === '0') { defaultSettingData.value.useDefault = true; @@ -162,10 +204,15 @@ const getList = async () => { Object.assign(youdaoSettingData.value, parsedData); Object.assign(initialYoudaoData.value, parsedData); // 保存初始数据 activeTab.value = 'youdao'; + } else if (parsedData.type === '3') { + // 添加谷歌翻译类型 + Object.assign(googleSettingData.value, parsedData); + Object.assign(initialGoogleData.value, parsedData); // 保存初始数据 + activeTab.value = 'google'; } } } - console.log('成功:', baiduSettingData.value, youdaoSettingData.value); + console.log('成功:', baiduSettingData.value, youdaoSettingData.value, googleSettingData.value); } catch (error) { ElMessage.error('获取配置失败'); } finally { @@ -222,7 +269,8 @@ const submitBaiduForm = async () => { appId: baiduSettingData.value.appId, secretKey: baiduSettingData.value.secretKey, appKey: '', // 有道翻译相关的字段清空 - appSecret: '' + appSecret: '', + googleApiKey: '' // 谷歌翻译相关字段清空 }; await updateSetting(params); ElMessage.success('启用百度翻译'); @@ -255,7 +303,8 @@ const submitYoudaoForm = async () => { appId: '', // 百度翻译相关的字段清空 secretKey: '', appKey: youdaoSettingData.value.appKey, - appSecret: youdaoSettingData.value.appSecret + appSecret: youdaoSettingData.value.appSecret, + googleApiKey: '' // 谷歌翻译相关字段清空 }; await updateSetting(params); ElMessage.success('启用有道翻译'); @@ -273,6 +322,39 @@ const submitYoudaoForm = async () => { } }; +/** 提交谷歌翻译配置表单 */ +const submitGoogleForm = async () => { + const formRef = proxy.$refs.googleFormRef as (typeof import('element-plus'))['ElForm']; + const isValid = await formRef.validate().catch(() => false); + + if (!isValid) return; + + try { + buttonLoading.value = true; + const params = { + settingName: 'TRANSLATION_SETTING', + type: '3', // 谷歌翻译 + appId: '', // 百度翻译相关的字段清空 + secretKey: '', + appKey: '', // 有道翻译相关的字段清空 + appSecret: '', + googleApiKey: googleSettingData.value.googleApiKey + }; + await updateSetting(params); + ElMessage.success('启用谷歌翻译'); + + // 更新初始数据 + Object.assign(initialGoogleData.value, { + googleApiKey: googleSettingData.value.googleApiKey + }); + } catch (error) { + console.error('更新谷歌翻译配置失败:', error); + ElMessage.error('更新谷歌翻译配置失败'); + } finally { + buttonLoading.value = false; + } +}; + /** 重置百度翻译配置表单 */ const resetBaiduForm = () => { const formRef = proxy.$refs.baiduFormRef as (typeof import('element-plus'))['ElForm']; @@ -303,6 +385,20 @@ const resetYoudaoForm = () => { } }; +/** 重置谷歌翻译配置表单 */ +const resetGoogleForm = () => { + const formRef = proxy.$refs.googleFormRef as (typeof import('element-plus'))['ElForm']; + + // 重置为初始获取的数据 + if (initialGoogleData.value && Object.keys(initialGoogleData.value).length > 0) { + Object.assign(googleSettingData.value, { + googleApiKey: initialGoogleData.value.googleApiKey || '' + }); + } else { + formRef.resetFields(); + } +}; + onMounted(() => { getList(); }); diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/setting/domain/TranslationSetting.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/setting/domain/TranslationSetting.java index 64a33ec..fd44c95 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/setting/domain/TranslationSetting.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/setting/domain/TranslationSetting.java @@ -21,4 +21,6 @@ public class TranslationSetting { private String appSecret = "";//有道翻译使用 + private String googleApiKey = "";//谷歌翻译使用 + } diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImSettingServiceImpl.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImSettingServiceImpl.java index 2ae4352..674c063 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImSettingServiceImpl.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImSettingServiceImpl.java @@ -270,22 +270,32 @@ public class ImSettingServiceImpl implements IImSettingService { String type = value.getStr("type"); - if(type.equals("0")){//不使用翻译配置 - origin.setType("0"); - } else if (type.equals("1")) {//使用百度翻译 - if(ObjectUtil.isEmpty(value.getStr("appId")) || ObjectUtil.isEmpty(value.getStr("secretKey"))){ - return false; + switch (type) { + case "0" -> //不使用翻译配置 + origin.setType("0"); + case "1" -> {//百度翻译 + if (ObjectUtil.isEmpty(value.getStr("appId")) || ObjectUtil.isEmpty(value.getStr("secretKey"))) { + return false; + } + origin.setType("1"); + origin.setAppId(value.getStr("appId")); + origin.setSecretKey(value.getStr("secretKey")); } - origin.setType("1"); - origin.setAppId(value.getStr("appId")); - origin.setSecretKey(value.getStr("secretKey")); - } else if (type.equals("2")) {//使用有道翻译 - if(ObjectUtil.isEmpty(value.getStr("appKey")) || ObjectUtil.isEmpty(value.getStr("appSecret"))) { - return false; + case "2" -> {//有道翻译 + if (ObjectUtil.isEmpty(value.getStr("appKey")) || ObjectUtil.isEmpty(value.getStr("appSecret"))) { + return false; + } + origin.setType("2"); + origin.setAppKey(value.getStr("appKey")); + origin.setAppSecret(value.getStr("appSecret")); + } + case "3" -> {//谷歌翻译 + if (ObjectUtil.isEmpty(value.getStr("googleApiKey"))) { + return false; + } + origin.setType("3"); + origin.setGoogleApiKey(value.getStr("googleApiKey")); } - origin.setType("2"); - origin.setAppKey(value.getStr("appKey")); - origin.setAppSecret(value.getStr("appSecret")); }