【优化】添加多语言支持

This commit is contained in:
曹鹏飞 2026-04-13 09:39:28 +08:00
parent 23e1f093c8
commit b7e9df3c12
9 changed files with 290 additions and 243 deletions

View File

@ -436,7 +436,7 @@ public class TicketController extends ControllerBase {
//推送消息 //推送消息
ssePushService.sendTicketMessage(Long.valueOf(ticket.getId()), message, MultilingualUtil.getLanguage()); ssePushService.sendTicketMessage(Long.valueOf(ticket.getId()), message, MultilingualUtil.getLanguage());
request.getUserIds().forEach(userId -> { request.getUserIds().forEach(userId -> {
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, userId, "分派工单"); uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, userId, "分派工单", Constant.DEFAULT_LANGUAGE_CODE);
}); });
adminMessageService.setReaded(AdminUserUtil.getUserId(), Long.valueOf(ticket.getId()), MessageSubType.TicketToBeAssigned.getState()); adminMessageService.setReaded(AdminUserUtil.getUserId(), Long.valueOf(ticket.getId()), MessageSubType.TicketToBeAssigned.getState());
return ApiResult.success(); return ApiResult.success();
@ -496,9 +496,12 @@ public class TicketController extends ControllerBase {
ticketChatService.addMessage(Long.valueOf(id), message); ticketChatService.addMessage(Long.valueOf(id), message);
//推送消息 //推送消息
ssePushService.sendTicketMessage(Long.valueOf(id), message, MultilingualUtil.getLanguage()); ssePushService.sendTicketMessage(Long.valueOf(id), message, MultilingualUtil.getLanguage());
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, ticket.getUserPlatform(), ticket.getUserId(), "工单已完成"); String receiverUserLanguageCode = StrUtil.equals(ticket.getUserPlatform(), Constant.FROM_ADMIN)
? Constant.DEFAULT_LANGUAGE_CODE
: appUserService.getById(ticket.getUserId()).getLanguageCode();
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, ticket.getUserPlatform(), ticket.getUserId(), "工单已完成", receiverUserLanguageCode);
deviceTypeService.getCqmsByDeviceType(ticket.getDeviceNo()).forEach(cqm -> { deviceTypeService.getCqmsByDeviceType(ticket.getDeviceNo()).forEach(cqm -> {
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, cqm, "工单已完成"); uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, cqm, "工单已完成", Constant.DEFAULT_LANGUAGE_CODE);
}); });
} }
return ApiResult.success(); return ApiResult.success();
@ -526,7 +529,7 @@ public class TicketController extends ControllerBase {
ticketChatService.addMessage(Long.valueOf(id), message); ticketChatService.addMessage(Long.valueOf(id), message);
//推送消息 //推送消息
ssePushService.sendTicketMessage(Long.valueOf(id), message, MultilingualUtil.getLanguage()); ssePushService.sendTicketMessage(Long.valueOf(id), message, MultilingualUtil.getLanguage());
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, StrUtil.splitToInt(ticket.getHandle(), ",")[0], "工单被驳回"); uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, StrUtil.splitToInt(ticket.getHandle(), ",")[0], "工单被驳回", Constant.DEFAULT_LANGUAGE_CODE);
adminMessageService.setReaded(AdminUserUtil.getUserId(), Long.valueOf(id), MessageSubType.TicketSolutionAudit.getState()); adminMessageService.setReaded(AdminUserUtil.getUserId(), Long.valueOf(id), MessageSubType.TicketSolutionAudit.getState());
} }
return ApiResult.success(); return ApiResult.success();
@ -1429,28 +1432,31 @@ public class TicketController extends ControllerBase {
// VUtils.trueThrowBusinessError(ticketCallJoinService.isInCall(ticket.getId(), receiveUserFrom, receiveUserId)).throwMessage("对方正在通话中"); // VUtils.trueThrowBusinessError(ticketCallJoinService.isInCall(ticket.getId(), receiveUserFrom, receiveUserId)).throwMessage("对方正在通话中");
// ticketCallService.add(ticketId, sendUserId, sendUserFrom, receiveUserId, receiveUserFrom); // ticketCallService.add(ticketId, sendUserId, sendUserFrom, receiveUserId, receiveUserFrom);
AdminUser adminUser = adminUserService.getById(sendUserId); AdminUser adminUser = adminUserService.getById(sendUserId);
String receiverUserLanguageCode = StrUtil.equals(receiveUserFrom, Constant.FROM_ADMIN)
? Constant.DEFAULT_LANGUAGE_CODE
: appUserService.getById(receiveUserId).getLanguageCode();
uniPushService.send(new UniPushMessage() uniPushService.send(new UniPushMessage()
.setSenderId("admin-uid-" + sendUserId) .setSenderId("admin-uid-" + sendUserId)
.setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) .setReceiverId(receiveUserFrom + "-uid-" + receiveUserId)
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话")
.setContentPre(adminUser.getUserName())
.setContent("请求与您视频通话")
.setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话") .setTitle("视频通话")
.setContentPre(adminUser.getUserName()) .setContentPre(adminUser.getUserName())
.setContent("请求与您视频通话") .setContent("请求与您视频通话")
.setTicketId(String.valueOf(ticketId)) .setPayload(new UniPushMessageCallPayload()
.setTicketType(0) .setTitle("视频通话")
.setUserId(adminUser.getId()) .setContentPre(adminUser.getUserName())
.setUserName(adminUser.getUserName()) .setContent("请求与您视频通话")
.setUserAvatar(adminUser.getAvatar()) .setTicketId(String.valueOf(ticketId))
.setCategory("ticketCall") .setTicketType(0)
.setFrom("admin") .setUserId(adminUser.getId())
.setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) .setUserName(adminUser.getUserName())
.setUserAvatar(adminUser.getAvatar())
.setCategory("ticketCall")
.setFrom("admin")
.setReceiverId(receiveUserFrom + "-uid-" + receiveUserId)
)
) )
) , receiverUserLanguageCode);
);
if (StrUtil.equals(Constant.FROM_APP, ticket.getUserPlatform())) { if (StrUtil.equals(Constant.FROM_APP, ticket.getUserPlatform())) {
ssePushService.sendTicketCallToApp(adminUser, ticket.getUserId(), Long.valueOf(ticketId)); ssePushService.sendTicketCallToApp(adminUser, ticket.getUserId(), Long.valueOf(ticketId));
} else { } else {
@ -1470,11 +1476,6 @@ public class TicketController extends ControllerBase {
@PostMapping("addCallUser") @PostMapping("addCallUser")
public ApiResult<Void> addCallUser(@Valid @RequestBody CallUserAddRequest request) { public ApiResult<Void> addCallUser(@Valid @RequestBody CallUserAddRequest request) {
AdminUser adminUser = adminUserService.getById(AdminUserUtil.getUserId()); AdminUser adminUser = adminUserService.getById(AdminUserUtil.getUserId());
// TicketCall ticketCall = ticketCallService.lambdaQuery()
// .eq(TicketCall::getTicketId, request.getTicketId())
// .eq(TicketCall::getState, 1)
// .one();
// VUtils.trueThrowBusinessError(Objects.isNull(ticketCall)).throwMessage("未在通话中");
List<String> userNames = new ArrayList<>(); List<String> userNames = new ArrayList<>();
request.getUserIds().forEach(userId -> { request.getUserIds().forEach(userId -> {
AdminUser adminUser1 = adminUserService.getById(userId); AdminUser adminUser1 = adminUserService.getById(userId);
@ -1483,27 +1484,27 @@ public class TicketController extends ControllerBase {
userNames.add(adminUser1.getUserName()); userNames.add(adminUser1.getUserName());
} else { } else {
uniPushService.send(new UniPushMessage() uniPushService.send(new UniPushMessage()
.setSenderId("admin-uid-" + adminUser.getId()) .setSenderId("admin-uid-" + adminUser.getId())
.setReceiverId("admin-uid-" + userId) .setReceiverId("admin-uid-" + userId)
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话")
.setContentPre(adminUser.getUserName())
.setContent("请求与您视频通话")
.setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话") .setTitle("视频通话")
.setContentPre(adminUser.getUserName()) .setContentPre(adminUser.getUserName())
.setContent("请求与您视频通话") .setContent("请求与您视频通话")
.setTicketId(String.valueOf(request.getTicketId())) .setPayload(new UniPushMessageCallPayload()
.setTicketType(0) .setTitle("视频通话")
.setUserId(adminUser.getId()) .setContentPre(adminUser.getUserName())
.setUserName(adminUser.getUserName()) .setContent("请求与您视频通话")
.setUserAvatar(adminUser.getAvatar()) .setTicketId(String.valueOf(request.getTicketId()))
.setCategory("ticketCall") .setTicketType(0)
.setFrom("admin") .setUserId(adminUser.getId())
.setReceiverId("admin-uid-" + userId) .setUserName(adminUser.getUserName())
.setUserAvatar(adminUser.getAvatar())
.setCategory("ticketCall")
.setFrom("admin")
.setReceiverId("admin-uid-" + userId)
)
) )
) , Constant.DEFAULT_LANGUAGE_CODE);
);
ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId()); ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId());
// ticketCallJoinService.add(ticketCall.getId(), userId, Constant.FROM_ADMIN); // ticketCallJoinService.add(ticketCall.getId(), userId, Constant.FROM_ADMIN);
stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-uid-" + userId); stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-uid-" + userId);
@ -1534,21 +1535,21 @@ public class TicketController extends ControllerBase {
.throwMessage("你已在通话中"); .throwMessage("你已在通话中");
ssePushService.sendTicketCallJoinedToAdmin(AdminUserUtil.getUserId(), ticketId); ssePushService.sendTicketCallJoinedToAdmin(AdminUserUtil.getUserId(), ticketId);
uniPushService.send(new UniPushMessage() uniPushService.send(new UniPushMessage()
.setSenderId("admin-uid-" + AdminUserUtil.getUserId())//不重要 .setSenderId("admin-uid-" + AdminUserUtil.getUserId())//不重要
.setReceiverId("admin-uid-" + AdminUserUtil.getUserId()) .setReceiverId("admin-uid-" + AdminUserUtil.getUserId())
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话")
.setContent("加入通话")
.setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话") .setTitle("视频通话")
.setTicketId(String.valueOf(ticketId)) .setContent("加入通话")
.setTicketType(ticket.getType()) .setPayload(new UniPushMessageCallPayload()
.setUserId(AdminUserUtil.getUserId()) .setTitle("视频通话")
.setCategory("ticketCallJoined") .setTicketId(String.valueOf(ticketId))
.setFrom("admin") .setTicketType(ticket.getType())
.setUserId(AdminUserUtil.getUserId())
.setCategory("ticketCallJoined")
.setFrom("admin")
)
) )
) , Constant.DEFAULT_LANGUAGE_CODE);
);
return ApiResult.success(); return ApiResult.success();
} }
@ -1564,43 +1565,50 @@ public class TicketController extends ControllerBase {
Set<String> userIds = stringRedisTemplate.opsForSet().members(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId()); Set<String> userIds = stringRedisTemplate.opsForSet().members(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId());
if (CollectionUtil.isNotEmpty(userIds)) { if (CollectionUtil.isNotEmpty(userIds)) {
userIds.forEach(uid -> { userIds.forEach(uid -> {
List<String> us = StrUtil.split(uid, "-");
String receiverUserLanguageCode = StrUtil.equals(us.get(0), Constant.FROM_ADMIN)
? Constant.DEFAULT_LANGUAGE_CODE
: appUserService.getById(Integer.valueOf(us.get(2))).getLanguageCode();
uniPushService.send(new UniPushMessage() uniPushService.send(new UniPushMessage()
.setSenderId(uid)//不重要 .setSenderId(uid)//不重要
.setReceiverId(uid) .setReceiverId(uid)
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话") .setTitle("视频通话")
.setContent("视频通话结束") .setContent("视频通话结束")
.setPayload(new UniPushMessageCallPayload() .setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话结束") .setTitle("视频通话结束")
.setTicketId(String.valueOf(request.getTicketId())) .setTicketId(String.valueOf(request.getTicketId()))
.setTicketType(ticket.getType()) .setTicketType(ticket.getType())
.setUserId(Integer.valueOf(StrUtil.split(uid, "-").get(2))) .setUserId(Integer.valueOf(StrUtil.split(uid, "-").get(2)))
.setCategory("ticketCallEnd") .setCategory("ticketCallEnd")
.setFrom("admin") .setFrom("admin")
)
) )
) , receiverUserLanguageCode);
);
}); });
} }
stringRedisTemplate.delete(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId()); stringRedisTemplate.delete(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId());
} else { } else {
if (request.getReject()) { if (request.getReject()) {
String receiverUserLanguageCode = StrUtil.equals(request.getFrom(), Constant.FROM_ADMIN)
? Constant.DEFAULT_LANGUAGE_CODE
: appUserService.getById(request.getFromUserId()).getLanguageCode();
uniPushService.send(new UniPushMessage() uniPushService.send(new UniPushMessage()
.setSenderId(Constant.FROM_ADMIN + "-uid-" + AdminUserUtil.getUserId())//不重要 .setSenderId(Constant.FROM_ADMIN + "-uid-" + AdminUserUtil.getUserId())//不重要
.setReceiverId(request.getFrom() + "-uid-" + request.getFromUserId()) .setReceiverId(request.getFrom() + "-uid-" + request.getFromUserId())
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话") .setTitle("视频通话")
.setContent("视频通话拒接") .setContent("视频通话拒接")
.setPayload(new UniPushMessageCallPayload() .setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话拒接") .setTitle("视频通话拒接")
.setTicketId(String.valueOf(request.getTicketId())) .setTicketId(String.valueOf(request.getTicketId()))
.setTicketType(ticket.getType()) .setTicketType(ticket.getType())
.setUserId(AdminUserUtil.getUserId()) .setUserId(AdminUserUtil.getUserId())
.setCategory("ticketCallReject") .setCategory("ticketCallReject")
.setFrom("admin") .setFrom("admin")
)
) )
) , receiverUserLanguageCode);
);
} }
stringRedisTemplate.opsForSet().remove(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-uid-" + AdminUserUtil.getUserId()); stringRedisTemplate.opsForSet().remove(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-uid-" + AdminUserUtil.getUserId());
} }

