Browse Source

代理后台配置读取百度翻译

master
La123123 4 weeks ago
parent
commit
55453faa97
  1. 24
      im-platform/src/main/java/com/bx/implatform/controller/LoginController.java
  2. 2
      im-platform/src/main/java/com/bx/implatform/controller/UserController.java
  3. 65
      im-platform/src/main/java/com/bx/implatform/entity/ImBaiduConfiguration.java
  4. 7
      im-platform/src/main/java/com/bx/implatform/mapper/ImBaiduConfigurationMapper.java
  5. 11
      im-platform/src/main/java/com/bx/implatform/service/IImBaiduConfigurationService.java
  6. 52
      im-platform/src/main/java/com/bx/implatform/service/impl/ImBaiduConfigurationServiceImpl.java
  7. 7
      im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java
  8. 82
      im-platform/src/main/java/com/bx/implatform/util/BaiduTranslationUtils.java
  9. 5
      im-platform/src/main/resources/application-dev.yml

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

@ -1,11 +1,13 @@
package com.bx.implatform.controller;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONObject;
import com.bx.implatform.dto.LoginDTO;
import com.bx.implatform.dto.ModifyPwdDTO;
import com.bx.implatform.dto.RegisterDTO;
import com.bx.implatform.result.Result;
import com.bx.implatform.result.ResultUtils;
import com.bx.implatform.service.IImBaiduConfigurationService;
import com.bx.implatform.service.ImAgentService;
import com.bx.implatform.service.UserService;
import com.bx.implatform.util.BaiduTranslationUtils;
@ -26,6 +28,10 @@ public class LoginController {
private final ImAgentService agentService;
private final IImBaiduConfigurationService baiduConfigurationService;
private final BaiduTranslationUtils baiduTranslationUtils;
@PostMapping("/login")
@Operation(summary = "用户登录", description = "用户登录")
public Result<LoginVO> login(@Valid @RequestBody LoginDTO dto) {
@ -89,10 +95,22 @@ public class LoginController {
//翻译目标国家
String country = jsonObject.getStr("country");
String trans = "";
if(country == null || country.isEmpty()) {
trans = BaiduTranslationUtils.translate(str, "zh");
BaiduTranslationUtils translator = baiduTranslationUtils;
//如果代理有配置,则使用代理的百度配置
if(ObjectUtil.isNull(baiduConfigurationService.getByToken())) {
if (country == null || country.isEmpty()) {
trans = translator.translate(str, "zh");
} else {
trans = translator.translate(str, country);
}
}else{
trans = BaiduTranslationUtils.translate(str, country);
if (country == null || country.isEmpty()) {
trans = translator.translateByAgentConfiguration(str, "zh");
} else {
trans = translator.translateByAgentConfiguration(str, country);
}
}
return ResultUtils.success(trans,"success");

2
im-platform/src/main/java/com/bx/implatform/controller/UserController.java

@ -217,7 +217,7 @@ public class UserController {
if (StrUtil.isNotBlank(currentUserUniqueToken)) {
queryWrapper.eq(User::getUniqueToken, currentUserUniqueToken);
} else {
queryWrapper.isNull(User::getUniqueToken).or().eq(User::getUniqueToken, "");
return ResultUtils.error(XSS_PARAM_ERROR);
}
List<User> availableUsers = userService.list(queryWrapper);

65
im-platform/src/main/java/com/bx/implatform/entity/ImBaiduConfiguration.java

@ -0,0 +1,65 @@
package com.bx.implatform.entity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.util.Date;
/**
* 百度翻译配置对象 im_baidu_configuration
*
* @author Blue
* @date 2026-04-21
*/
@Data
@TableName("im_baidu_configuration")
public class ImBaiduConfiguration {
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 唯一token
*/
private String uniqueToken;
/**
* appId
*/
private String appId;
/**
* SECRET_KEY
*/
private String secretKey;
/**
* 备注
*/
private String remark;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新时间
*/
private Date updatedTime;
/**
* 创建者ID
*/
private Long creatorId;
/**
* 更新者ID
*/
private Long updaterId;
}

7
im-platform/src/main/java/com/bx/implatform/mapper/ImBaiduConfigurationMapper.java

@ -0,0 +1,7 @@
package com.bx.implatform.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bx.implatform.entity.ImBaiduConfiguration;
public interface ImBaiduConfigurationMapper extends BaseMapper<ImBaiduConfiguration> {
}

11
im-platform/src/main/java/com/bx/implatform/service/IImBaiduConfigurationService.java

@ -0,0 +1,11 @@
package com.bx.implatform.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bx.implatform.entity.ImBaiduConfiguration;
public interface IImBaiduConfigurationService extends IService<ImBaiduConfiguration> {
ImBaiduConfiguration getByToken();
}

52
im-platform/src/main/java/com/bx/implatform/service/impl/ImBaiduConfigurationServiceImpl.java

@ -0,0 +1,52 @@
package com.bx.implatform.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bx.implatform.entity.ImBaiduConfiguration;
import com.bx.implatform.entity.User;
import com.bx.implatform.mapper.ImBaiduConfigurationMapper;
import com.bx.implatform.mapper.UserMapper;
import com.bx.implatform.service.IImBaiduConfigurationService;
import com.bx.implatform.session.SessionContext;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@Service
@RequiredArgsConstructor
public class ImBaiduConfigurationServiceImpl extends ServiceImpl<ImBaiduConfigurationMapper, ImBaiduConfiguration> implements IImBaiduConfigurationService {
private final UserMapper userMapper;
private final ImBaiduConfigurationMapper baiduConfigurationMapper;
@Override
public ImBaiduConfiguration getByToken() {
Long userId = SessionContext.getSession().getUserId();
if(userId == null){
return null;
}
User user = userMapper.selectById(userId);
if(user == null || ObjectUtil.isNull(user)){
return null;
}
String token = user.getUniqueToken();
LambdaQueryWrapper<ImBaiduConfiguration> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ImBaiduConfiguration::getUniqueToken, token);
List<ImBaiduConfiguration> list = baiduConfigurationMapper.selectList(queryWrapper);
if(list == null || list.isEmpty()){
return null;
}
return list.get(0);
}
}

7
im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java

@ -655,9 +655,16 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
@Override
public List<User> getEnableChangeCustomerList(Long userId) {
User user = this.getById(userId);
if(user == null || ObjectUtil.isNull(user)){
return new ArrayList<>();
}
LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.ne(User::getId, userId);
queryWrapper.eq(User::getIsCustomer, 2);
queryWrapper.eq(User::getUniqueToken, user.getUniqueToken());
return this.list(queryWrapper);
}

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

@ -6,7 +6,13 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.bx.implatform.entity.ImBaiduConfiguration;
import com.bx.implatform.service.IImBaiduConfigurationService;
import com.bx.implatform.service.ImAgentService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.nio.charset.StandardCharsets;
import java.util.List;
@ -15,6 +21,8 @@ import java.util.List;
* 百度翻译工具类
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class BaiduTranslationUtils {
/**
@ -32,6 +40,8 @@ public class BaiduTranslationUtils {
*/
private static final String SECRET_KEY = "bGdLDbZgM3WMOL09_1qI";
private final IImBaiduConfigurationService baiduConfigurationService;
/**
* 翻译文本
*
@ -40,7 +50,7 @@ public class BaiduTranslationUtils {
* @param to 目标语言
* @return 翻译结果
*/
public static String translate(String query, String from, String to) {
public String translate(String query, String from, String to) {
try {
// 生成随机数
String salt = RandomUtil.randomNumbers(10);
@ -91,7 +101,75 @@ public class BaiduTranslationUtils {
* @param to 目标语言
* @return 翻译结果
*/
public static String translate(String query, String to) {
public String translate(String query, String to) {
return translate(query, "auto", to);
}
/**
* 翻译文本
*
* @param query 待翻译文本
* @param from 源语言可设置为"auto"自动检测
* @param to 目标语言
* @return 翻译结果
*/
public String translateByAgentConfiguration(String query, String from, String to) {
try {
ImBaiduConfiguration configuration = baiduConfigurationService.getByToken();
// 生成随机数
String salt = RandomUtil.randomNumbers(10);
// 生成签名:appid+q+salt+密钥的MD5值
String signStr = configuration.getAppId() + query + salt + configuration.getSecretKey();
String sign = DigestUtil.md5Hex(signStr);
String url = "https://fanyi-api.baidu.com/api/trans/vip/translate";
// 发送请求
HttpResponse response = HttpRequest.post(url)
.form("q", query)
.form("from", from)
.form("to", to)
.form("appid", configuration.getAppId())
.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 String translateByAgentConfiguration(String query, String to) {
return translateByAgentConfiguration(query, "auto", to);
}
}

5
im-platform/src/main/resources/application-dev.yml

@ -37,13 +37,12 @@ webrtc:
# redis:
# host: localhost
# port: 6379
# password: PmEpfRjpBnTN6CgW
#
#minio:
# endpoint: http://127.0.0.1:9001 #内网地址
# domain: http://8.166.112.125:3478:9001 #外网访问地址
# domain: http://ksuser.pyxxkj.com #外网访问地址
# accessKey: admin
# secretKey: 3fBSt6AkgFuD77D6
# secretKey: 3fBSt6AkgFuD77D6999
# bucketName: box-im
# imagePath: image
# filePath: file

Loading…
Cancel
Save