Browse Source

后台配置谷歌翻译

master
La123123 3 weeks ago
parent
commit
a67a4adf69
  1. 102
      im-admin-ui/src/views/im/setting/indexSetting.vue
  2. 2
      im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/setting/domain/TranslationSetting.java
  3. 20
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImSettingServiceImpl.java

102
im-admin-ui/src/views/im/setting/indexSetting.vue

@ -50,6 +50,25 @@
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="谷歌翻译" name="google" lazy>
<el-form
ref="googleFormRef"
:model="googleSettingData"
:rules="googleRules"
label-width="120px"
style="max-width: 600px; margin-top: 20px"
>
<el-form-item label="API Key" prop="googleApiKey">
<el-input v-model="googleSettingData.googleApiKey" placeholder="请输入谷歌API Key"></el-input>
</el-form-item>
<el-form-item>
<div style="margin-left: 130px; margin-top: 20px">
<el-button type="primary" @click="submitGoogleForm">保存配置</el-button>
</div>
</el-form-item>
</el-form>
</el-tab-pane>
</el-tabs>
</div>
</el-card>
@ -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();
});

2
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 = "";//谷歌翻译使用
}

20
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImSettingServiceImpl.java

@ -270,23 +270,33 @@ public class ImSettingServiceImpl implements IImSettingService {
String type = value.getStr("type");
if(type.equals("0")){//不使用翻译配置
switch (type) {
case "0" -> //不使用翻译配置
origin.setType("0");
} else if (type.equals("1")) {//使用百度翻译
if(ObjectUtil.isEmpty(value.getStr("appId")) || ObjectUtil.isEmpty(value.getStr("secretKey"))){
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"));
} else if (type.equals("2")) {//使用有道翻译
if(ObjectUtil.isEmpty(value.getStr("appKey")) || ObjectUtil.isEmpty(value.getStr("appSecret"))) {
}
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"));
}
}
translationSetting.setSettingValue((JSONUtil.toJsonStr(origin)));

Loading…
Cancel
Save