09-14-netty新增其他类型系统房间
This commit is contained in:
@ -69,7 +69,7 @@ public class AttendanceReminderJob {
|
||||
Set<Long> 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<Long> list1 = list.stream().map(SubConstructionUser::getSysUserId).collect(Collectors.toSet());
|
||||
|
||||
for (Long userId : list1) {
|
||||
chatServerHandler.sendSystemMessageToUser(userId, message);
|
||||
chatServerHandler.sendSystemMessageToUser(userId, message,"1");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -312,7 +312,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
|
||||
// 上传人脸照
|
||||
SysOssVo upload = ossService.upload(file);
|
||||
attendance.setFacePic(upload.getOssId().toString());
|
||||
chatServerHandler.sendSystemMessageToUser(userId, "打卡成功");
|
||||
chatServerHandler.sendSystemMessageToUser(userId, "打卡成功","1");
|
||||
boolean save = this.save(attendance);
|
||||
//插入工资
|
||||
userSalaryDetailService.insertByAttendance(userId, attendance.getClockDate());
|
||||
|
||||
@ -372,7 +372,7 @@ public class BusReissueCardServiceImpl extends ServiceImpl<BusReissueCardMapper,
|
||||
.eq(BusAttendance::getId, bean.getAttendanceId())
|
||||
.set(BusAttendance::getHandle, "1"));
|
||||
//发送通知
|
||||
chatServerHandler.sendSystemMessageToUser(bean.getGangerId(),"["+bean.getUserName()+ "]"+"提交了新的补卡申请");
|
||||
chatServerHandler.sendSystemMessageToUser(bean.getGangerId(),"["+bean.getUserName()+ "]"+"提交了新的补卡申请","1");
|
||||
return bean.getId();
|
||||
}
|
||||
|
||||
|
||||
@ -218,7 +218,7 @@ public class HseSafetyInspectionServiceImpl extends ServiceImpl<HseSafetyInspect
|
||||
if (req.getIsReply().equals("1")) {
|
||||
title = "您有新的安全巡检工单需要整改,请及时处理!";
|
||||
}
|
||||
chatServerHandler.sendSystemMessageToUser(correctorId, title);
|
||||
chatServerHandler.sendSystemMessageToUser(correctorId, title,"2");
|
||||
}
|
||||
// 返回新写入的数据
|
||||
return safetyInspection.getId();
|
||||
@ -470,7 +470,7 @@ public class HseSafetyInspectionServiceImpl extends ServiceImpl<HseSafetyInspect
|
||||
BeanUtils.copyProperties(req, updateInspection);
|
||||
if (safetyInspection.getCreateBy() != null && safetyInspection.getIsReply().equals("1")) {
|
||||
chatServerHandler.sendSystemMessageToUser(safetyInspection.getCreateBy(),
|
||||
"安全巡检工单【" + safetyInspection.getCheckProject() + "】已整改,请及时复查!");
|
||||
"安全巡检工单【" + safetyInspection.getCheckProject() + "】已整改,请及时复查!","2");
|
||||
}
|
||||
// 填充默认值
|
||||
updateInspection.setId(id);
|
||||
|
||||
@ -247,7 +247,7 @@ public class HseViolationRecordServiceImpl extends ServiceImpl<HseViolationRecor
|
||||
}
|
||||
if (req.getCorrectorId() != null) {
|
||||
chatServerHandler.sendSystemMessageToUser(req.getCorrectorId(),
|
||||
"您有一份新的违章工单,请及时处理!工单号为:" + violationRecord.getId());
|
||||
"您有一份新的违章工单,请及时处理!工单号为:" + violationRecord.getId(),"2");
|
||||
}
|
||||
boolean result = this.updateById(violationRecord);
|
||||
if (!result) {
|
||||
|
||||
@ -141,6 +141,12 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket
|
||||
//拿到该用户所参与的房间列表
|
||||
List<ChatGroup> chatGroups = chatGroupService.list(queryWrapper);
|
||||
boolean isHaveSystemRoom = false;
|
||||
//考勤
|
||||
boolean isHaveAttendanceRoom = false;
|
||||
//安全
|
||||
boolean isHaveSafeRoom = false;
|
||||
//质量
|
||||
boolean isHaveQualityRoom = false;
|
||||
if (chatGroups != null && !chatGroups.isEmpty()) {
|
||||
HashMap<String, Object> roomCounts = new HashMap<>();
|
||||
for (ChatGroup chatGroup : chatGroups) {
|
||||
@ -155,9 +161,18 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket
|
||||
userRoomCountMap.put(loginUser.getUserId()+"+"+chatGroup.getId().toString(), list.size());
|
||||
}
|
||||
//在遍历的同时寻找是否有系统消息房间
|
||||
if (chatGroup.getMembers().contains("[99")){
|
||||
if (!isHaveSystemRoom && chatGroup.getMembers().contains("[99")){
|
||||
isHaveSystemRoom = true;
|
||||
}
|
||||
if (!isHaveAttendanceRoom && chatGroup.getMembers().contains("[100")){
|
||||
isHaveAttendanceRoom = true;
|
||||
}
|
||||
if (!isHaveSafeRoom && chatGroup.getMembers().contains("[101")){
|
||||
isHaveSafeRoom = true;
|
||||
}
|
||||
if (!isHaveQualityRoom && chatGroup.getMembers().contains("[102")){
|
||||
isHaveQualityRoom = true;
|
||||
}
|
||||
}
|
||||
JSONObject message = new JSONObject();
|
||||
message.put("type", "3");
|
||||
@ -175,8 +190,30 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket
|
||||
chatGroupService.save(chatGroup);
|
||||
|
||||
//初次创建系统房间后 发送一条初始化信息
|
||||
sendSystemMessageToUser(loginUser.getUserId(),"注册已顺利完成,为确保您正常参与工作,请联系分包管理员确认所属项目及班组。");
|
||||
sendSystemMessageToUser(loginUser.getUserId(),"注册已顺利完成,为确保您正常参与工作,请联系分包管理员确认所属项目及班组。","0");
|
||||
}
|
||||
|
||||
if (!isHaveAttendanceRoom){
|
||||
ChatGroup chatGroup = new ChatGroup();
|
||||
chatGroup.setType(String.valueOf(2));
|
||||
chatGroup.setMembers("[100, "+loginUser.getUserId()+"]");
|
||||
chatGroupService.save(chatGroup);
|
||||
}
|
||||
|
||||
if (!isHaveSafeRoom){
|
||||
ChatGroup chatGroup = new ChatGroup();
|
||||
chatGroup.setType(String.valueOf(2));
|
||||
chatGroup.setMembers("[101, "+loginUser.getUserId()+"]");
|
||||
chatGroupService.save(chatGroup);
|
||||
}
|
||||
|
||||
if (!isHaveQualityRoom){
|
||||
ChatGroup chatGroup = new ChatGroup();
|
||||
chatGroup.setType(String.valueOf(2));
|
||||
chatGroup.setMembers("[102, "+loginUser.getUserId()+"]");
|
||||
chatGroupService.save(chatGroup);
|
||||
}
|
||||
|
||||
}
|
||||
super.userEventTriggered(ctx, evt);
|
||||
}
|
||||
@ -293,13 +330,7 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket
|
||||
//如果满足则说明用户在线
|
||||
if (channelHandlerContexts != null && !channelHandlerContexts.isEmpty()) {
|
||||
//构建所有房间的未读消息数
|
||||
HashMap<String,Object> 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<TextWebSocket
|
||||
|
||||
//通过userId进行发送消息
|
||||
@Transactional
|
||||
public void sendSystemMessageToUser(Long userId, String message){
|
||||
// /现在已用type:0 1 3 4用于服务端发送消息到系统消息房间(暂定为0)
|
||||
public void sendSystemMessageToUser(Long userId, String message,String value){
|
||||
// /现在已用type:0 1 3 (暂定为0)
|
||||
// {
|
||||
// "type":"4",
|
||||
// "message": "testing"
|
||||
@ -389,31 +420,125 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket
|
||||
jsonObject.put("type", "0");
|
||||
jsonObject.put("message", message);
|
||||
|
||||
//生成系统消息的聊天记录
|
||||
//初始化变量
|
||||
LambdaQueryWrapper<ChatGroup> 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<TextWebSocket
|
||||
//给每个通道发送对应消息
|
||||
for (ChannelHandlerContext handlerContext : channelHandlerContexts) {
|
||||
//同时发送所有未读消息给前端进行渲染
|
||||
HashMap<String,Object> 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<String,Object> 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){
|
||||
|
||||
Reference in New Issue
Block a user