09-10-netty优化
This commit is contained in:
@ -143,6 +143,8 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket
|
|||||||
List<ChatHistory> list = chatHistoryService.list(historyLambdaQueryWrapper);
|
List<ChatHistory> list = chatHistoryService.list(historyLambdaQueryWrapper);
|
||||||
if (list != null && !list.isEmpty()) {
|
if (list != null && !list.isEmpty()) {
|
||||||
roomCounts.put(loginUser.getUserId()+"+"+chatGroup.getId().toString(), list.size());
|
roomCounts.put(loginUser.getUserId()+"+"+chatGroup.getId().toString(), list.size());
|
||||||
|
//连接后同步未读消息到内存中
|
||||||
|
userRoomCountMap.put(loginUser.getUserId()+"+"+chatGroup.getId().toString(), list.size());
|
||||||
}
|
}
|
||||||
//在遍历的同时寻找是否有系统消息房间
|
//在遍历的同时寻找是否有系统消息房间
|
||||||
if (chatGroup.getMembers().contains("[99")){
|
if (chatGroup.getMembers().contains("[99")){
|
||||||
@ -371,8 +373,8 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket
|
|||||||
chatGroupService.save(groupServiceOne);
|
chatGroupService.save(groupServiceOne);
|
||||||
}
|
}
|
||||||
ChatHistory chatHistory = new ChatHistory();
|
ChatHistory chatHistory = new ChatHistory();
|
||||||
//发送方设置为0 表示系统消息
|
//发送方设置为99 表示系统消息
|
||||||
chatHistory.setSenderId(0L);
|
chatHistory.setSenderId(99L);
|
||||||
chatHistory.setGeterId(groupServiceOne.getId());
|
chatHistory.setGeterId(groupServiceOne.getId());
|
||||||
chatHistory.setMessage(message);
|
chatHistory.setMessage(message);
|
||||||
chatHistory.setMessageDate(new Date());
|
chatHistory.setMessageDate(new Date());
|
||||||
|
@ -3,12 +3,16 @@ package org.dromara.websocket.controller;
|
|||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
import org.dromara.system.domain.vo.SysUserVo;
|
import org.dromara.system.domain.vo.SysUserVo;
|
||||||
import org.dromara.system.service.impl.SysUserServiceImpl;
|
import org.dromara.system.service.impl.SysUserServiceImpl;
|
||||||
import org.dromara.websocket.domain.ChatGroup;
|
import org.dromara.websocket.domain.ChatGroup;
|
||||||
import org.dromara.websocket.domain.ChatHistory;
|
import org.dromara.websocket.domain.ChatHistory;
|
||||||
|
import org.dromara.websocket.domain.vo.ChatHistoryVo;
|
||||||
import org.dromara.websocket.service.Impl.ChatGroupServiceImpl;
|
import org.dromara.websocket.service.Impl.ChatGroupServiceImpl;
|
||||||
import org.dromara.websocket.service.Impl.ChatHistoryServiceImpl;
|
import org.dromara.websocket.service.Impl.ChatHistoryServiceImpl;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -42,7 +46,7 @@ public class ChatGroupController {
|
|||||||
List<Long> idList = new ArrayList<>(Arrays.asList(ids));
|
List<Long> idList = new ArrayList<>(Arrays.asList(ids));
|
||||||
idList.add(userId);
|
idList.add(userId);
|
||||||
|
|
||||||
//在点击聊天 新建房间之前 判断是否已经有该房间 没有则创建 有再判断是否是隐藏 修改状态更新
|
//在点击聊天 新建房间之前 判断是否已经有该房间 没有则创建
|
||||||
boolean isHave = false;
|
boolean isHave = false;
|
||||||
LambdaQueryWrapper<ChatGroup> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ChatGroup> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
if (type.equals("0")){
|
if (type.equals("0")){
|
||||||
@ -66,6 +70,7 @@ public class ChatGroupController {
|
|||||||
|
|
||||||
ChatGroup chatGroup = new ChatGroup();
|
ChatGroup chatGroup = new ChatGroup();
|
||||||
chatGroup.setMembers(idList.toString());
|
chatGroup.setMembers(idList.toString());
|
||||||
|
chatGroup.setType(type);
|
||||||
if (type.equals("1")){
|
if (type.equals("1")){
|
||||||
if (name == null){
|
if (name == null){
|
||||||
return R.fail("群聊名称不能为空");
|
return R.fail("群聊名称不能为空");
|
||||||
@ -124,19 +129,20 @@ public class ChatGroupController {
|
|||||||
*/
|
*/
|
||||||
// @SaCheckPermission("chatGroup:list:getHistory")
|
// @SaCheckPermission("chatGroup:list:getHistory")
|
||||||
@GetMapping("/groupChatRecord")
|
@GetMapping("/groupChatRecord")
|
||||||
public R<List<ChatHistory>> groupChatRecord(@RequestParam Long id) {
|
public TableDataInfo<ChatHistoryVo> groupChatRecord(@RequestParam Long id, PageQuery pageQuery) {
|
||||||
LambdaQueryWrapper<ChatHistory> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<ChatHistory> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
// lambdaQueryWrapper.eq(ChatHistory::getGroupId,id).eq(ChatHistory::getType,"1");
|
// lambdaQueryWrapper.eq(ChatHistory::getGroupId,id).eq(ChatHistory::getType,"1");
|
||||||
lambdaQueryWrapper.eq(ChatHistory::getGeterId, id);
|
lambdaQueryWrapper.eq(ChatHistory::getGeterId, id);
|
||||||
List<ChatHistory> list = chatHistoryService.list(lambdaQueryWrapper);
|
IPage<ChatHistoryVo> chatHistoryVoIPage = chatHistoryService.getBaseMapper().selectVoPage(pageQuery.build(), lambdaQueryWrapper);
|
||||||
for (ChatHistory chatHistory : list) {
|
// List<ChatHistory> list = chatHistoryService.list(lambdaQueryWrapper);
|
||||||
|
for (ChatHistoryVo chatHistory : chatHistoryVoIPage.getRecords()) {
|
||||||
SysUserVo sysUserVo = sysUserService.selectUserById(chatHistory.getSenderId());
|
SysUserVo sysUserVo = sysUserService.selectUserById(chatHistory.getSenderId());
|
||||||
if (sysUserVo != null){
|
if (sysUserVo != null){
|
||||||
chatHistory.setAvatar(sysUserVo.getAvatar());
|
chatHistory.setAvatar(sysUserVo.getAvatar());
|
||||||
chatHistory.setNickName(sysUserVo.getNickName());
|
chatHistory.setNickName(sysUserVo.getNickName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return R.ok(chatHistoryService.list(lambdaQueryWrapper));
|
return TableDataInfo.build(chatHistoryVoIPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -8,11 +8,12 @@ import org.dromara.common.translation.annotation.Translation;
|
|||||||
import org.dromara.common.translation.constant.TransConstant;
|
import org.dromara.common.translation.constant.TransConstant;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@TableName("chat_history")
|
@TableName("chat_history")
|
||||||
public class ChatHistory {
|
public class ChatHistory implements Serializable {
|
||||||
|
|
||||||
@Serial
|
@Serial
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
@ -0,0 +1,55 @@
|
|||||||
|
package org.dromara.websocket.domain.vo;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.dromara.common.translation.annotation.Translation;
|
||||||
|
import org.dromara.common.translation.constant.TransConstant;
|
||||||
|
import org.dromara.tender.domain.BusBiddingPlanAnnex;
|
||||||
|
import org.dromara.websocket.domain.ChatHistory;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
@AutoMapper(target = ChatHistory.class)
|
||||||
|
public class ChatHistoryVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@TableId(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
private Long senderId;
|
||||||
|
|
||||||
|
/***
|
||||||
|
* 接收房间id
|
||||||
|
*/
|
||||||
|
private Long geterId;
|
||||||
|
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
private Date messageDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送人头像
|
||||||
|
*/
|
||||||
|
@Translation(type = TransConstant.OSS_ID_TO_URL)
|
||||||
|
private Long avatar;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送人昵称
|
||||||
|
*/
|
||||||
|
private String nickName;
|
||||||
|
|
||||||
|
/***
|
||||||
|
* 0读1未
|
||||||
|
*/
|
||||||
|
private String isRead;
|
||||||
|
|
||||||
|
}
|
@ -2,8 +2,10 @@ package org.dromara.websocket.mapper;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
import org.dromara.websocket.domain.ChatHistory;
|
import org.dromara.websocket.domain.ChatHistory;
|
||||||
|
import org.dromara.websocket.domain.vo.ChatHistoryVo;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface ChatHistoryMapper extends BaseMapper<ChatHistory> {
|
public interface ChatHistoryMapper extends BaseMapperPlus<ChatHistory, ChatHistoryVo> {
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user