【优化】添加多语言支持

This commit is contained in:
曹鹏飞 2026-04-13 08:41:01 +08:00
parent 7e653786f8
commit 23e1f093c8
6 changed files with 63 additions and 10 deletions

View File

@ -1434,10 +1434,12 @@ public class TicketController extends ControllerBase {
.setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) .setReceiverId(receiveUserFrom + "-uid-" + receiveUserId)
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话") .setTitle("视频通话")
.setContent(adminUser.getUserName() + "请求与您视频通话") .setContentPre(adminUser.getUserName())
.setContent("请求与您视频通话")
.setPayload(new UniPushMessageCallPayload() .setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话") .setTitle("视频通话")
.setContent(adminUser.getUserName() + "请求与您视频通话") .setContentPre(adminUser.getUserName())
.setContent("请求与您视频通话")
.setTicketId(String.valueOf(ticketId)) .setTicketId(String.valueOf(ticketId))
.setTicketType(0) .setTicketType(0)
.setUserId(adminUser.getId()) .setUserId(adminUser.getId())
@ -1485,10 +1487,12 @@ public class TicketController extends ControllerBase {
.setReceiverId("admin-uid-" + userId) .setReceiverId("admin-uid-" + userId)
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话") .setTitle("视频通话")
.setContent(adminUser.getUserName() + "请求与您视频通话") .setContentPre(adminUser.getUserName())
.setContent("请求与您视频通话")
.setPayload(new UniPushMessageCallPayload() .setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话") .setTitle("视频通话")
.setContent(adminUser.getUserName() + "请求与您视频通话") .setContentPre(adminUser.getUserName())
.setContent("请求与您视频通话")
.setTicketId(String.valueOf(request.getTicketId())) .setTicketId(String.valueOf(request.getTicketId()))
.setTicketType(0) .setTicketType(0)
.setUserId(adminUser.getId()) .setUserId(adminUser.getId())

View File

@ -635,10 +635,12 @@ public class TicketController extends ControllerBase {
.setReceiverId("admin-uid-" + handlerUserId) .setReceiverId("admin-uid-" + handlerUserId)
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话") .setTitle("视频通话")
.setContent(appUser.getName() + "请求与您视频通话") .setContentPre(appUser.getName())
.setContent("请求与您视频通话")
.setPayload(new UniPushMessageCallPayload() .setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话") .setTitle("视频通话")
.setContent(appUser.getName() + "请求与您视频通话") .setContentPre(appUser.getName())
.setContent("请求与您视频通话")
.setTicketId(String.valueOf(ticketId)) .setTicketId(String.valueOf(ticketId))
.setTicketType(ticket.getType()) .setTicketType(ticket.getType())
.setUserId(appUser.getId()) .setUserId(appUser.getId())

View File

@ -3,12 +3,21 @@ package com.nflg.mobilebroken.common.pojo.dto;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.util.Objects;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
public class UniPushMessageBody { public class UniPushMessageBody {
private String title; private String title;
// 消息内容前缀
private String contentPre;
public String getContentPre() {
return Objects.isNull(contentPre) ? "" : contentPre + " ";
}
private String content; private String content;
private Object payload; private Object payload;

View File

@ -3,6 +3,8 @@ package com.nflg.mobilebroken.common.pojo.dto;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.util.Objects;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
public class UniPushMessageCallPayload { public class UniPushMessageCallPayload {
@ -29,6 +31,13 @@ public class UniPushMessageCallPayload {
private String title; private String title;
// 消息内容前缀
private String contentPre;
public String getContentPre() {
return Objects.isNull(contentPre) ? "" : contentPre;
}
private String content; private String content;
private String receiverId; private String receiverId;

View File

@ -1404,10 +1404,12 @@ public class TicketController extends ControllerBase {
.setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) .setReceiverId(receiveUserFrom + "-uid-" + receiveUserId)
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话") .setTitle("视频通话")
.setContent(adminUser.getUserName() + "请求与您视频通话") .setContentPre(adminUser.getUserName())
.setContent("请求与您视频通话")
.setPayload(new UniPushMessageCallPayload() .setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话") .setTitle("视频通话")
.setContent(adminUser.getUserName() + "请求与您视频通话") .setContentPre(adminUser.getUserName())
.setContent("请求与您视频通话")
.setTicketId(String.valueOf(ticketId)) .setTicketId(String.valueOf(ticketId))
.setTicketType(1) .setTicketType(1)
.setUserId(adminUser.getId()) .setUserId(adminUser.getId())
@ -1455,10 +1457,12 @@ public class TicketController extends ControllerBase {
.setReceiverId("admin-uid-" + userId) .setReceiverId("admin-uid-" + userId)
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话") .setTitle("视频通话")
.setContent(adminUser.getUserName() + "请求与您视频通话") .setContentPre(adminUser.getUserName())
.setContent("请求与您视频通话")
.setPayload(new UniPushMessageCallPayload() .setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话") .setTitle("视频通话")
.setContent(adminUser.getUserName() + "请求与您视频通话") .setContentPre(adminUser.getUserName())
.setContent("请求与您视频通话")
.setTicketId(String.valueOf(request.getTicketId())) .setTicketId(String.valueOf(request.getTicketId()))
.setTicketType(1) .setTicketType(1)
.setUserId(adminUser.getId()) .setUserId(adminUser.getId())

View File

@ -1,13 +1,17 @@
package com.nflg.mobilebroken.starter.service; package com.nflg.mobilebroken.starter.service;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.nflg.mobilebroken.common.constant.Constant;
import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO; import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO;
import com.nflg.mobilebroken.common.pojo.dto.UniPushMessage; import com.nflg.mobilebroken.common.pojo.dto.UniPushMessage;
import com.nflg.mobilebroken.common.pojo.dto.UniPushMessageBody; import com.nflg.mobilebroken.common.pojo.dto.UniPushMessageBody;
import com.nflg.mobilebroken.common.pojo.dto.UniPushMessageCallPayload; import com.nflg.mobilebroken.common.pojo.dto.UniPushMessageCallPayload;
import com.nflg.mobilebroken.common.util.AdminUserUtil; import com.nflg.mobilebroken.common.util.AdminUserUtil;
import com.nflg.mobilebroken.common.util.AppUserUtil; import com.nflg.mobilebroken.common.util.AppUserUtil;
import com.nflg.mobilebroken.common.util.MultilingualUtil;
import com.nflg.mobilebroken.starter.service.impl.AliYunTranslate;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -15,6 +19,8 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.util.Objects;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@Slf4j @Slf4j
@ -24,8 +30,12 @@ public class UniPushService {
@Value("${uniapp.cloud.push.url}") @Value("${uniapp.cloud.push.url}")
private String url; private String url;
@Resource
private AliYunTranslate aliYunTranslate;
@Async("httpExecutor") @Async("httpExecutor")
public CompletableFuture<Void> send(UniPushMessage message) { public CompletableFuture<Void> send(UniPushMessage message) {
translate(message);
log.info("发送uniapp消息{}", JSONUtil.toJsonStr(message)); log.info("发送uniapp消息{}", JSONUtil.toJsonStr(message));
RestTemplate restTemplate = new RestTemplate(); RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.postForEntity(url, message, String.class); ResponseEntity<String> response = restTemplate.postForEntity(url, message, String.class);
@ -33,6 +43,21 @@ public class UniPushService {
return CompletableFuture.completedFuture(null); return CompletableFuture.completedFuture(null);
} }
private void translate(UniPushMessage message) {
String languageCode = MultilingualUtil.getLanguage();
String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode);
if (StrUtil.isNotBlank(aliyunCode) && !StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) {
UniPushMessageBody body = message.getSendData();
body.setTitle(aliYunTranslate.translateWord(body.getTitle(), aliyunCode));
body.setContent(body.getContentPre() + aliYunTranslate.translateWord(body.getContent(), aliyunCode));
if (body.getPayload() instanceof UniPushMessageCallPayload) {
UniPushMessageCallPayload payload = (UniPushMessageCallPayload) body.getPayload();
payload.setTitle(aliYunTranslate.translateWord(payload.getTitle(), aliyunCode));
payload.setContent(payload.getContentPre() + aliYunTranslate.translateWord(payload.getContent(), aliyunCode));
}
}
}
public void sendTicketMessage(String from, String to, ChatMessageDTO data) { public void sendTicketMessage(String from, String to, ChatMessageDTO data) {
send(new UniPushMessage() send(new UniPushMessage()
.setSenderId(from) .setSenderId(from)