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