View File

@ -1,12 +1,14 @@
package com.nflg.mobilebroken.admin.event; package com.nflg.mobilebroken.admin.event;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.nflg.mobilebroken.admin.service.ShengWangService; import com.nflg.mobilebroken.admin.service.ShengWangService;
import com.nflg.mobilebroken.admin.service.SsePushService; import com.nflg.mobilebroken.admin.service.SsePushService;
import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.constant.Constant;
import com.nflg.mobilebroken.common.constant.TicketState; import com.nflg.mobilebroken.common.constant.TicketState;
import com.nflg.mobilebroken.common.pojo.dto.*; import com.nflg.mobilebroken.common.pojo.dto.*;
import com.nflg.mobilebroken.common.util.MultilingualUtil; import com.nflg.mobilebroken.common.util.MultilingualUtil;
import com.nflg.mobilebroken.repository.service.IAppUserService;
import com.nflg.mobilebroken.repository.service.TicketChatService; import com.nflg.mobilebroken.repository.service.TicketChatService;
import com.nflg.mobilebroken.starter.service.UniPushService; import com.nflg.mobilebroken.starter.service.UniPushService;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
@ -28,6 +30,7 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC
private ShengWangService shengWangService; private ShengWangService shengWangService;
private StringRedisTemplate stringRedisTemplate; private StringRedisTemplate stringRedisTemplate;
private UniPushService uniPushService; private UniPushService uniPushService;
private IAppUserService appUserService;
public TicketCallEndEvent(Object source, TicketDTO ticket) { public TicketCallEndEvent(Object source, TicketDTO ticket) {
super(source); super(source);
@ -41,6 +44,7 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC
this.shengWangService = applicationContext.getBean(ShengWangService.class); this.shengWangService = applicationContext.getBean(ShengWangService.class);
this.stringRedisTemplate = applicationContext.getBean(StringRedisTemplate.class); this.stringRedisTemplate = applicationContext.getBean(StringRedisTemplate.class);
this.uniPushService = applicationContext.getBean(UniPushService.class); this.uniPushService = applicationContext.getBean(UniPushService.class);
this.appUserService = applicationContext.getBean(IAppUserService.class);
} }
public void send() throws IOException, InterruptedException { public void send() throws IOException, InterruptedException {
@ -63,20 +67,23 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC
if (Objects.nonNull(userId)) { if (Objects.nonNull(userId)) {
String from = userId.toString().startsWith("1") ? "app" : "admin"; String from = userId.toString().startsWith("1") ? "app" : "admin";
userId = Integer.valueOf(userId.toString().substring(1)); userId = Integer.valueOf(userId.toString().substring(1));
String receiverUserLanguageCode = StrUtil.equals(from, Constant.FROM_ADMIN)
? Constant.DEFAULT_LANGUAGE_CODE
: appUserService.getById(userId).getLanguageCode();
uniPushService.send(new UniPushMessage() uniPushService.send(new UniPushMessage()
.setSenderId(from + "-uid-0")//不重要 .setSenderId(from + "-uid-0")//不重要
.setReceiverId(from + "-uid-" + userId) .setReceiverId(from + "-uid-" + userId)
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话结束") .setTitle("视频通话结束")
.setPayload(new UniPushMessageCallPayload() .setPayload(new UniPushMessageCallPayload()
.setTicketId(String.valueOf(ticket.getId())) .setTicketId(String.valueOf(ticket.getId()))
.setTicketType(ticket.getType()) .setTicketType(ticket.getType())
.setUserId(userId) .setUserId(userId)
.setCategory("ticketCallEnd") .setCategory("ticketCallEnd")
.setFrom("admin") .setFrom("admin")
)
) )
) , receiverUserLanguageCode);
);
} }
} }
} }

