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 54c92f13..9f665f93 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 @@ -829,14 +829,20 @@ public class TicketController extends ControllerBase { MessageVO vo = new MessageVO(); List messageVOS = ticketChatService.getMessages(Long.valueOf(ticketId), userId); String languageCode = MultilingualUtil.getLanguage(); - if (!StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) { - String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode); - messageVOS.stream() - .filter(m -> m.getSenderId() == 0) - .forEach(m -> { - m.setSenderName(aliYunTranslate.translateWord(m.getSenderName(), aliyunCode)); - m.setContent(m.getContentPre() + aliYunTranslate.translateWord(m.getContent(), aliyunCode)); - }); + 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)); + } + }); } vo.setMessages(messageVOS); vo.setNotReadCount(Integer.valueOf(Optional.ofNullable((String) stringRedisTemplate.opsForHash().get("chatMessage:notreaded:" + ticketId + ":admin:" + userId, "count")).orElse("0"))); 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 1d8e7141..cd0791a2 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,14 +411,20 @@ public class TicketController extends ControllerBase { MessageVO vo = new MessageVO(); List messageVOS = ticketChatService.getMessages(ticketId, userId); String languageCode = MultilingualUtil.getLanguage(); - if (!StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) { - String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode); - messageVOS.stream() - .filter(m -> m.getSenderId() == 0) - .forEach(m -> { - m.setSenderName(aliYunTranslate.translateWord(m.getSenderName(), aliyunCode)); - m.setContent(m.getContentPre() + aliYunTranslate.translateWord(m.getContent(), aliyunCode)); - }); + 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)); + } + }); } vo.setMessages(messageVOS); vo.setNotReadCount(Integer.valueOf(Optional.ofNullable((String) stringRedisTemplate.opsForHash().get("chatMessage:notreaded:" + ticketId + ":app:" + userId, "count")).orElse("0"))); @@ -594,7 +600,7 @@ public class TicketController extends ControllerBase { **/ @GetMapping("getSolutionMeasures") public ApiResult getSolutionMeasures(@Valid @RequestParam @NotNull Long ticketId) { - return ApiResult.success(ticketSolutionService.getSolutionMeasures(ticketId,MultilingualUtil.getLanguage())); + return ApiResult.success(ticketSolutionService.getSolutionMeasures(ticketId, MultilingualUtil.getLanguage())); } /** 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 c3db5dfd..ec67d355 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 @@ -40,6 +40,9 @@ public class ChatMessageDTO { // 消息内容 private String content; + // 是否撤回 + private boolean withdrawn = false; + //语音消息URL地址 private String audioUrl; 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 d1e44849..30231eae 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 @@ -30,6 +30,9 @@ public class ChatMessageVO { // 消息内容 private String content; + // 是否撤回 + private boolean withdrawn; + //语音消息URL地址 private String audioUrl; 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 af3be227..256f99eb 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 @@ -830,14 +830,20 @@ public class TicketController extends ControllerBase { MessageVO vo = new MessageVO(); List messageVOS = ticketChatService.getMessages(ticketId, userId); String languageCode = MultilingualUtil.getLanguage(); - if (!StrUtil.equals(languageCode, Constant.DEFAULT_LANGUAGE_CODE)) { - String aliyunCode = Constant.LANGUAGE_ALIYUN_MAP.get(languageCode); - messageVOS.stream() - .filter(m -> m.getSenderId() == 0) - .forEach(m -> { - m.setSenderName(aliYunTranslate.translateWord(m.getSenderName(), aliyunCode)); - m.setContent(m.getContentPre() + aliYunTranslate.translateWord(m.getContent(), aliyunCode)); - }); + 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)); + } + }); } vo.setMessages(messageVOS); vo.setNotReadCount(Integer.valueOf(Optional.ofNullable((String) stringRedisTemplate.opsForHash().get("chatMessage:notreaded:" + ticketId + ":admin:" + userId, "count")).orElse("0"))); 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 8bdb0b3a..bedc1aab 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 @@ -68,6 +68,7 @@ public class TicketChatService { .setSenderAvatar(m.getSenderAvatar()) .setContentPre(m.getContentPre()) .setContent(m.getContent()) + .setWithdrawn(m.isWithdrawn()) .setAttachments(m.getAttachments()) .setImages(m.getImages()) .setCreateTime(formatter.format(m.getCreateTime())) @@ -82,6 +83,7 @@ public class TicketChatService { .setSenderName(m.getQuote().getSenderName()) .setSenderAvatar(m.getQuote().getSenderAvatar()) .setContent(m.getQuote().getContent()) + .setWithdrawn(m.getQuote().isWithdrawn()) .setAttachments(m.getQuote().getAttachments()) .setImages(m.getQuote().getImages()) .setRemindUsers(m.getQuote().getRemindUsers()) @@ -154,6 +156,7 @@ public class TicketChatService { if (duration.toMinutes() <= ticketSet.getWithdrawTimeout()) { log.info("消息撤回 找到消息"); message.setContent("消息已撤回"); + message.setWithdrawn(true); flag=true; //删除消息附件 List fileIds = new ArrayList<>(); @@ -173,6 +176,7 @@ public class TicketChatService { if (flag && Objects.nonNull(message.getQuote()) && message.getQuote().getId().equals(messageId)){ log.info("消息撤回 找到引用消息:{}",message.getId()); message.getQuote().setContent("此引用已经被撤回"); + message.getQuote().setWithdrawn(true); } } if (flag){