diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java index 82dd8853..57088fe0 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java @@ -436,7 +436,7 @@ public class TicketController extends ControllerBase { //推送消息 ssePushService.sendTicketMessage(Long.valueOf(ticket.getId()), message, MultilingualUtil.getLanguage()); request.getUserIds().forEach(userId -> { - uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, userId, "分派工单", Constant.DEFAULT_LANGUAGE_CODE); + uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, userId, "分派工单"); }); adminMessageService.setReaded(AdminUserUtil.getUserId(), Long.valueOf(ticket.getId()), MessageSubType.TicketToBeAssigned.getState()); return ApiResult.success(); @@ -496,12 +496,9 @@ public class TicketController extends ControllerBase { ticketChatService.addMessage(Long.valueOf(id), message); //推送消息 ssePushService.sendTicketMessage(Long.valueOf(id), message, MultilingualUtil.getLanguage()); - 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); + uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, ticket.getUserPlatform(), ticket.getUserId(), "工单已完成"); deviceTypeService.getCqmsByDeviceType(ticket.getDeviceNo()).forEach(cqm -> { - uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, cqm, "工单已完成", Constant.DEFAULT_LANGUAGE_CODE); + uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, cqm, "工单已完成"); }); } return ApiResult.success(); @@ -529,7 +526,7 @@ public class TicketController extends ControllerBase { ticketChatService.addMessage(Long.valueOf(id), message); //推送消息 ssePushService.sendTicketMessage(Long.valueOf(id), message, MultilingualUtil.getLanguage()); - uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, StrUtil.splitToInt(ticket.getHandle(), ",")[0], "工单被驳回", Constant.DEFAULT_LANGUAGE_CODE); + uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 0, Constant.FROM_ADMIN, StrUtil.splitToInt(ticket.getHandle(), ",")[0], "工单被驳回"); adminMessageService.setReaded(AdminUserUtil.getUserId(), Long.valueOf(id), MessageSubType.TicketSolutionAudit.getState()); } return ApiResult.success(); @@ -832,20 +829,30 @@ public class TicketController extends ControllerBase { MessageVO vo = new MessageVO(); List messageVOS = ticketChatService.getMessages(Long.valueOf(ticketId), userId); String languageCode = MultilingualUtil.getLanguage(); - String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode); - if (StrUtil.isNotBlank(aliyunCode)) { - messageVOS.forEach(m -> { - if (m.getSenderId() == 0 && !StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) { - m.setSenderName(aliYunTranslate.translateWord(m.getSenderName(), aliyunCode)); - m.setContent(m.getContentPre() + aliYunTranslate.translateWord(m.getContent(), aliyunCode)); - } - if (m.isWithdrawn()) { - m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode)); - } - if (Objects.nonNull(m.getQuote()) && m.getQuote().isWithdrawn()) { - m.getQuote().setContent(aliYunTranslate.translateWord(m.getQuote().getContent(), aliyunCode)); - } - }); + if (!StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) { + String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode); + if (StrUtil.isNotBlank(aliyunCode)) { + messageVOS.forEach(m -> { + if (StrUtil.equals(m.getFrom(), "call")) { + if (StrUtil.equals(m.getContent(), "发起了视频通话")) { + if (StrUtil.equals(m.getSenderFrom(), Constant.FROM_ADMIN) && Objects.equals(m.getSenderId(), userId)) { + m.setContent(aliYunTranslate.translateWord("您" + m.getContent(), aliyunCode)); + } else { + m.setContent(m.getSenderName() + aliYunTranslate.translateWord(m.getContent(), aliyunCode)); + } + } else { + m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode)); + } + } else { + if (m.isWithdrawn()) { + m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode)); + } + if (Objects.nonNull(m.getQuote()) && m.getQuote().isWithdrawn()) { + m.getQuote().setContent(aliYunTranslate.translateWord(m.getQuote().getContent(), aliyunCode)); + } + } + }); + } } vo.setMessages(messageVOS); vo.setNotReadCount(Integer.valueOf(Optional.ofNullable((String) stringRedisTemplate.opsForHash().get("chatMessage:notreaded:" + ticketId + ":admin:" + userId, "count")).orElse("0"))); @@ -1432,37 +1439,35 @@ public class TicketController extends ControllerBase { // VUtils.trueThrowBusinessError(ticketCallJoinService.isInCall(ticket.getId(), receiveUserFrom, receiveUserId)).throwMessage("对方正在通话中"); // ticketCallService.add(ticketId, sendUserId, sendUserFrom, receiveUserId, receiveUserFrom); 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() .setSenderId("admin-uid-" + sendUserId) .setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) .setSendData(new UniPushMessageBody() - .setTitle("视频通话") - .setContentPre(adminUser.getUserName()) - .setContent("请求与您视频通话") - .setPayload(new UniPushMessageCallPayload() + .setFrom("call") .setTitle("视频通话") - .setContentPre(adminUser.getUserName()) +// .setContentPre(adminUser.getUserName()) .setContent("请求与您视频通话") - .setTicketId(String.valueOf(ticketId)) - .setTicketType(0) - .setUserId(adminUser.getId()) - .setUserName(adminUser.getUserName()) - .setUserAvatar(adminUser.getAvatar()) - .setCategory("ticketCall") - .setFrom("admin") - .setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) - ) + .setPayload(new UniPushMessageCallPayload() + .setTitle("视频通话") +// .setContentPre(adminUser.getUserName()) + .setContent("请求与您视频通话") + .setTicketId(String.valueOf(ticketId)) + .setTicketType(0) + .setUserId(adminUser.getId()) + .setUserName(adminUser.getUserName()) + .setUserAvatar(adminUser.getAvatar()) + .setCategory("ticketCall") + .setFrom("admin") + .setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) + ) ) - , receiverUserLanguageCode); + ); if (StrUtil.equals(Constant.FROM_APP, ticket.getUserPlatform())) { ssePushService.sendTicketCallToApp(adminUser, ticket.getUserId(), Long.valueOf(ticketId)); } else { ssePushService.sendTicketCallToAdmin(adminUser, receiveUserId, Long.valueOf(ticketId)); } - ticketEventPublisher.publishTicketCallBeginEvent(ticketId, adminUser.getUserName()); + ticketEventPublisher.publishTicketCallBeginEvent(ticketId, adminUser); stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + ticketId, receiveUserFrom + "-uid-" + receiveUserId); stringRedisTemplate.expire(Constant.REDIS_KEY_TICKET_CALL_WAIT + ticketId, 1, TimeUnit.MINUTES); return ApiResult.success(); @@ -1487,24 +1492,25 @@ public class TicketController extends ControllerBase { .setSenderId("admin-uid-" + adminUser.getId()) .setReceiverId("admin-uid-" + userId) .setSendData(new UniPushMessageBody() - .setTitle("视频通话") - .setContentPre(adminUser.getUserName()) - .setContent("请求与您视频通话") - .setPayload(new UniPushMessageCallPayload() + .setFrom("call") .setTitle("视频通话") - .setContentPre(adminUser.getUserName()) +// .setContentPre(adminUser.getUserName()) .setContent("请求与您视频通话") - .setTicketId(String.valueOf(request.getTicketId())) - .setTicketType(0) - .setUserId(adminUser.getId()) - .setUserName(adminUser.getUserName()) - .setUserAvatar(adminUser.getAvatar()) - .setCategory("ticketCall") - .setFrom("admin") - .setReceiverId("admin-uid-" + userId) - ) + .setPayload(new UniPushMessageCallPayload() + .setTitle("视频通话") +// .setContentPre(adminUser.getUserName()) + .setContent("请求与您视频通话") + .setTicketId(String.valueOf(request.getTicketId())) + .setTicketType(0) + .setUserId(adminUser.getId()) + .setUserName(adminUser.getUserName()) + .setUserAvatar(adminUser.getAvatar()) + .setCategory("ticketCall") + .setFrom("admin") + .setReceiverId("admin-uid-" + userId) + ) ) - , Constant.DEFAULT_LANGUAGE_CODE); + ); ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId()); // ticketCallJoinService.add(ticketCall.getId(), userId, Constant.FROM_ADMIN); stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-uid-" + userId); @@ -1535,21 +1541,22 @@ public class TicketController extends ControllerBase { .throwMessage("你已在通话中"); ssePushService.sendTicketCallJoinedToAdmin(AdminUserUtil.getUserId(), ticketId); uniPushService.send(new UniPushMessage() - .setSenderId("admin-uid-" + AdminUserUtil.getUserId())//不重要 - .setReceiverId("admin-uid-" + AdminUserUtil.getUserId()) - .setSendData(new UniPushMessageBody() + .setSenderId("admin-uid-" + AdminUserUtil.getUserId())//不重要 + .setReceiverId("admin-uid-" + AdminUserUtil.getUserId()) + .setSendData(new UniPushMessageBody() + .setFrom("call") + .setTitle("视频通话") + .setContent("加入通话") + .setPayload(new UniPushMessageCallPayload() .setTitle("视频通话") - .setContent("加入通话") - .setPayload(new UniPushMessageCallPayload() - .setTitle("视频通话") - .setTicketId(String.valueOf(ticketId)) - .setTicketType(ticket.getType()) - .setUserId(AdminUserUtil.getUserId()) - .setCategory("ticketCallJoined") - .setFrom("admin") - ) + .setTicketId(String.valueOf(ticketId)) + .setTicketType(ticket.getType()) + .setUserId(AdminUserUtil.getUserId()) + .setCategory("ticketCallJoined") + .setFrom("admin") ) - , Constant.DEFAULT_LANGUAGE_CODE); + ) + ); return ApiResult.success(); } @@ -1565,50 +1572,46 @@ public class TicketController extends ControllerBase { Set userIds = stringRedisTemplate.opsForSet().members(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId()); if (CollectionUtil.isNotEmpty(userIds)) { userIds.forEach(uid -> { - List 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() - .setSenderId(uid)//不重要 - .setReceiverId(uid) - .setSendData(new UniPushMessageBody() - .setTitle("视频通话") - .setContent("视频通话结束") - .setPayload(new UniPushMessageCallPayload() - .setTitle("视频通话结束") - .setTicketId(String.valueOf(request.getTicketId())) - .setTicketType(ticket.getType()) - .setUserId(Integer.valueOf(StrUtil.split(uid, "-").get(2))) - .setCategory("ticketCallEnd") - .setFrom("admin") - ) + .setSenderId(uid)//不重要 + .setReceiverId(uid) + .setSendData(new UniPushMessageBody() + .setFrom("call") + .setTitle("视频通话") + .setContent("视频通话结束") + .setPayload(new UniPushMessageCallPayload() + .setTitle("视频通话结束") + .setTicketId(String.valueOf(request.getTicketId())) + .setTicketType(ticket.getType()) + .setUserId(Integer.valueOf(StrUtil.split(uid, "-").get(2))) + .setCategory("ticketCallEnd") + .setFrom("admin") ) - , receiverUserLanguageCode); + ) + ); }); } stringRedisTemplate.delete(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId()); } else { 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() - .setSenderId(Constant.FROM_ADMIN + "-uid-" + AdminUserUtil.getUserId())//不重要 - .setReceiverId(request.getFrom() + "-uid-" + request.getFromUserId()) - .setSendData(new UniPushMessageBody() - .setTitle("视频通话") - .setContent("视频通话拒接") - .setPayload(new UniPushMessageCallPayload() - .setTitle("视频通话拒接") - .setTicketId(String.valueOf(request.getTicketId())) - .setTicketType(ticket.getType()) - .setUserId(AdminUserUtil.getUserId()) - .setCategory("ticketCallReject") - .setFrom("admin") - ) + .setSenderId(Constant.FROM_ADMIN + "-uid-" + AdminUserUtil.getUserId())//不重要 + .setReceiverId(request.getFrom() + "-uid-" + request.getFromUserId()) + .setSendData(new UniPushMessageBody() + .setFrom("call") + .setTitle("视频通话") + .setContent("视频通话拒接") + .setPayload(new UniPushMessageCallPayload() + .setTitle("视频通话拒接") + .setTicketId(String.valueOf(request.getTicketId())) + .setTicketType(ticket.getType()) + .setUserId(AdminUserUtil.getUserId()) + .setUserName(AdminUserUtil.getUserName()) + .setCategory("ticketCallReject") + .setFrom("admin") ) - , receiverUserLanguageCode); + ) + ); } stringRedisTemplate.opsForSet().remove(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-uid-" + AdminUserUtil.getUserId()); } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallBeginEvent.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallBeginEvent.java index 349dbcbd..978aab15 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallBeginEvent.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallBeginEvent.java @@ -1,9 +1,11 @@ package com.nflg.mobilebroken.admin.event; import com.nflg.mobilebroken.admin.service.SsePushService; +import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.constant.TicketState; import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO; import com.nflg.mobilebroken.common.util.MultilingualUtil; +import com.nflg.mobilebroken.repository.entity.AdminUser; import com.nflg.mobilebroken.repository.service.TicketChatService; import com.nflg.mobilebroken.starter.service.impl.AliYunTranslate; import org.springframework.beans.BeansException; @@ -16,16 +18,16 @@ import java.time.Instant; public class TicketCallBeginEvent extends ApplicationEvent implements ApplicationContextAware { private final Integer ticketId; - private final String userName; + private final AdminUser adminUser; private final String language; private SsePushService ssePushService; private TicketChatService ticketChatService; - public TicketCallBeginEvent(Object source, Integer ticketId, String userName, String language) { + public TicketCallBeginEvent(Object source, Integer ticketId, AdminUser adminUser, String language) { super(source); this.ticketId = ticketId; - this.userName = userName; + this.adminUser = adminUser; this.language = language; } @@ -40,9 +42,10 @@ public class TicketCallBeginEvent extends ApplicationEvent implements Applicatio .setId(cn.hutool.core.util.IdUtil.getSnowflakeNextIdStr()) .setFrom("call") .setTicketState(TicketState.Processing.getState()) - .setSenderId(0) - .setSenderName("通话助手") - .setContentPre(userName) + .setSenderFrom(Constant.FROM_ADMIN) + .setSenderId(adminUser.getId()) + .setSenderName(adminUser.getUserName()) + .setContentPre(adminUser.getUserName()) .setContent("发起了视频通话") .setCreateTime(Instant.now()); ticketChatService.addMessage(Long.valueOf(ticketId), message); diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallEndEvent.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallEndEvent.java index c7b7a6be..8b80b13c 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallEndEvent.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/event/TicketCallEndEvent.java @@ -67,13 +67,11 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC if (Objects.nonNull(userId)) { String from = userId.toString().startsWith("1") ? "app" : "admin"; 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() .setSenderId(from + "-uid-0")//不重要 .setReceiverId(from + "-uid-" + userId) .setSendData(new UniPushMessageBody() + .setFrom("call") .setTitle("视频通话结束") .setPayload(new UniPushMessageCallPayload() .setTicketId(String.valueOf(ticket.getId())) @@ -83,7 +81,7 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC .setFrom("admin") ) ) - , receiverUserLanguageCode); + ); } } } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/publisher/TicketEventPublisher.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/publisher/TicketEventPublisher.java index 0aae2a3a..7fc7deb4 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/publisher/TicketEventPublisher.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/publisher/TicketEventPublisher.java @@ -3,6 +3,7 @@ package com.nflg.mobilebroken.admin.publisher; import com.nflg.mobilebroken.admin.event.*; import com.nflg.mobilebroken.common.pojo.dto.TicketDTO; import com.nflg.mobilebroken.common.util.MultilingualUtil; +import com.nflg.mobilebroken.repository.entity.AdminUser; import com.nflg.mobilebroken.repository.entity.Ticket; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationEventPublisher; @@ -44,9 +45,9 @@ public class TicketEventPublisher { eventPublisher.publishEvent(event); } - public void publishTicketCallBeginEvent(Integer ticketId, String userName) { + public void publishTicketCallBeginEvent(Integer ticketId, AdminUser adminUser) { String language = MultilingualUtil.getLanguage(); - TicketCallBeginEvent event = new TicketCallBeginEvent(this, ticketId, userName, language); + TicketCallBeginEvent event = new TicketCallBeginEvent(this, ticketId, adminUser, language); event.setApplicationContext(applicationContext); eventPublisher.publishEvent(event); } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java index 13063978..94e5e4c7 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java @@ -411,20 +411,30 @@ public class TicketController extends ControllerBase { MessageVO vo = new MessageVO(); List messageVOS = ticketChatService.getMessages(ticketId, userId); String languageCode = MultilingualUtil.getLanguage(); - String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode); - if (StrUtil.isNotBlank(aliyunCode)) { - messageVOS.forEach(m -> { - if (m.getSenderId() == 0 && !StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) { - m.setSenderName(aliYunTranslate.translateWord(m.getSenderName(), aliyunCode)); - m.setContent(m.getContentPre() + aliYunTranslate.translateWord(m.getContent(), aliyunCode)); - } - if (m.isWithdrawn()) { - m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode)); - } - if (Objects.nonNull(m.getQuote()) && m.getQuote().isWithdrawn()) { - m.getQuote().setContent(aliYunTranslate.translateWord(m.getQuote().getContent(), aliyunCode)); - } - }); + if (!StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) { + String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode); + if (StrUtil.isNotBlank(aliyunCode)) { + messageVOS.forEach(m -> { + if (StrUtil.equals(m.getFrom(), "call")) { + if (StrUtil.equals(m.getContent(), "发起了视频通话")) { + if (StrUtil.equals(m.getSenderFrom(), Constant.FROM_APP) && Objects.equals(m.getSenderId(), userId)) { + m.setContent(aliYunTranslate.translateWord("您" + m.getContent(), aliyunCode)); + } else { + m.setContent(m.getSenderName() + aliYunTranslate.translateWord(m.getContent(), aliyunCode)); + } + } else { + m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode)); + } + } else { + if (m.isWithdrawn()) { + m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode)); + } + if (Objects.nonNull(m.getQuote()) && m.getQuote().isWithdrawn()) { + m.getQuote().setContent(aliYunTranslate.translateWord(m.getQuote().getContent(), aliyunCode)); + } + } + }); + } } vo.setMessages(messageVOS); vo.setNotReadCount(Integer.valueOf(Optional.ofNullable((String) stringRedisTemplate.opsForHash().get("chatMessage:notreaded:" + ticketId + ":app:" + userId, "count")).orElse("0"))); @@ -538,7 +548,7 @@ public class TicketController extends ControllerBase { //推送消息 ssePushService.sendTicketMessageToAdmin(id, message); ssePushService.sendTicketMessageToApp(id, message); - uniPushService.sendTodoMessageFromApp(String.valueOf(ticket.getId()), ticket.getType(), ticket.getCurrentHandle(), "工单被重启", Constant.DEFAULT_LANGUAGE_CODE); + uniPushService.sendTodoMessageFromApp(String.valueOf(ticket.getId()), ticket.getType(), ticket.getCurrentHandle(), "工单被重启"); // 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()); appMessageService.setReaded(AppUserUtil.getUserId(), AppUserUtil.getFrom(), MessageSubType.TicketCompletion.getState()); @@ -634,27 +644,28 @@ public class TicketController extends ControllerBase { .setSenderId(ticket.getUserPlatform() + "-uid-" + ticket.getUserId()) .setReceiverId("admin-uid-" + handlerUserId) .setSendData(new UniPushMessageBody() - .setTitle("视频通话") - .setContentPre(appUser.getName()) - .setContent("请求与您视频通话") - .setPayload(new UniPushMessageCallPayload() + .setFrom("call") .setTitle("视频通话") - .setContentPre(appUser.getName()) +// .setContentPre(appUser.getName()) .setContent("请求与您视频通话") - .setTicketId(String.valueOf(ticketId)) - .setTicketType(ticket.getType()) - .setUserId(appUser.getId()) - .setUserName(appUser.getName()) - .setUserAvatar(appUser.getAvatar()) - .setCategory("ticketCall") - .setFrom("app") - .setReceiverId("admin-uid-" + handlerUserId) - ) + .setPayload(new UniPushMessageCallPayload() + .setTitle("视频通话") +// .setContentPre(appUser.getName()) + .setContent("请求与您视频通话") + .setTicketId(String.valueOf(ticketId)) + .setTicketType(ticket.getType()) + .setUserId(appUser.getId()) + .setUserName(appUser.getName()) + .setUserAvatar(appUser.getAvatar()) + .setCategory("ticketCall") + .setFrom("app") + .setReceiverId("admin-uid-" + handlerUserId) + ) ) - , Constant.DEFAULT_LANGUAGE_CODE); + ); ssePushService.sendTicketCallToAdmin(appUser, handlerUserId, ticketId); // ticketCallService.add(ticketId, AppUserUtil.getUserId(),Constant.FROM_APP, handlerUserId, Constant.FROM_ADMIN); - ticketEventPublisher.publishTicketCallBeginEvent(ticketId, appUser.getName()); + ticketEventPublisher.publishTicketCallBeginEvent(ticketId, appUser); stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + ticketId, Constant.FROM_ADMIN + "-uid-" + handlerUserId); stringRedisTemplate.expire(Constant.REDIS_KEY_TICKET_CALL_WAIT + ticketId, 1, TimeUnit.MINUTES); return ApiResult.success(); @@ -675,25 +686,24 @@ public class TicketController extends ControllerBase { VUtils.trueThrowBusinessError(channelUsers.getUsers().contains(ShengWangUtil.getUserId(AppUserUtil.getUserId(), AppUserUtil.getFrom()))) .throwMessage("你已在通话中"); 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() - .setSenderId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())//不重要 - .setReceiverId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId()) - .setSendData(new UniPushMessageBody() + .setSenderId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())//不重要 + .setReceiverId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId()) + .setSendData(new UniPushMessageBody() + .setFrom("call") + .setTitle("视频通话") + .setContent("加入通话") + .setPayload(new UniPushMessageCallPayload() .setTitle("视频通话") - .setContent("加入通话") - .setPayload(new UniPushMessageCallPayload() - .setTitle("视频通话") - .setTicketId(String.valueOf(ticketId)) - .setTicketType(ticket.getType()) - .setUserId(AppUserUtil.getUserId()) - .setCategory("ticketCallJoined") - .setFrom("app") - ) + .setTicketId(String.valueOf(ticketId)) + .setTicketType(ticket.getType()) + .setUserId(AppUserUtil.getUserId()) + .setUserName(AppUserUtil.getUserName()) + .setCategory("ticketCallJoined") + .setFrom("app") ) - , receiverUserLanguageCode); + ) + ); return ApiResult.success(); } @@ -709,49 +719,45 @@ public class TicketController extends ControllerBase { Set userIds = stringRedisTemplate.opsForSet().members(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId()); if (CollectionUtil.isNotEmpty(userIds)) { userIds.forEach(uid -> { - List 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() - .setSenderId(uid)//不重要 - .setReceiverId(uid) - .setSendData(new UniPushMessageBody() - .setTitle("视频通话") - .setContent("视频通话结束") - .setPayload(new UniPushMessageCallPayload() - .setTitle("视频通话结束") - .setTicketId(String.valueOf(request.getTicketId())) - .setTicketType(ticket.getType()) - .setUserId(Integer.valueOf(StrUtil.split(uid, "-").get(2))) - .setCategory("ticketCallEnd") - .setFrom("app") - ) + .setSenderId(uid)//不重要 + .setReceiverId(uid) + .setSendData(new UniPushMessageBody() + .setFrom("call") + .setTitle("视频通话") + .setContent("视频通话结束") + .setPayload(new UniPushMessageCallPayload() + .setTitle("视频通话结束") + .setTicketId(String.valueOf(request.getTicketId())) + .setTicketType(ticket.getType()) + .setUserId(Integer.valueOf(StrUtil.split(uid, "-").get(2))) + .setCategory("ticketCallEnd") + .setFrom("app") ) - , receiverUserLanguageCode); + ) + ); }); } stringRedisTemplate.delete(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId()); } else { - String receiverUserLanguageCode = StrUtil.equals(request.getFrom(), Constant.FROM_ADMIN) - ? Constant.DEFAULT_LANGUAGE_CODE - : appUserService.getById(request.getFromUserId()).getLanguageCode(); uniPushService.send(new UniPushMessage() - .setSenderId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())//不重要 - .setReceiverId(request.getFrom() + "-uid-" + request.getFromUserId()) - .setSendData(new UniPushMessageBody() - .setTitle("视频通话") - .setContent("视频通话拒接") - .setPayload(new UniPushMessageCallPayload() - .setTitle("视频通话拒接") - .setTicketId(String.valueOf(request.getTicketId())) - .setTicketType(ticket.getType()) - .setUserId(AppUserUtil.getUserId()) - .setCategory("ticketCallReject") - .setFrom("app") - ) + .setSenderId(AppUserUtil.getFrom() + "-uid-" + AppUserUtil.getUserId())//不重要 + .setReceiverId(request.getFrom() + "-uid-" + request.getFromUserId()) + .setSendData(new UniPushMessageBody() + .setFrom("call") + .setTitle("视频通话") + .setContent("视频通话拒接") + .setPayload(new UniPushMessageCallPayload() + .setTitle("视频通话拒接") + .setTicketId(String.valueOf(request.getTicketId())) + .setTicketType(ticket.getType()) + .setUserId(AppUserUtil.getUserId()) + .setUserName(AppUserUtil.getUserName()) + .setCategory("ticketCallReject") + .setFrom("app") ) - , receiverUserLanguageCode); + ) + ); stringRedisTemplate.opsForSet().remove(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_APP + "-uid-" + AppUserUtil.getUserId()); } taskScheduler.schedule(() -> { diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallBeginEvent.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallBeginEvent.java index 0ec641a7..40407a2f 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallBeginEvent.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallBeginEvent.java @@ -1,9 +1,11 @@ package com.nflg.mobilebroken.cfs.event; import com.nflg.mobilebroken.cfs.service.SsePushService; +import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.constant.TicketState; import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO; import com.nflg.mobilebroken.common.util.MultilingualUtil; +import com.nflg.mobilebroken.repository.entity.AppUser; import com.nflg.mobilebroken.repository.service.TicketChatService; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; @@ -15,16 +17,16 @@ import java.time.Instant; public class TicketCallBeginEvent extends ApplicationEvent implements ApplicationContextAware { private final Long ticketId; - private final String userName; + private final AppUser appUser; private final String language; private SsePushService ssePushService; private TicketChatService ticketChatService; - public TicketCallBeginEvent(Object source, Long ticketId, String userName, String language) { + public TicketCallBeginEvent(Object source, Long ticketId, AppUser appUser, String language) { super(source); this.ticketId = ticketId; - this.userName = userName; + this.appUser = appUser; this.language = language; } @@ -34,19 +36,20 @@ public class TicketCallBeginEvent extends ApplicationEvent implements Applicatio this.ticketChatService = applicationContext.getBean(TicketChatService.class); } - public void send(){ + public void send() { ChatMessageDTO message = new ChatMessageDTO() .setId(cn.hutool.core.util.IdUtil.getSnowflakeNextIdStr()) .setFrom("call") .setTicketState(TicketState.Processing.getState()) - .setSenderId(0) - .setSenderName("通话助手") - .setContentPre(userName) + .setSenderFrom(Constant.FROM_APP) + .setSenderId(appUser.getId()) + .setSenderName(appUser.getName()) + .setContentPre(appUser.getName()) .setContent("发起了视频通话") .setCreateTime(Instant.now()); ticketChatService.addMessage(ticketId, message); //推送消息 - ssePushService.sendTicketMessageToAdmin(ticketId,message); - ssePushService.sendTicketMessageToApp(ticketId,message); + ssePushService.sendTicketMessageToAdmin(ticketId, message); + ssePushService.sendTicketMessageToApp(ticketId, message); } } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallEndEvent.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallEndEvent.java index e64e93e9..8fa6f0c9 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallEndEvent.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketCallEndEvent.java @@ -67,13 +67,11 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC if (Objects.nonNull(userId)) { String from = userId.toString().startsWith("1") ? "app" : "admin"; 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() .setSenderId(from + "-uid-0")//不重要 .setReceiverId(from + "-uid-" + userId) .setSendData(new UniPushMessageBody() + .setFrom("call") .setTitle("视频通话结束") .setPayload(new UniPushMessageCallPayload() .setTicketId(String.valueOf(ticket.getId())) @@ -83,7 +81,7 @@ public class TicketCallEndEvent extends ApplicationEvent implements ApplicationC .setFrom("app") ) ) - ,receiverUserLanguageCode); + ); } } } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java index 5fa8f3a5..2eab5dd4 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java @@ -3,6 +3,7 @@ package com.nflg.mobilebroken.cfs.publisher; import com.nflg.mobilebroken.cfs.event.*; import com.nflg.mobilebroken.common.pojo.dto.TicketDTO; import com.nflg.mobilebroken.common.util.MultilingualUtil; +import com.nflg.mobilebroken.repository.entity.AppUser; import com.nflg.mobilebroken.repository.entity.Ticket; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationEventPublisher; @@ -55,9 +56,9 @@ public class TicketEventPublisher { eventPublisher.publishEvent(event); } - public void publishTicketCallBeginEvent(Long ticketId, String userName) { + public void publishTicketCallBeginEvent(Long ticketId, AppUser appUser) { String language = MultilingualUtil.getLanguage(); - TicketCallBeginEvent event = new TicketCallBeginEvent(this, ticketId, userName, language); + TicketCallBeginEvent event = new TicketCallBeginEvent(this, ticketId, appUser, language); event.setApplicationContext(applicationContext); eventPublisher.publishEvent(event); } diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/ChatMessageDTO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/ChatMessageDTO.java index ec67d355..db5dbffd 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/ChatMessageDTO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/ChatMessageDTO.java @@ -21,6 +21,9 @@ public class ChatMessageDTO { //来源 private String from; + // 发送者来源,app或者admin + private String senderFrom; + // 发送者id private Integer senderId; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/UniPushMessageBody.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/UniPushMessageBody.java index aeca8e6c..8cf8c0e0 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/UniPushMessageBody.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/UniPushMessageBody.java @@ -9,14 +9,17 @@ import java.util.Objects; @Accessors(chain = true) public class UniPushMessageBody { + //来源 + private String from; + private String title; - // 消息内容前缀 - private String contentPre; - - public String getContentPre() { - return Objects.isNull(contentPre) ? "" : contentPre + " "; - } +// // 消息内容前缀 +// private String contentPre; +// +// public String getContentPre() { +// return Objects.isNull(contentPre) ? "" : contentPre + " "; +// } private String content; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/UniPushMessageCallPayload.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/UniPushMessageCallPayload.java index 5ef4b374..b9176682 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/UniPushMessageCallPayload.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/dto/UniPushMessageCallPayload.java @@ -31,12 +31,12 @@ public class UniPushMessageCallPayload { private String title; - // 消息内容前缀 - private String contentPre; - - public String getContentPre() { - return Objects.isNull(contentPre) ? "" : contentPre; - } +// // 消息内容前缀 +// private String contentPre; +// +// public String getContentPre() { +// return Objects.isNull(contentPre) ? "" : contentPre; +// } private String content; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ChatMessageVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ChatMessageVO.java index 30231eae..d624f92b 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ChatMessageVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/ChatMessageVO.java @@ -15,6 +15,9 @@ public class ChatMessageVO { //来源 private String from; + // 发送者来源,app或者admin + private String senderFrom; + // 发送者id private Integer senderId; diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TicketController.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TicketController.java index 4bef7ce3..df7cca6d 100644 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TicketController.java +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TicketController.java @@ -431,7 +431,7 @@ public class TicketController extends ControllerBase { ssePushService.sendTicketMessageToApp(ticket.getId(), message); ssePushService.sendTicketMessageToAdmin(ticket.getId(), message); request.getUserIds().forEach(userId -> { - uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, userId, "分派工单", Constant.DEFAULT_LANGUAGE_CODE); + uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, userId, "分派工单"); }); adminMessageService.setReaded(AdminUserUtil.getUserId(), ticket.getId(), MessageSubType.TicketToBeAssigned.getState()); return ApiResult.success(); @@ -492,12 +492,9 @@ public class TicketController extends ControllerBase { //推送消息 ssePushService.sendTicketMessageToAdmin(id, message); ssePushService.sendTicketMessageToApp(id, message); - 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); + uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, ticket.getUserPlatform(), ticket.getUserId(), "工单已完成"); deviceTypeService.getCqms(ticket.getDeviceNo()).forEach(cqm -> { - uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, cqm, "工单已完成", Constant.DEFAULT_LANGUAGE_CODE); + uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, cqm, "工单已完成"); }); } return ApiResult.success(); @@ -527,7 +524,7 @@ public class TicketController extends ControllerBase { //推送消息 ssePushService.sendTicketMessageToAdmin(id, message); ssePushService.sendTicketMessageToApp(id, message); - uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, StrUtil.splitToInt(ticket.getHandle(), ",")[0], "工单被驳回", Constant.DEFAULT_LANGUAGE_CODE); + uniPushService.sendTodoMessageFromAdmin(String.valueOf(ticket.getId()), 1, Constant.FROM_ADMIN, StrUtil.splitToInt(ticket.getHandle(), ",")[0], "工单被驳回"); stringRedisTemplate.opsForHash().delete("ticket:disbale:SelectImage", id.toString()); adminMessageService.setReaded(AdminUserUtil.getUserId(), id, MessageSubType.TicketSolutionAudit.getState()); } @@ -833,20 +830,30 @@ public class TicketController extends ControllerBase { MessageVO vo = new MessageVO(); List messageVOS = ticketChatService.getMessages(ticketId, userId); String languageCode = MultilingualUtil.getLanguage(); - String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode); - if (StrUtil.isNotBlank(aliyunCode)) { - messageVOS.forEach(m -> { - if (m.getSenderId() == 0 && !StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) { - m.setSenderName(aliYunTranslate.translateWord(m.getSenderName(), aliyunCode)); - m.setContent(m.getContentPre() + aliYunTranslate.translateWord(m.getContent(), aliyunCode)); - } - if (m.isWithdrawn()) { - m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode)); - } - if (Objects.nonNull(m.getQuote()) && m.getQuote().isWithdrawn()) { - m.getQuote().setContent(aliYunTranslate.translateWord(m.getQuote().getContent(), aliyunCode)); - } - }); + if (!StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) { + String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode); + if (StrUtil.isNotBlank(aliyunCode)) { + messageVOS.forEach(m -> { + if (StrUtil.equals(m.getFrom(), "call")) { + if (StrUtil.equals(m.getContent(), "发起了视频通话")) { + if (StrUtil.equals(m.getSenderFrom(), Constant.FROM_ADMIN) && Objects.equals(m.getSenderId(), userId)) { + m.setContent(aliYunTranslate.translateWord("您" + m.getContent(), aliyunCode)); + } else { + m.setContent(m.getSenderName() + aliYunTranslate.translateWord(m.getContent(), aliyunCode)); + } + } else { + m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode)); + } + } else { + if (m.isWithdrawn()) { + m.setContent(aliYunTranslate.translateWord(m.getContent(), aliyunCode)); + } + if (Objects.nonNull(m.getQuote()) && m.getQuote().isWithdrawn()) { + m.getQuote().setContent(aliYunTranslate.translateWord(m.getQuote().getContent(), aliyunCode)); + } + } + }); + } } vo.setMessages(messageVOS); vo.setNotReadCount(Integer.valueOf(Optional.ofNullable((String) stringRedisTemplate.opsForHash().get("chatMessage:notreaded:" + ticketId + ":admin:" + userId, "count")).orElse("0"))); @@ -1402,37 +1409,35 @@ public class TicketController extends ControllerBase { // VUtils.trueThrowBusinessError(ticketCallJoinService.isInCall(ticket.getId(), receiveUserFrom, receiveUserId)).throwMessage("对方正在通话中"); // ticketCallService.add(ticketId, sendUserId, sendUserFrom, receiveUserId, receiveUserFrom); 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() .setSenderId("admin-uid-" + sendUserId) .setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) .setSendData(new UniPushMessageBody() - .setTitle("视频通话") - .setContentPre(adminUser.getUserName()) - .setContent("请求与您视频通话") - .setPayload(new UniPushMessageCallPayload() + .setFrom("call") .setTitle("视频通话") - .setContentPre(adminUser.getUserName()) +// .setContentPre(adminUser.getUserName()) .setContent("请求与您视频通话") - .setTicketId(String.valueOf(ticketId)) - .setTicketType(1) - .setUserId(adminUser.getId()) - .setUserName(adminUser.getUserName()) - .setUserAvatar(adminUser.getAvatar()) - .setCategory("ticketCall") - .setFrom("admin") - .setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) - ) + .setPayload(new UniPushMessageCallPayload() + .setTitle("视频通话") +// .setContentPre(adminUser.getUserName()) + .setContent("请求与您视频通话") + .setTicketId(String.valueOf(ticketId)) + .setTicketType(1) + .setUserId(adminUser.getId()) + .setUserName(adminUser.getUserName()) + .setUserAvatar(adminUser.getAvatar()) + .setCategory("ticketCall") + .setFrom("admin") + .setReceiverId(receiveUserFrom + "-uid-" + receiveUserId) + ) ) - , receiverUserLanguageCode); + ); if (StrUtil.equals(Constant.FROM_APP, ticket.getUserPlatform())) { ssePushService.sendTicketCallToApp(adminUser, ticket.getUserId(), ticketId); } else { ssePushService.sendTicketCallToAdmin(adminUser, receiveUserId, ticketId); } - ticketEventPublisher.publishTicketCallBeginEvent(ticketId, adminUser.getUserName()); + ticketEventPublisher.publishTicketCallBeginEvent(ticketId, adminUser); stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + ticketId, receiveUserFrom + "-uid-" + receiveUserId); stringRedisTemplate.expire(Constant.REDIS_KEY_TICKET_CALL_WAIT + ticketId, 1, TimeUnit.MINUTES); return ApiResult.success(); @@ -1462,24 +1467,25 @@ public class TicketController extends ControllerBase { .setSenderId("admin-uid-" + adminUser.getId()) .setReceiverId("admin-uid-" + userId) .setSendData(new UniPushMessageBody() - .setTitle("视频通话") - .setContentPre(adminUser.getUserName()) - .setContent("请求与您视频通话") - .setPayload(new UniPushMessageCallPayload() + .setFrom("call") .setTitle("视频通话") - .setContentPre(adminUser.getUserName()) +// .setContentPre(adminUser.getUserName()) .setContent("请求与您视频通话") - .setTicketId(String.valueOf(request.getTicketId())) - .setTicketType(1) - .setUserId(adminUser.getId()) - .setUserName(adminUser.getUserName()) - .setUserAvatar(adminUser.getAvatar()) - .setCategory("ticketCall") - .setFrom("admin") - .setReceiverId("admin-uid-" + userId) - ) + .setPayload(new UniPushMessageCallPayload() + .setTitle("视频通话") +// .setContentPre(adminUser.getUserName()) + .setContent("请求与您视频通话") + .setTicketId(String.valueOf(request.getTicketId())) + .setTicketType(1) + .setUserId(adminUser.getId()) + .setUserName(adminUser.getUserName()) + .setUserAvatar(adminUser.getAvatar()) + .setCategory("ticketCall") + .setFrom("admin") + .setReceiverId("admin-uid-" + userId) + ) ) - , Constant.DEFAULT_LANGUAGE_CODE); + ); ssePushService.sendTicketCallToAdmin(adminUser, userId, request.getTicketId()); // ticketCallJoinService.add(ticketCall.getId(), userId, Constant.FROM_ADMIN); stringRedisTemplate.opsForSet().add(Constant.REDIS_KEY_TICKET_CALL_WAIT + request.getTicketId(), Constant.FROM_ADMIN + "-uid-" + userId); diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/event/TicketCallBeginEvent.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/event/TicketCallBeginEvent.java index a1efea0d..5de51b8f 100644 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/event/TicketCallBeginEvent.java +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/event/TicketCallBeginEvent.java @@ -1,9 +1,11 @@ package com.nflg.mobilebroken.gongfu.event; +import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.gongfu.service.SsePushService; import com.nflg.mobilebroken.common.constant.TicketState; import com.nflg.mobilebroken.common.pojo.dto.ChatMessageDTO; import com.nflg.mobilebroken.common.util.MultilingualUtil; +import com.nflg.mobilebroken.repository.entity.AdminUser; import com.nflg.mobilebroken.repository.service.TicketChatService; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; @@ -15,16 +17,16 @@ import java.time.Instant; public class TicketCallBeginEvent extends ApplicationEvent implements ApplicationContextAware { private final Long ticketId; - private final String userName; + private final AdminUser adminUser; private final String language; private SsePushService ssePushService; private TicketChatService ticketChatService; - public TicketCallBeginEvent(Object source, Long ticketId, String userName, String language) { + public TicketCallBeginEvent(Object source, Long ticketId, AdminUser adminUser, String language) { super(source); this.ticketId = ticketId; - this.userName = userName; + this.adminUser = adminUser; this.language = language; } @@ -39,14 +41,15 @@ public class TicketCallBeginEvent extends ApplicationEvent implements Applicatio .setId(cn.hutool.core.util.IdUtil.getSnowflakeNextIdStr()) .setFrom("call") .setTicketState(TicketState.Processing.getState()) - .setSenderId(0) - .setSenderName("通话助手") - .setContentPre(userName) + .setSenderFrom(Constant.FROM_ADMIN) + .setSenderId(adminUser.getId()) + .setSenderName(adminUser.getUserName()) + .setContentPre(adminUser.getUserName()) .setContent("发起了视频通话") .setCreateTime(Instant.now()); - ticketChatService.addMessage(Long.valueOf(ticketId), message); + ticketChatService.addMessage(ticketId, message); //推送消息 - ssePushService.sendTicketMessageToAdmin(Long.valueOf(ticketId), message); - ssePushService.sendTicketMessageToApp(Long.valueOf(ticketId), message); + ssePushService.sendTicketMessageToAdmin(ticketId, message); + ssePushService.sendTicketMessageToApp(ticketId, message); } } diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/publisher/TicketEventPublisher.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/publisher/TicketEventPublisher.java index dfeeaff2..7ad99343 100644 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/publisher/TicketEventPublisher.java +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/publisher/TicketEventPublisher.java @@ -2,6 +2,7 @@ package com.nflg.mobilebroken.gongfu.publisher; import com.nflg.mobilebroken.gongfu.event.*; import com.nflg.mobilebroken.common.util.MultilingualUtil; +import com.nflg.mobilebroken.repository.entity.AdminUser; import com.nflg.mobilebroken.repository.entity.GongfuTicket; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationEventPublisher; @@ -43,9 +44,9 @@ public class TicketEventPublisher { eventPublisher.publishEvent(event); } - public void publishTicketCallBeginEvent(Long ticketId, String userName) { + public void publishTicketCallBeginEvent(Long ticketId, AdminUser adminUser) { String language = MultilingualUtil.getLanguage(); - TicketCallBeginEvent event = new TicketCallBeginEvent(this, ticketId, userName, language); + TicketCallBeginEvent event = new TicketCallBeginEvent(this, ticketId, adminUser, language); event.setApplicationContext(applicationContext); eventPublisher.publishEvent(event); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/TicketChatService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/TicketChatService.java index bedc1aab..0533a5cd 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/TicketChatService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/TicketChatService.java @@ -63,6 +63,7 @@ public class TicketChatService { .setId(m.getId()) .setFrom(m.getFrom()) .setTicketState(m.getTicketState()) + .setSenderFrom(m.getSenderFrom()) .setSenderId(m.getSenderId()) .setSenderName(m.getSenderName()) .setSenderAvatar(m.getSenderAvatar()) @@ -79,6 +80,7 @@ public class TicketChatService { .setId(m.getQuote().getId()) .setFrom(m.getQuote().getFrom()) .setTicketState(m.getQuote().getTicketState()) + .setSenderFrom(m.getQuote().getSenderFrom()) .setSenderId(m.getQuote().getSenderId()) .setSenderName(m.getQuote().getSenderName()) .setSenderAvatar(m.getQuote().getSenderAvatar()) diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/UniPushService.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/UniPushService.java index a3e2259b..d4d9ced1 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/UniPushService.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/UniPushService.java @@ -34,8 +34,8 @@ public class UniPushService { private AliYunTranslate aliYunTranslate; @Async("httpExecutor") - public CompletableFuture send(UniPushMessage message, String languageCode) { - translate(message, languageCode); + public CompletableFuture send(UniPushMessage message) { +// translate(message, languageCode); log.info("发送uniapp消息:{}", JSONUtil.toJsonStr(message)); RestTemplate restTemplate = new RestTemplate(); ResponseEntity response = restTemplate.postForEntity(url, message, String.class); @@ -43,21 +43,21 @@ public class UniPushService { return CompletableFuture.completedFuture(null); } - private void translate(UniPushMessage message, String languageCode) { - if (!StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) { - String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode); - if (StrUtil.isNotBlank(aliyunCode)) { - 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)); - } - } - } - } +// private void translate(UniPushMessage message, String languageCode) { +// if (!StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) { +// String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode); +// if (StrUtil.isNotBlank(aliyunCode)) { +// 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) { // send(new UniPushMessage() @@ -70,37 +70,37 @@ public class UniPushService { // ); // } - public void sendTodoMessageFromAdmin(String ticketId, Integer type, String platform, Integer userId, String content, String languageCode) { + public void sendTodoMessageFromAdmin(String ticketId, Integer type, String platform, Integer userId, String content) { send(new UniPushMessage() - .setSenderId("admin-uid-" + AdminUserUtil.getUserId()) - .setReceiverId(platform + "-uid-" + userId) - .setSendData(new UniPushMessageBody() + .setSenderId("admin-uid-" + AdminUserUtil.getUserId()) + .setReceiverId(platform + "-uid-" + userId) + .setSendData(new UniPushMessageBody() + .setTitle("工单消息") + .setContent(content) + .setPayload(new UniPushMessageCallPayload() + .setTicketId(ticketId) + .setTicketType(type) .setTitle("工单消息") .setContent(content) - .setPayload(new UniPushMessageCallPayload() - .setTicketId(ticketId) - .setTicketType(type) - .setTitle("工单消息") - .setContent(content) - ) ) - , languageCode); + ) + ); } - public void sendTodoMessageFromApp(String ticketId, Integer type, Integer userId, String content, String languageCode) { + public void sendTodoMessageFromApp(String ticketId, Integer type, Integer userId, String content) { send(new UniPushMessage() - .setSenderId("app-uid-" + AppUserUtil.getUserId()) - .setReceiverId("admin-uid-" + userId) - .setSendData(new UniPushMessageBody() + .setSenderId("app-uid-" + AppUserUtil.getUserId()) + .setReceiverId("admin-uid-" + userId) + .setSendData(new UniPushMessageBody() + .setTitle("工单消息") + .setContent(content) + .setPayload(new UniPushMessageCallPayload() + .setTicketId(ticketId) + .setTicketType(type) .setTitle("工单消息") .setContent(content) - .setPayload(new UniPushMessageCallPayload() - .setTicketId(ticketId) - .setTicketType(type) - .setTitle("工单消息") - .setContent(content) - ) ) - , languageCode); + ) + ); } } \ No newline at end of file