View File

@ -538,7 +538,7 @@ public class TicketController extends ControllerBase {
//推送消息 //推送消息
ssePushService.sendTicketMessageToAdmin(id, message); ssePushService.sendTicketMessageToAdmin(id, message);
ssePushService.sendTicketMessageToApp(id, message); ssePushService.sendTicketMessageToApp(id, message);
uniPushService.sendTodoMessageFromApp(String.valueOf(ticket.getId()), ticket.getType(), ticket.getCurrentHandle(), "工单被重启"); uniPushService.sendTodoMessageFromApp(String.valueOf(ticket.getId()), ticket.getType(), ticket.getCurrentHandle(), "工单被重启", Constant.DEFAULT_LANGUAGE_CODE);
// stringRedisTemplate.opsForValue().set(StrUtil.format(Constant.REDIS_KEY_TICKET_REJECT_RECORD, ticket.getId()), DateTimeUtil.format(LocalDateTime.now())); // stringRedisTemplate.opsForValue().set(StrUtil.format(Constant.REDIS_KEY_TICKET_REJECT_RECORD, ticket.getId()), DateTimeUtil.format(LocalDateTime.now()));
stringRedisTemplate.opsForHash().delete("ticket:disbale:SelectImage", ticket.getId().toString()); stringRedisTemplate.opsForHash().delete("ticket:disbale:SelectImage", ticket.getId().toString());
appMessageService.setReaded(AppUserUtil.getUserId(), AppUserUtil.getFrom(), MessageSubType.TicketCompletion.getState()); appMessageService.setReaded(AppUserUtil.getUserId(), AppUserUtil.getFrom(), MessageSubType.TicketCompletion.getState());
@ -631,27 +631,27 @@ public class TicketController extends ControllerBase {
// VUtils.trueThrowBusinessError(ticketCallJoinService.isInCall(ticket.getId(), Constant.FROM_ADMIN, handlerUserId)).throwMessage("对方正在通话中"); // VUtils.trueThrowBusinessError(ticketCallJoinService.isInCall(ticket.getId(), Constant.FROM_ADMIN, handlerUserId)).throwMessage("对方正在通话中");
AppUser appUser = appUserService.getById(ticket.getUserId()); AppUser appUser = appUserService.getById(ticket.getUserId());
uniPushService.send(new UniPushMessage() uniPushService.send(new UniPushMessage()
.setSenderId(ticket.getUserPlatform() + "-uid-" + ticket.getUserId()) .setSenderId(ticket.getUserPlatform() + "-uid-" + ticket.getUserId())
.setReceiverId("admin-uid-" + handlerUserId) .setReceiverId("admin-uid-" + handlerUserId)
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话")
.setContentPre(appUser.getName())
.setContent("请求与您视频通话")
.setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话") .setTitle("视频通话")
.setContentPre(appUser.getName()) .setContentPre(appUser.getName())
.setContent("请求与您视频通话") .setContent("请求与您视频通话")
.setTicketId(String.valueOf(ticketId)) .setPayload(new UniPushMessageCallPayload()
.setTicketType(ticket.getType()) .setTitle("视频通话")
.setUserId(appUser.getId()) .setContentPre(appUser.getName())
.setUserName(appUser.getName()) .setContent("请求与您视频通话")
.setUserAvatar(appUser.getAvatar()) .setTicketId(String.valueOf(ticketId))
.setCategory("ticketCall") .setTicketType(ticket.getType())
.setFrom("app") .setUserId(appUser.getId())
.setReceiverId("admin-uid-" + handlerUserId) .setUserName(appUser.getName())
.setUserAvatar(appUser.getAvatar())
.setCategory("ticketCall")
.setFrom("app")
.setReceiverId("admin-uid-" + handlerUserId)
)
) )
) , Constant.DEFAULT_LANGUAGE_CODE);
);
ssePushService.sendTicketCallToAdmin(appUser, handlerUserId, ticketId); ssePushService.sendTicketCallToAdmin(appUser, handlerUserId, ticketId);
// ticketCallService.add(ticketId, AppUserUtil.getUserId(),Constant.FROM_APP, handlerUserId, Constant.FROM_ADMIN); // ticketCallService.add(ticketId, AppUserUtil.getUserId(),Constant.FROM_APP, handlerUserId, Constant.FROM_ADMIN);
ticketEventPublisher.publishTicketCallBeginEvent(ticketId, appUser.getName()); ticketEventPublisher.publishTicketCallBeginEvent(ticketId, appUser.getName());
@ -675,22 +675,25 @@ public class TicketController extends ControllerBase {
VUtils.trueThrowBusinessError(channelUsers.getUsers().contains(ShengWangUtil.getUserId(AppUserUtil.getUserId(), AppUserUtil.getFrom()))) VUtils.trueThrowBusinessError(channelUsers.getUsers().contains(ShengWangUtil.getUserId(AppUserUtil.getUserId(), AppUserUtil.getFrom())))
.throwMessage("你已在通话中"); .throwMessage("你已在通话中");
ssePushService.sendTicketCallJoined(AppUserUtil.getUserId(), ticketId, AppUserUtil.getFrom()); ssePushService.sendTicketCallJoined(AppUserUtil.getUserId(), ticketId, AppUserUtil.getFrom());
String receiverUserLanguageCode = StrUtil.equals(AppUserUtil.getFrom(), Constant.FROM_ADMIN)
? Constant.DEFAULT_LANGUAGE_CODE
: appUserService.getById(AppUserUtil.getUserId()).getLanguageCode();
uniPushService.send(new UniPushMessage() uniPushService.send(new UniPushMessage()
.setSenderId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())//不重要 .setSenderId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())//不重要
.setReceiverId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId()) .setReceiverId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话")
.setContent("加入通话")
.setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话") .setTitle("视频通话")
.setTicketId(String.valueOf(ticketId)) .setContent("加入通话")
.setTicketType(ticket.getType()) .setPayload(new UniPushMessageCallPayload()
.setUserId(AppUserUtil.getUserId()) .setTitle("视频通话")
.setCategory("ticketCallJoined") .setTicketId(String.valueOf(ticketId))
.setFrom("app") .setTicketType(ticket.getType())
.setUserId(AppUserUtil.getUserId())
.setCategory("ticketCallJoined")
.setFrom("app")
)
) )
) , receiverUserLanguageCode);
);
return ApiResult.success(); return ApiResult.success();
} }
@ -706,42 +709,49 @@ public class TicketController extends ControllerBase {
Set<String> userIds = stringRedisTemplate.opsForSet().members(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId()); Set<String> userIds = stringRedisTemplate.opsForSet().members(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId());
if (CollectionUtil.isNotEmpty(userIds)) { if (CollectionUtil.isNotEmpty(userIds)) {
userIds.forEach(uid -> { userIds.forEach(uid -> {
List<String> us = StrUtil.split(uid, "-");
String receiverUserLanguageCode = StrUtil.equals(us.get(0), Constant.FROM_ADMIN)
? Constant.DEFAULT_LANGUAGE_CODE
: appUserService.getById(Integer.valueOf(us.get(2))).getLanguageCode();
uniPushService.send(new UniPushMessage() uniPushService.send(new UniPushMessage()
.setSenderId(uid)//不重要 .setSenderId(uid)//不重要
.setReceiverId(uid) .setReceiverId(uid)
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话") .setTitle("视频通话")
.setContent("视频通话结束") .setContent("视频通话结束")
.setPayload(new UniPushMessageCallPayload() .setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话结束") .setTitle("视频通话结束")
.setTicketId(String.valueOf(request.getTicketId())) .setTicketId(String.valueOf(request.getTicketId()))
.setTicketType(ticket.getType()) .setTicketType(ticket.getType())
.setUserId(Integer.valueOf(StrUtil.split(uid, "-").get(2))) .setUserId(Integer.valueOf(StrUtil.split(uid, "-").get(2)))
.setCategory("ticketCallEnd") .setCategory("ticketCallEnd")
.setFrom("app") .setFrom("app")
)
) )
) , receiverUserLanguageCode);
);
}); });
} }
stringRedisTemplate.delete(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId()); stringRedisTemplate.delete(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId());
} else { } else {
String receiverUserLanguageCode = StrUtil.equals(request.getFrom(), Constant.FROM_ADMIN)
? Constant.DEFAULT_LANGUAGE_CODE
: appUserService.getById(request.getFromUserId()).getLanguageCode();
uniPushService.send(new UniPushMessage() uniPushService.send(new UniPushMessage()
.setSenderId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())//不重要 .setSenderId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())//不重要
.setReceiverId(request.getFrom() + "-uid-" + request.getFromUserId()) .setReceiverId(request.getFrom() + "-uid-" + request.getFromUserId())
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话") .setTitle("视频通话")
.setContent("视频通话拒接") .setContent("视频通话拒接")
.setPayload(new UniPushMessageCallPayload() .setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话拒接") .setTitle("视频通话拒接")
.setTicketId(String.valueOf(request.getTicketId())) .setTicketId(String.valueOf(request.getTicketId()))
.setTicketType(ticket.getType()) .setTicketType(ticket.getType())
.setUserId(AppUserUtil.getUserId()) .setUserId(AppUserUtil.getUserId())
.setCategory("ticketCallReject") .setCategory("ticketCallReject")
.setFrom("app") .setFrom("app")
)
) )
) , receiverUserLanguageCode);
);
stringRedisTemplate.opsForSet().remove(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_APP + "-uid-" + AppUserUtil.getUserId()); stringRedisTemplate.opsForSet().remove(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_APP + "-uid-" + AppUserUtil.getUserId());
} }
taskScheduler.schedule(() -> { taskScheduler.schedule(() -> {

View File

@ -1,11 +1,13 @@
package com.nflg.mobilebroken.cfs.event; package com.nflg.mobilebroken.cfs.event;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.nflg.mobilebroken.cfs.service.ShengWangService; import com.nflg.mobilebroken.cfs.service.ShengWangService;
import com.nflg.mobilebroken.cfs.service.SsePushService; import com.nflg.mobilebroken.cfs.service.SsePushService;
import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.constant.Constant;
import com.nflg.mobilebroken.common.constant.TicketState; import com.nflg.mobilebroken.common.constant.TicketState;
import com.nflg.mobilebroken.common.pojo.dto.*; import com.nflg.mobilebroken.common.pojo.dto.*;
import com.nflg.mobilebroken.repository.service.IAppUserService;
import com.nflg.mobilebroken.repository.service.TicketChatService; import com.nflg.mobilebroken.repository.service.TicketChatService;
import com.nflg.mobilebroken.starter.service.UniPushService; import com.nflg.mobilebroken.starter.service.UniPushService;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
@ -27,6 +29,7 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC
private ShengWangService shengWangService; private ShengWangService shengWangService;
private StringRedisTemplate stringRedisTemplate; private StringRedisTemplate stringRedisTemplate;
private UniPushService uniPushService; private UniPushService uniPushService;
private IAppUserService appUserService;
public TicketCallEndEvent(Object source, TicketDTO ticket) { public TicketCallEndEvent(Object source, TicketDTO ticket) {
super(source); super(source);
@ -40,6 +43,7 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC
this.shengWangService = applicationContext.getBean(ShengWangService.class); this.shengWangService = applicationContext.getBean(ShengWangService.class);
this.stringRedisTemplate = applicationContext.getBean(StringRedisTemplate.class); this.stringRedisTemplate = applicationContext.getBean(StringRedisTemplate.class);
this.uniPushService = applicationContext.getBean(UniPushService.class); this.uniPushService = applicationContext.getBean(UniPushService.class);
this.appUserService = applicationContext.getBean(IAppUserService.class);
} }
public void send() throws IOException, InterruptedException { public void send() throws IOException, InterruptedException {
@ -63,6 +67,9 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC
if (Objects.nonNull(userId)) { if (Objects.nonNull(userId)) {
String from = userId.toString().startsWith("1") ? "app" : "admin"; String from = userId.toString().startsWith("1") ? "app" : "admin";
userId = Integer.valueOf(userId.toString().substring(1)); userId = Integer.valueOf(userId.toString().substring(1));
String receiverUserLanguageCode = StrUtil.equals(from, Constant.FROM_ADMIN)
? Constant.DEFAULT_LANGUAGE_CODE
: appUserService.getById(userId).getLanguageCode();
uniPushService.send(new UniPushMessage() uniPushService.send(new UniPushMessage()
.setSenderId(from + "-uid-0")//不重要 .setSenderId(from + "-uid-0")//不重要
.setReceiverId(from + "-uid-" + userId) .setReceiverId(from + "-uid-" + userId)
@ -76,7 +83,7 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC
.setFrom("app") .setFrom("app")
) )
) )
); ,receiverUserLanguageCode);
} }
} }
} }

