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());
|
Set<Long> list1 = list.stream().map(SubConstructionUser::getSysUserId).collect(Collectors.toSet());
|
||||||
|
|
||||||
for (Long userId : list1) {
|
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());
|
Set<Long> list1 = list.stream().map(SubConstructionUser::getSysUserId).collect(Collectors.toSet());
|
||||||
|
|
||||||
for (Long userId : list1) {
|
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);
|
SysOssVo upload = ossService.upload(file);
|
||||||
attendance.setFacePic(upload.getOssId().toString());
|
attendance.setFacePic(upload.getOssId().toString());
|
||||||
chatServerHandler.sendSystemMessageToUser(userId, "打卡成功");
|
chatServerHandler.sendSystemMessageToUser(userId, "打卡成功","1");
|
||||||
boolean save = this.save(attendance);
|
boolean save = this.save(attendance);
|
||||||
//插入工资
|
//插入工资
|
||||||
userSalaryDetailService.insertByAttendance(userId, attendance.getClockDate());
|
userSalaryDetailService.insertByAttendance(userId, attendance.getClockDate());
|
||||||
|
|||||||
@ -372,7 +372,7 @@ public class BusReissueCardServiceImpl extends ServiceImpl<BusReissueCardMapper,
|
|||||||
.eq(BusAttendance::getId, bean.getAttendanceId())
|
.eq(BusAttendance::getId, bean.getAttendanceId())
|
||||||
.set(BusAttendance::getHandle, "1"));
|
.set(BusAttendance::getHandle, "1"));
|
||||||
//发送通知
|
//发送通知
|
||||||
chatServerHandler.sendSystemMessageToUser(bean.getGangerId(),"["+bean.getUserName()+ "]"+"提交了新的补卡申请");
|
chatServerHandler.sendSystemMessageToUser(bean.getGangerId(),"["+bean.getUserName()+ "]"+"提交了新的补卡申请","1");
|
||||||
return bean.getId();
|
return bean.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -218,7 +218,7 @@ public class HseSafetyInspectionServiceImpl extends ServiceImpl<HseSafetyInspect
|
|||||||
if (req.getIsReply().equals("1")) {
|
if (req.getIsReply().equals("1")) {
|
||||||
title = "您有新的安全巡检工单需要整改,请及时处理!";
|
title = "您有新的安全巡检工单需要整改,请及时处理!";
|
||||||
}
|
}
|
||||||
chatServerHandler.sendSystemMessageToUser(correctorId, title);
|
chatServerHandler.sendSystemMessageToUser(correctorId, title,"2");
|
||||||
}
|
}
|
||||||
// 返回新写入的数据
|
// 返回新写入的数据
|
||||||
return safetyInspection.getId();
|
return safetyInspection.getId();
|
||||||
@ -470,7 +470,7 @@ public class HseSafetyInspectionServiceImpl extends ServiceImpl<HseSafetyInspect
|
|||||||
BeanUtils.copyProperties(req, updateInspection);
|
BeanUtils.copyProperties(req, updateInspection);
|
||||||
if (safetyInspection.getCreateBy() != null && safetyInspection.getIsReply().equals("1")) {
|
if (safetyInspection.getCreateBy() != null && safetyInspection.getIsReply().equals("1")) {
|
||||||
chatServerHandler.sendSystemMessageToUser(safetyInspection.getCreateBy(),
|
chatServerHandler.sendSystemMessageToUser(safetyInspection.getCreateBy(),
|
||||||
"安全巡检工单【" + safetyInspection.getCheckProject() + "】已整改,请及时复查!");
|
"安全巡检工单【" + safetyInspection.getCheckProject() + "】已整改,请及时复查!","2");
|
||||||
}
|
}
|
||||||
// 填充默认值
|
// 填充默认值
|
||||||
updateInspection.setId(id);
|
updateInspection.setId(id);
|
||||||
|
|||||||
@ -247,7 +247,7 @@ public class HseViolationRecordServiceImpl extends ServiceImpl<HseViolationRecor
|
|||||||
}
|
}
|
||||||
if (req.getCorrectorId() != null) {
|
if (req.getCorrectorId() != null) {
|
||||||
chatServerHandler.sendSystemMessageToUser(req.getCorrectorId(),
|
chatServerHandler.sendSystemMessageToUser(req.getCorrectorId(),
|
||||||
"您有一份新的违章工单,请及时处理!工单号为:" + violationRecord.getId());
|
"您有一份新的违章工单,请及时处理!工单号为:" + violationRecord.getId(),"2");
|
||||||
}
|
}
|
||||||
boolean result = this.updateById(violationRecord);
|
boolean result = this.updateById(violationRecord);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
|
|||||||
@ -141,6 +141,12 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket
|
|||||||
//拿到该用户所参与的房间列表
|
//拿到该用户所参与的房间列表
|
||||||
List<ChatGroup> chatGroups = chatGroupService.list(queryWrapper);
|
List<ChatGroup> chatGroups = chatGroupService.list(queryWrapper);
|
||||||
boolean isHaveSystemRoom = false;
|
boolean isHaveSystemRoom = false;
|
||||||
|
//考勤
|
||||||
|
boolean isHaveAttendanceRoom = false;
|
||||||
|
//安全
|
||||||
|
boolean isHaveSafeRoom = false;
|
||||||
|
//质量
|
||||||
|
boolean isHaveQualityRoom = false;
|
||||||
if (chatGroups != null && !chatGroups.isEmpty()) {
|
if (chatGroups != null && !chatGroups.isEmpty()) {
|
||||||
HashMap<String, Object> roomCounts = new HashMap<>();
|
HashMap<String, Object> roomCounts = new HashMap<>();
|
||||||
for (ChatGroup chatGroup : chatGroups) {
|
for (ChatGroup chatGroup : chatGroups) {
|
||||||
@ -155,9 +161,18 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket
|
|||||||
userRoomCountMap.put(loginUser.getUserId()+"+"+chatGroup.getId().toString(), list.size());
|
userRoomCountMap.put(loginUser.getUserId()+"+"+chatGroup.getId().toString(), list.size());
|
||||||
}
|
}
|
||||||
//在遍历的同时寻找是否有系统消息房间
|
//在遍历的同时寻找是否有系统消息房间
|
||||||
if (chatGroup.getMembers().contains("[99")){
|
if (!isHaveSystemRoom && chatGroup.getMembers().contains("[99")){
|
||||||
isHaveSystemRoom = true;
|
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();
|
JSONObject message = new JSONObject();
|
||||||
message.put("type", "3");
|
message.put("type", "3");
|
||||||
@ -175,8 +190,30 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket
|
|||||||
chatGroupService.save(chatGroup);
|
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);
|
super.userEventTriggered(ctx, evt);
|
||||||
}
|
}
|
||||||
@ -293,13 +330,7 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket
|
|||||||
//如果满足则说明用户在线
|
//如果满足则说明用户在线
|
||||||
if (channelHandlerContexts != null && !channelHandlerContexts.isEmpty()) {
|
if (channelHandlerContexts != null && !channelHandlerContexts.isEmpty()) {
|
||||||
//构建所有房间的未读消息数
|
//构建所有房间的未读消息数
|
||||||
HashMap<String,Object> temp = new HashMap<>();
|
setValue(id, jsonObject);
|
||||||
userRoomCountMap.forEachKey(0, (value) -> {
|
|
||||||
if (value.contains(id.toString())){
|
|
||||||
temp.put(value,userRoomCountMap.get(value));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
jsonObject.put("unReadCount", temp);
|
|
||||||
//给每个通道发送对应消息
|
//给每个通道发送对应消息
|
||||||
for (ChannelHandlerContext handlerContext : channelHandlerContexts) {
|
for (ChannelHandlerContext handlerContext : channelHandlerContexts) {
|
||||||
sendMessage(handlerContext, jsonObject.toString());
|
sendMessage(handlerContext, jsonObject.toString());
|
||||||
@ -379,8 +410,8 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket
|
|||||||
|
|
||||||
//通过userId进行发送消息
|
//通过userId进行发送消息
|
||||||
@Transactional
|
@Transactional
|
||||||
public void sendSystemMessageToUser(Long userId, String message){
|
public void sendSystemMessageToUser(Long userId, String message,String value){
|
||||||
// /现在已用type:0 1 3 4用于服务端发送消息到系统消息房间(暂定为0)
|
// /现在已用type:0 1 3 (暂定为0)
|
||||||
// {
|
// {
|
||||||
// "type":"4",
|
// "type":"4",
|
||||||
// "message": "testing"
|
// "message": "testing"
|
||||||
@ -389,10 +420,16 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket
|
|||||||
jsonObject.put("type", "0");
|
jsonObject.put("type", "0");
|
||||||
jsonObject.put("message", message);
|
jsonObject.put("message", message);
|
||||||
|
|
||||||
//生成系统消息的聊天记录
|
//初始化变量
|
||||||
LambdaQueryWrapper<ChatGroup> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ChatGroup> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
ChatGroup groupServiceOne;
|
||||||
|
|
||||||
|
switch (value){
|
||||||
|
//1:系统消息
|
||||||
|
case "0" ->{
|
||||||
|
//生成系统消息的聊天记录
|
||||||
lambdaQueryWrapper.eq(ChatGroup::getMembers,"[99, "+userId+"]");
|
lambdaQueryWrapper.eq(ChatGroup::getMembers,"[99, "+userId+"]");
|
||||||
ChatGroup groupServiceOne = chatGroupService.getOne(lambdaQueryWrapper);
|
groupServiceOne = chatGroupService.getOne(lambdaQueryWrapper);
|
||||||
//如果给成员发送系统消息 而该成员还没有建立过连接从而没有群聊房间 则创建该成员系统消息房间
|
//如果给成员发送系统消息 而该成员还没有建立过连接从而没有群聊房间 则创建该成员系统消息房间
|
||||||
if (groupServiceOne == null){
|
if (groupServiceOne == null){
|
||||||
groupServiceOne = new ChatGroup();
|
groupServiceOne = new ChatGroup();
|
||||||
@ -414,6 +451,94 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket
|
|||||||
chatHistory.setMessageDate(new Date());
|
chatHistory.setMessageDate(new Date());
|
||||||
chatHistory.setIsRead("1");//未读
|
chatHistory.setIsRead("1");//未读
|
||||||
chatHistoryService.save(chatHistory);
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//发送消息后 将该房间未读消息数加1
|
//发送消息后 将该房间未读消息数加1
|
||||||
@ -431,6 +556,15 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket
|
|||||||
//给每个通道发送对应消息
|
//给每个通道发送对应消息
|
||||||
for (ChannelHandlerContext handlerContext : channelHandlerContexts) {
|
for (ChannelHandlerContext handlerContext : channelHandlerContexts) {
|
||||||
//同时发送所有未读消息给前端进行渲染
|
//同时发送所有未读消息给前端进行渲染
|
||||||
|
setValue(userId, jsonObject);
|
||||||
|
sendMessage(handlerContext, jsonObject.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//设置未读消息数
|
||||||
|
private void setValue(Long userId, JSONObject jsonObject) {
|
||||||
HashMap<String,Object> temp = new HashMap<>();
|
HashMap<String,Object> temp = new HashMap<>();
|
||||||
userRoomCountMap.forEachKey(0, (value) -> {
|
userRoomCountMap.forEachKey(0, (value) -> {
|
||||||
if (value.contains(userId.toString())){
|
if (value.contains(userId.toString())){
|
||||||
@ -438,10 +572,6 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
jsonObject.put("unReadCount", temp);
|
jsonObject.put("unReadCount", temp);
|
||||||
sendMessage(handlerContext, jsonObject.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user