diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/attendance/AttendanceReminderJob.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/attendance/AttendanceReminderJob.java index dbcee0e1..8eb7e253 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/attendance/AttendanceReminderJob.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/attendance/AttendanceReminderJob.java @@ -69,7 +69,7 @@ public class AttendanceReminderJob { Set list1 = list.stream().map(SubConstructionUser::getSysUserId).collect(Collectors.toSet()); for (Long userId : list1) { - chatServerHandler.sendSystemMessageToUser(userId, message); + chatServerHandler.sendSystemMessageToUser(userId, message,"1"); } } @@ -101,7 +101,7 @@ public class AttendanceReminderJob { Set list1 = list.stream().map(SubConstructionUser::getSysUserId).collect(Collectors.toSet()); for (Long userId : list1) { - chatServerHandler.sendSystemMessageToUser(userId, message); + chatServerHandler.sendSystemMessageToUser(userId, message,"1"); } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java index 090437a7..301c5e55 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java @@ -312,7 +312,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl chatGroups = chatGroupService.list(queryWrapper); boolean isHaveSystemRoom = false; + //考勤 + boolean isHaveAttendanceRoom = false; + //安全 + boolean isHaveSafeRoom = false; + //质量 + boolean isHaveQualityRoom = false; if (chatGroups != null && !chatGroups.isEmpty()) { HashMap roomCounts = new HashMap<>(); for (ChatGroup chatGroup : chatGroups) { @@ -155,9 +161,18 @@ public class ChatServerHandler extends SimpleChannelInboundHandler temp = new HashMap<>(); - userRoomCountMap.forEachKey(0, (value) -> { - if (value.contains(id.toString())){ - temp.put(value,userRoomCountMap.get(value)); - } - }); - jsonObject.put("unReadCount", temp); + setValue(id, jsonObject); //给每个通道发送对应消息 for (ChannelHandlerContext handlerContext : channelHandlerContexts) { sendMessage(handlerContext, jsonObject.toString()); @@ -379,8 +410,8 @@ public class ChatServerHandler extends SimpleChannelInboundHandler lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(ChatGroup::getMembers,"[99, "+userId+"]"); - ChatGroup groupServiceOne = chatGroupService.getOne(lambdaQueryWrapper); - //如果给成员发送系统消息 而该成员还没有建立过连接从而没有群聊房间 则创建该成员系统消息房间 - if (groupServiceOne == null){ - groupServiceOne = new ChatGroup(); - groupServiceOne.setType(String.valueOf(2)); - groupServiceOne.setMembers("[99, "+userId+"]"); - groupServiceOne.setLastMessage(message); - groupServiceOne.setLastMessageTime(new Date()); - chatGroupService.save(groupServiceOne); - }else { - groupServiceOne.setLastMessage(message); - groupServiceOne.setLastMessageTime(new Date()); - chatGroupService.updateById(groupServiceOne); + ChatGroup groupServiceOne; + + switch (value){ + //1:系统消息 + case "0" ->{ + //生成系统消息的聊天记录 + lambdaQueryWrapper.eq(ChatGroup::getMembers,"[99, "+userId+"]"); + groupServiceOne = chatGroupService.getOne(lambdaQueryWrapper); + //如果给成员发送系统消息 而该成员还没有建立过连接从而没有群聊房间 则创建该成员系统消息房间 + if (groupServiceOne == null){ + groupServiceOne = new ChatGroup(); + groupServiceOne.setType(String.valueOf(2)); + groupServiceOne.setMembers("[99, "+userId+"]"); + groupServiceOne.setLastMessage(message); + groupServiceOne.setLastMessageTime(new Date()); + chatGroupService.save(groupServiceOne); + }else { + groupServiceOne.setLastMessage(message); + groupServiceOne.setLastMessageTime(new Date()); + chatGroupService.updateById(groupServiceOne); + } + ChatHistory chatHistory = new ChatHistory(); + //发送方设置为99 表示系统消息 + chatHistory.setSenderId(99L); + chatHistory.setGeterId(groupServiceOne.getId()); + chatHistory.setMessage(jsonObject.toString()); + chatHistory.setMessageDate(new Date()); + chatHistory.setIsRead("1");//未读 + chatHistoryService.save(chatHistory); + } + + //2:考勤消息 + case "1" ->{ + lambdaQueryWrapper.eq(ChatGroup::getMembers,"[100, "+userId+"]"); + groupServiceOne = chatGroupService.getOne(lambdaQueryWrapper); + //如果给成员发送考勤消息 而该成员还没有建立过连接从而没有考勤房间 则创建该成员考勤消息房间 + if (groupServiceOne == null){ + groupServiceOne = new ChatGroup(); + groupServiceOne.setType(String.valueOf(2)); + groupServiceOne.setMembers("[100, "+userId+"]"); + groupServiceOne.setLastMessage(message); + groupServiceOne.setLastMessageTime(new Date()); + chatGroupService.save(groupServiceOne); + }else { + groupServiceOne.setLastMessage(message); + groupServiceOne.setLastMessageTime(new Date()); + chatGroupService.updateById(groupServiceOne); + } + ChatHistory chatHistory = new ChatHistory(); + //发送方设置为100 表示系统消息中的考勤消息 + chatHistory.setSenderId(100L); + chatHistory.setGeterId(groupServiceOne.getId()); + chatHistory.setMessage(jsonObject.toString()); + chatHistory.setMessageDate(new Date()); + chatHistory.setIsRead("1");//未读 + chatHistoryService.save(chatHistory); + } + + //安全消息 + case "2" ->{ + lambdaQueryWrapper.eq(ChatGroup::getMembers,"[101, "+userId+"]"); + groupServiceOne = chatGroupService.getOne(lambdaQueryWrapper); + //如果给成员发送安全消息 而该成员还没有建立过连接从而没有安全消息 则创建该成员安全消息房间 + if (groupServiceOne == null){ + groupServiceOne = new ChatGroup(); + groupServiceOne.setType(String.valueOf(2)); + groupServiceOne.setMembers("[101, "+userId+"]"); + groupServiceOne.setLastMessage(message); + groupServiceOne.setLastMessageTime(new Date()); + chatGroupService.save(groupServiceOne); + }else { + groupServiceOne.setLastMessage(message); + groupServiceOne.setLastMessageTime(new Date()); + chatGroupService.updateById(groupServiceOne); + } + ChatHistory chatHistory = new ChatHistory(); + //发送方设置为101 表示系统消息中的安全消息 + chatHistory.setSenderId(101L); + chatHistory.setGeterId(groupServiceOne.getId()); + chatHistory.setMessage(jsonObject.toString()); + chatHistory.setMessageDate(new Date()); + chatHistory.setIsRead("1");//未读 + chatHistoryService.save(chatHistory); + } + + //质量消息 + case "3" ->{ + lambdaQueryWrapper.eq(ChatGroup::getMembers,"[102, "+userId+"]"); + groupServiceOne = chatGroupService.getOne(lambdaQueryWrapper); + //如果给成员发送质量消息 而该成员还没有建立过连接从而没有质量消息 则创建该成员质量消息房间 + if (groupServiceOne == null){ + groupServiceOne = new ChatGroup(); + groupServiceOne.setType(String.valueOf(2)); + groupServiceOne.setMembers("[102, "+userId+"]"); + groupServiceOne.setLastMessage(message); + groupServiceOne.setLastMessageTime(new Date()); + chatGroupService.save(groupServiceOne); + }else { + groupServiceOne.setLastMessage(message); + groupServiceOne.setLastMessageTime(new Date()); + chatGroupService.updateById(groupServiceOne); + } + ChatHistory chatHistory = new ChatHistory(); + //发送方设置为102 表示系统消息中的质量消息 + chatHistory.setSenderId(102L); + chatHistory.setGeterId(groupServiceOne.getId()); + chatHistory.setMessage(jsonObject.toString()); + chatHistory.setMessageDate(new Date()); + chatHistory.setIsRead("1");//未读 + chatHistoryService.save(chatHistory); + } + + default -> { + return; + } } - ChatHistory chatHistory = new ChatHistory(); - //发送方设置为99 表示系统消息 - chatHistory.setSenderId(99L); - chatHistory.setGeterId(groupServiceOne.getId()); - chatHistory.setMessage(jsonObject.toString()); - chatHistory.setMessageDate(new Date()); - chatHistory.setIsRead("1");//未读 - chatHistoryService.save(chatHistory); + //发送消息后 将该房间未读消息数加1 @@ -431,19 +556,24 @@ public class ChatServerHandler extends SimpleChannelInboundHandler temp = new HashMap<>(); - userRoomCountMap.forEachKey(0, (value) -> { - if (value.contains(userId.toString())){ - temp.put(value,userRoomCountMap.get(value)); - } - }); - jsonObject.put("unReadCount", temp); + setValue(userId, jsonObject); sendMessage(handlerContext, jsonObject.toString()); } } } + //设置未读消息数 + private void setValue(Long userId, JSONObject jsonObject) { + HashMap temp = new HashMap<>(); + userRoomCountMap.forEachKey(0, (value) -> { + if (value.contains(userId.toString())){ + temp.put(value,userRoomCountMap.get(value)); + } + }); + jsonObject.put("unReadCount", temp); + } + //用于房间创建后发送确认消息 public void sendRoomInfo(Long userId,ChatGroup chatGroup){