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 ec7128f4..91ba1ad1 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 @@ -668,22 +668,23 @@ public class TicketController extends ControllerBase { @GetMapping("getChatMessages") @ApiMark(moduleName = "工单管理", apiName = "获取工单聊天记录") public ApiResult getChatMessages(@Valid @RequestParam @NotNull Integer ticketId) { - MessageVO vo=new MessageVO(); - List messageVOS=ticketChatService.getMessages(ticketId); + Integer userId = AdminUserUtil.getUserId(); + MessageVO vo = new MessageVO(); + List messageVOS = ticketChatService.getMessages(ticketId, userId); vo.setMessages(messageVOS); - String key="chatMessage:readed:"+ticketId+":admin:"+AdminUserUtil.getUserId(); - Set readeds=redisTemplate.opsForSet().members(key); - Set notReadeds=new LinkedHashSet<>(); - if (CollectionUtil.isEmpty(readeds)){ - notReadeds=messageVOS.stream() - .filter(m->!Objects.equals(m.getSenderId(),AdminUserUtil.getUserId())) + String key = "chatMessage:readed:" + ticketId + ":admin:" + userId; + Set readeds = redisTemplate.opsForSet().members(key); + Set notReadeds = new LinkedHashSet<>(); + if (CollectionUtil.isEmpty(readeds)) { + notReadeds = messageVOS.stream() + .filter(m -> !Objects.equals(m.getSenderId(), userId)) .map(ChatMessageVO::getId) .collect(Collectors.toSet()); - }else { - for (ChatMessageVO messageVO:messageVOS) { - if (Objects.equals(messageVO.getSenderId(),AdminUserUtil.getUserId()) || readeds.contains(messageVO.getId())){ + } else { + for (ChatMessageVO messageVO : messageVOS) { + if (Objects.equals(messageVO.getSenderId(), userId) || readeds.contains(messageVO.getId())) { messageVO.setReaded(true); - }else { + } else { notReadeds.add(messageVO.getId()); } } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/SsePushService.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/SsePushService.java index c4b4fd42..6ea500d8 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/SsePushService.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/SsePushService.java @@ -63,6 +63,7 @@ public class SsePushService { .setCreateTime(formatter.format(message.getCreateTime())) .setImages(message.getImages()) .setAttachments(message.getAttachments()) + .setRemindUsers(message.getRemindUsers()) .setQuote(Objects.isNull(message.getQuote()) ? null : new ChatMessageVO() .setId(message.getQuote().getId()) .setFrom(message.getQuote().getFrom()) @@ -73,6 +74,7 @@ public class SsePushService { .setContent(message.getQuote().getContent()) .setAttachments(message.getQuote().getAttachments()) .setImages(message.getQuote().getImages()) + .setRemindUsers(message.getQuote().getRemindUsers()) .setCreateTime(formatter.format(message.getQuote().getCreateTime()))); } } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java index 5a3836db..17f7a08e 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java @@ -271,22 +271,23 @@ public class TiketController extends ControllerBase { **/ @GetMapping("getChatMessages") public ApiResult getChatMessages(@Valid @RequestParam @NotNull Integer ticketId) { - MessageVO vo=new MessageVO(); - List messageVOS=ticketChatService.getMessages(ticketId); + Integer userId = AppUserUtil.getUserId(); + MessageVO vo = new MessageVO(); + List messageVOS = ticketChatService.getMessages(ticketId, userId); vo.setMessages(messageVOS); - String key="chatMessage:readed:"+ticketId+":app:"+AppUserUtil.getUserId(); - Set readeds=redisTemplate.opsForSet().members(key); - Set notReadeds=new LinkedHashSet<>(); - if (CollectionUtil.isEmpty(readeds)){ - notReadeds=messageVOS.stream() - .filter(m->!Objects.equals(m.getSenderId(),AppUserUtil.getUserId())) + String key = "chatMessage:readed:" + ticketId + ":app:" + userId; + Set readeds = redisTemplate.opsForSet().members(key); + Set notReadeds = new LinkedHashSet<>(); + if (CollectionUtil.isEmpty(readeds)) { + notReadeds = messageVOS.stream() + .filter(m -> !Objects.equals(m.getSenderId(), userId)) .map(ChatMessageVO::getId) .collect(Collectors.toSet()); - }else { - for (ChatMessageVO messageVO:messageVOS) { - if (Objects.equals(messageVO.getSenderId(),AppUserUtil.getUserId()) || readeds.contains(messageVO.getId())){ + } else { + for (ChatMessageVO messageVO : messageVOS) { + if (Objects.equals(messageVO.getSenderId(), userId) || readeds.contains(messageVO.getId())) { messageVO.setReaded(true); - }else { + } else { notReadeds.add(messageVO.getId()); } } 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 4377de8f..5fa2394f 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 @@ -1,5 +1,6 @@ package com.nflg.mobilebroken.common.pojo.vo; +import com.nflg.mobilebroken.common.pojo.request.RemindUserRequest; import lombok.Data; import lombok.experimental.Accessors; @@ -43,4 +44,10 @@ public class ChatMessageVO { // 是否已读 private Boolean readed=false; + + //被艾特的用户列表 + private List remindUsers; + + //是否被艾特 + private Boolean reminded; } 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 10cec6ff..b040ee30 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 @@ -30,7 +30,7 @@ public class TicketChatService { mongoTemplate.save(ticketChatDTO); } - public List getMessages(Integer ticketId) { + public List getMessages(Integer ticketId,Integer userId) { Query query = new Query(Criteria.where("ticketId").is(ticketId)); TicketChatDTO ticketChatDTO = mongoTemplate.findOne(query, TicketChatDTO.class); if (Objects.isNull(ticketChatDTO)) { @@ -51,6 +51,8 @@ public class TicketChatService { .setAttachments(m.getAttachments()) .setImages(m.getImages()) .setCreateTime(formatter.format(m.getCreateTime())) + .setRemindUsers(m.getRemindUsers()) + .setReminded(Objects.nonNull(m.getRemindUsers()) && m.getRemindUsers().stream().anyMatch(r -> r.getId().equals(userId))) .setQuote(Objects.isNull(m.getQuote()) ? null : new ChatMessageVO() .setId(m.getQuote().getId()) .setFrom(m.getQuote().getFrom()) @@ -61,6 +63,7 @@ public class TicketChatService { .setContent(m.getQuote().getContent()) .setAttachments(m.getQuote().getAttachments()) .setImages(m.getQuote().getImages()) + .setRemindUsers(m.getQuote().getRemindUsers()) .setCreateTime(formatter.format(m.getQuote().getCreateTime()))) ) .collect(Collectors.toList());