View File

@ -13,6 +13,8 @@ public class Constant {
public static final String DEFAULT_LANGUAGE_CODE = "cn"; public static final String DEFAULT_LANGUAGE_CODE = "cn";
public static final String HEADER_LANGUAGE = "language";
public static final String DICTIONARY_TYPE_SERVICE_EVALUATION = "ServiceEvaluation"; public static final String DICTIONARY_TYPE_SERVICE_EVALUATION = "ServiceEvaluation";
public static final String DICTIONARY_TYPE_EXPERIENCE_EVALUATION = "ExperienceEvaluation"; public static final String DICTIONARY_TYPE_EXPERIENCE_EVALUATION = "ExperienceEvaluation";

View File

@ -431,7 +431,7 @@ public class TicketController extends ControllerBase {
ssePushService.sendTicketMessageToApp(ticket.getId(), message); ssePushService.sendTicketMessageToApp(ticket.getId(), message);
ssePushService.sendTicketMessageToAdmin(ticket.getId(), message); ssePushService.sendTicketMessageToAdmin(ticket.getId(), message);
request.getUserIds().forEach(userId -> { request.getUserIds().forEach(userId -> {
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, userId, "分派工单"); uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, userId, "分派工单", Constant.DEFAULT_LANGUAGE_CODE);
}); });
adminMessageService.setReaded(AdminUserUtil.getUserId(), ticket.getId(), MessageSubType.TicketToBeAssigned.getState()); adminMessageService.setReaded(AdminUserUtil.getUserId(), ticket.getId(), MessageSubType.TicketToBeAssigned.getState());
return ApiResult.success(); return ApiResult.success();
@ -492,9 +492,12 @@ public class TicketController extends ControllerBase {
//推送消息 //推送消息
ssePushService.sendTicketMessageToAdmin(id, message); ssePushService.sendTicketMessageToAdmin(id, message);
ssePushService.sendTicketMessageToApp(id, message); ssePushService.sendTicketMessageToApp(id, message);
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, ticket.getUserPlatform(), ticket.getUserId(), "工单已完成"); String receiverUserLanguageCode = StrUtil.equals(ticket.getUserPlatform(), Constant.FROM_ADMIN)
? Constant.DEFAULT_LANGUAGE_CODE
: appUserService.getById(ticket.getUserId()).getLanguageCode();
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, ticket.getUserPlatform(), ticket.getUserId(), "工单已完成", receiverUserLanguageCode);
deviceTypeService.getCqms(ticket.getDeviceNo()).forEach(cqm -> { deviceTypeService.getCqms(ticket.getDeviceNo()).forEach(cqm -> {
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, cqm, "工单已完成"); uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, cqm, "工单已完成", Constant.DEFAULT_LANGUAGE_CODE);
}); });
} }
return ApiResult.success(); return ApiResult.success();
@ -524,7 +527,7 @@ public class TicketController extends ControllerBase {
//推送消息 //推送消息
ssePushService.sendTicketMessageToAdmin(id, message); ssePushService.sendTicketMessageToAdmin(id, message);
ssePushService.sendTicketMessageToApp(id, message); ssePushService.sendTicketMessageToApp(id, message);
uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, StrUtil.splitToInt(ticket.getHandle(), ",")[0], "工单被驳回"); uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, StrUtil.splitToInt(ticket.getHandle(), ",")[0], "工单被驳回", Constant.DEFAULT_LANGUAGE_CODE);
stringRedisTemplate.opsForHash().delete("ticket:disbale:SelectImage", id.toString()); stringRedisTemplate.opsForHash().delete("ticket:disbale:SelectImage", id.toString());
adminMessageService.setReaded(AdminUserUtil.getUserId(), id, MessageSubType.TicketSolutionAudit.getState()); adminMessageService.setReaded(AdminUserUtil.getUserId(), id, MessageSubType.TicketSolutionAudit.getState());
} }
@ -958,7 +961,7 @@ public class TicketController extends ControllerBase {
@GetMapping("getSolutionReviewDepartment") @GetMapping("getSolutionReviewDepartment")
@ApiMark(moduleName = "工单管理", apiName = "获取工单解决方案评审部门") @ApiMark(moduleName = "工单管理", apiName = "获取工单解决方案评审部门")
public ApiResult<List<SolutionReviewDepartmentVO>> getSolutionReviewDepartment(@Valid @RequestParam @NotNull Long ticketId) { public ApiResult<List<SolutionReviewDepartmentVO>> getSolutionReviewDepartment(@Valid @RequestParam @NotNull Long ticketId) {
return ApiResult.success(ticketSolutionAuditService.getByTicket(ticketId,MultilingualUtil.getLanguage())); return ApiResult.success(ticketSolutionAuditService.getByTicket(ticketId, MultilingualUtil.getLanguage()));
} }
/** /**
@ -1221,7 +1224,7 @@ public class TicketController extends ControllerBase {
} }
} }
//解决方案审核 //解决方案审核
List<SolutionReviewDepartmentVO> reviewDepartments = ticketSolutionAuditService.getByTicket(ticketId,MultilingualUtil.getLanguage()) List<SolutionReviewDepartmentVO> reviewDepartments = ticketSolutionAuditService.getByTicket(ticketId, MultilingualUtil.getLanguage())
.stream() .stream()
.filter(vo -> StrUtil.isNotBlank(vo.getUserName())) .filter(vo -> StrUtil.isNotBlank(vo.getUserName()))
.collect(Collectors.toList()); .collect(Collectors.toList());
@ -1399,28 +1402,31 @@ public class TicketController extends ControllerBase {
// VUtils.trueThrowBusinessError(ticketCallJoinService.isInCall(ticket.getId(), receiveUserFrom, receiveUserId)).throwMessage("对方正在通话中"); // VUtils.trueThrowBusinessError(ticketCallJoinService.isInCall(ticket.getId(), receiveUserFrom, receiveUserId)).throwMessage("对方正在通话中");
// ticketCallService.add(ticketId, sendUserId, sendUserFrom, receiveUserId, receiveUserFrom); // ticketCallService.add(ticketId, sendUserId, sendUserFrom, receiveUserId, receiveUserFrom);
AdminUser adminUser = adminUserService.getById(sendUserId); AdminUser adminUser = adminUserService.getById(sendUserId);
String receiverUserLanguageCode = StrUtil.equals(receiveUserFrom, Constant.FROM_ADMIN)
? Constant.DEFAULT_LANGUAGE_CODE
: appUserService.getById(receiveUserId).getLanguageCode();
uniPushService.send(new UniPushMessage() uniPushService.send(new UniPushMessage()
.setSenderId("admin-uid-" + sendUserId) .setSenderId("admin-uid-" + sendUserId)
.setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) .setReceiverId(receiveUserFrom + "-uid-" + receiveUserId)
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话")
.setContentPre(adminUser.getUserName())
.setContent("请求与您视频通话")
.setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话") .setTitle("视频通话")
.setContentPre(adminUser.getUserName()) .setContentPre(adminUser.getUserName())
.setContent("请求与您视频通话") .setContent("请求与您视频通话")
.setTicketId(String.valueOf(ticketId)) .setPayload(new UniPushMessageCallPayload()
.setTicketType(1) .setTitle("视频通话")
.setUserId(adminUser.getId()) .setContentPre(adminUser.getUserName())
.setUserName(adminUser.getUserName()) .setContent("请求与您视频通话")
.setUserAvatar(adminUser.getAvatar()) .setTicketId(String.valueOf(ticketId))
.setCategory("ticketCall") .setTicketType(1)
.setFrom("admin") .setUserId(adminUser.getId())
.setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) .setUserName(adminUser.getUserName())
.setUserAvatar(adminUser.getAvatar())
.setCategory("ticketCall")
.setFrom("admin")
.setReceiverId(receiveUserFrom + "-uid-" + receiveUserId)
)
) )
) , receiverUserLanguageCode);
);
if (StrUtil.equals(Constant.FROM_APP, ticket.getUserPlatform())) { if (StrUtil.equals(Constant.FROM_APP, ticket.getUserPlatform())) {
ssePushService.sendTicketCallToApp(adminUser, ticket.getUserId(), ticketId); ssePushService.sendTicketCallToApp(adminUser, ticket.getUserId(), ticketId);
} else { } else {
@ -1453,27 +1459,27 @@ public class TicketController extends ControllerBase {
userNames.add(adminUser1.getUserName()); userNames.add(adminUser1.getUserName());
} else { } else {
uniPushService.send(new UniPushMessage() uniPushService.send(new UniPushMessage()
.setSenderId("admin-uid-" + adminUser.getId()) .setSenderId("admin-uid-" + adminUser.getId())
.setReceiverId("admin-uid-" + userId) .setReceiverId("admin-uid-" + userId)
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("视频通话")
.setContentPre(adminUser.getUserName())
.setContent("请求与您视频通话")
.setPayload(new UniPushMessageCallPayload()
.setTitle("视频通话") .setTitle("视频通话")
.setContentPre(adminUser.getUserName()) .setContentPre(adminUser.getUserName())
.setContent("请求与您视频通话") .setContent("请求与您视频通话")
.setTicketId(String.valueOf(request.getTicketId())) .setPayload(new UniPushMessageCallPayload()
.setTicketType(1) .setTitle("视频通话")
.setUserId(adminUser.getId()) .setContentPre(adminUser.getUserName())
.setUserName(adminUser.getUserName()) .setContent("请求与您视频通话")
.setUserAvatar(adminUser.getAvatar()) .setTicketId(String.valueOf(request.getTicketId()))
.setCategory("ticketCall") .setTicketType(1)
.setFrom("admin") .setUserId(adminUser.getId())
.setReceiverId("admin-uid-" + userId) .setUserName(adminUser.getUserName())
.setUserAvatar(adminUser.getAvatar())
.setCategory("ticketCall")
.setFrom("admin")
.setReceiverId("admin-uid-" + userId)
)
) )
) , Constant.DEFAULT_LANGUAGE_CODE);
);
ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId()); ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId());
// ticketCallJoinService.add(ticketCall.getId(), userId, Constant.FROM_ADMIN); // ticketCallJoinService.add(ticketCall.getId(), userId, Constant.FROM_ADMIN);
stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-uid-" + userId); stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-uid-" + userId);

View File

@ -61,6 +61,7 @@
, u.title_id , u.title_id
, p.position_name AS 'title' , p.position_name AS 'title'
, u.type , u.type
,u.language_code
FROM app_user u FROM app_user u
LEFT JOIN t_base_customer c ON u.company_id = c.id LEFT JOIN t_base_customer c ON u.company_id = c.id
LEFT JOIN t_base_area a1 ON u.area_id = a1.id LEFT JOIN t_base_area a1 ON u.area_id = a1.id

View File

@ -1,6 +1,9 @@
package com.nflg.mobilebroken.starter.interceptor; package com.nflg.mobilebroken.starter.interceptor;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.nflg.mobilebroken.common.constant.Constant;
import com.nflg.mobilebroken.common.util.MultilingualUtil; import com.nflg.mobilebroken.common.util.MultilingualUtil;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
@ -14,12 +17,14 @@ public class LanguageInterceptor implements HandlerInterceptor {
@Override @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 从请求头中获取 language 参数 // 从请求头中获取 language 参数
String language = request.getHeader("language"); String language = request.getHeader(Constant.HEADER_LANGUAGE);
if(StrUtil.isNotBlank(language)){ if (StrUtil.isNotBlank(language)) {
MultilingualUtil.setLanguage(language); MultilingualUtil.setLanguage(language);
StpUtil.getTokenSession().set(Constant.HEADER_LANGUAGE, language);
} }
return true; return true;
} }
@Override @Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 请求完成后清理 ThreadLocal防止内存泄漏 // 请求完成后清理 ThreadLocal防止内存泄漏

View File

@ -34,8 +34,8 @@ public class UniPushService {
private AliYunTranslate aliYunTranslate; private AliYunTranslate aliYunTranslate;
@Async("httpExecutor") @Async("httpExecutor")
public CompletableFuture<Void> send(UniPushMessage message) { public CompletableFuture<Void> send(UniPushMessage message, String languageCode) {
translate(message); translate(message, languageCode);
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);
@ -43,63 +43,64 @@ public class UniPushService {
return CompletableFuture.completedFuture(null); return CompletableFuture.completedFuture(null);
} }
private void translate(UniPushMessage message) { private void translate(UniPushMessage message, String languageCode) {
String languageCode = MultilingualUtil.getLanguage(); if (!StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) {
String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode); String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode);
if (StrUtil.isNotBlank(aliyunCode) && !StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) { if (StrUtil.isNotBlank(aliyunCode)) {
UniPushMessageBody body = message.getSendData(); UniPushMessageBody body = message.getSendData();
body.setTitle(aliYunTranslate.translateWord(body.getTitle(), aliyunCode)); body.setTitle(aliYunTranslate.translateWord(body.getTitle(), aliyunCode));
body.setContent(body.getContentPre() + aliYunTranslate.translateWord(body.getContent(), aliyunCode)); body.setContent(body.getContentPre() + aliYunTranslate.translateWord(body.getContent(), aliyunCode));
if (body.getPayload() instanceof UniPushMessageCallPayload) { if (body.getPayload() instanceof UniPushMessageCallPayload) {
UniPushMessageCallPayload payload = (UniPushMessageCallPayload) body.getPayload(); UniPushMessageCallPayload payload = (UniPushMessageCallPayload) body.getPayload();
payload.setTitle(aliYunTranslate.translateWord(payload.getTitle(), aliyunCode)); payload.setTitle(aliYunTranslate.translateWord(payload.getTitle(), aliyunCode));
payload.setContent(payload.getContentPre() + aliYunTranslate.translateWord(payload.getContent(), 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)
.setReceiverId(to) // .setReceiverId(to)
.setSendData(new UniPushMessageBody() // .setSendData(new UniPushMessageBody()
.setTitle("工单聊天消息") // .setTitle("工单聊天消息")
.setContent(CollectionUtil.isNotEmpty(data.getAttachments()) ? "文件" : (CollectionUtil.isNotEmpty(data.getImages()) ? "图片" : data.getContent())) // .setContent(CollectionUtil.isNotEmpty(data.getAttachments()) ? "文件" : (CollectionUtil.isNotEmpty(data.getImages()) ? "图片" : data.getContent()))
) // )
); // );
} // }
public void sendTodoMessageFromAdmin(String ticketId, Integer type, String platform, Integer userId, String content) { public void sendTodoMessageFromAdmin(String ticketId, Integer type, String platform, Integer userId, String content, String languageCode) {
send(new UniPushMessage() send(new UniPushMessage()
.setSenderId("admin-uid-" + AdminUserUtil.getUserId()) .setSenderId("admin-uid-" + AdminUserUtil.getUserId())
.setReceiverId(platform + "-uid-" + userId) .setReceiverId(platform + "-uid-" + userId)
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("工单消息")
.setContent(content)
.setPayload(new UniPushMessageCallPayload()
.setTicketId(ticketId)
.setTicketType(type)
.setTitle("工单消息") .setTitle("工单消息")
.setContent(content) .setContent(content)
.setPayload(new UniPushMessageCallPayload()
.setTicketId(ticketId)
.setTicketType(type)
.setTitle("工单消息")
.setContent(content)
)
) )
) , languageCode);
);
} }
public void sendTodoMessageFromApp(String ticketId, Integer type, Integer userId, String content) { public void sendTodoMessageFromApp(String ticketId, Integer type, Integer userId, String content, String languageCode) {
send(new UniPushMessage() send(new UniPushMessage()
.setSenderId("app-uid-" + AppUserUtil.getUserId()) .setSenderId("app-uid-" + AppUserUtil.getUserId())
.setReceiverId("admin-uid-" + userId) .setReceiverId("admin-uid-" + userId)
.setSendData(new UniPushMessageBody() .setSendData(new UniPushMessageBody()
.setTitle("工单消息")
.setContent(content)
.setPayload(new UniPushMessageCallPayload()
.setTicketId(ticketId)
.setTicketType(type)
.setTitle("工单消息") .setTitle("工单消息")
.setContent(content) .setContent(content)
.setPayload(new UniPushMessageCallPayload()
.setTicketId(ticketId)
.setTicketType(type)
.setTitle("工单消息")
.setContent(content)
)
) )
) , languageCode);
);
} }
} }