09-12-netty优化
This commit is contained in:
		| @ -155,7 +155,9 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket | |||||||
|                 message.put("type", "3"); |                 message.put("type", "3"); | ||||||
|                 message.put("unReadCount", roomCounts); |                 message.put("unReadCount", roomCounts); | ||||||
|                 log.info("发送所有未读消息:{}",message); |                 log.info("发送所有未读消息:{}",message); | ||||||
|                 sendMessage(ctx, message.toJSONString()); |                 if(!roomCounts.isEmpty()) { | ||||||
|  |                     sendMessage(ctx, message.toJSONString()); | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|             //认证完成后开始构建系统消息房间   判断是否有系统消息房间 没有则增加 |             //认证完成后开始构建系统消息房间   判断是否有系统消息房间 没有则增加 | ||||||
|             if (!isHaveSystemRoom){ |             if (!isHaveSystemRoom){ | ||||||
| @ -277,7 +279,7 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket | |||||||
|                                 temp.put(value,userRoomCountMap.get(value)); |                                 temp.put(value,userRoomCountMap.get(value)); | ||||||
|                             } |                             } | ||||||
|                         }); |                         }); | ||||||
|                         jsonObject.put("unReadCount", JsonUtils.toJsonString(temp)); |                         jsonObject.put("unReadCount", temp); | ||||||
|                         //给每个通道发送对应消息 |                         //给每个通道发送对应消息 | ||||||
|                         for (ChannelHandlerContext handlerContext : channelHandlerContexts) { |                         for (ChannelHandlerContext handlerContext : channelHandlerContexts) { | ||||||
|                             sendMessage(handlerContext, jsonObject.toString()); |                             sendMessage(handlerContext, jsonObject.toString()); | ||||||
|  | |||||||
| @ -4,7 +4,10 @@ package org.dromara.websocket.controller; | |||||||
| import cn.dev33.satoken.annotation.SaCheckPermission; | import cn.dev33.satoken.annotation.SaCheckPermission; | ||||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
| 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.bo.SysUserBo; | ||||||
| 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.ChatFriendship; | import org.dromara.websocket.domain.ChatFriendship; | ||||||
| @ -129,17 +132,18 @@ public class ChatFriendshipController { | |||||||
|      */ |      */ | ||||||
| //    @SaCheckPermission("chatGroup:chatFriendship:getList") | //    @SaCheckPermission("chatGroup:chatFriendship:getList") | ||||||
|     @GetMapping("/getList") |     @GetMapping("/getList") | ||||||
|     public R<List<SysUserVo>> getList(){ |     public TableDataInfo<SysUserVo> getList(SysUserBo bo, PageQuery pageQuery){ | ||||||
|         Long userId = LoginHelper.getLoginUser().getUserId(); | //        Long userId = LoginHelper.getLoginUser().getUserId(); | ||||||
|         LambdaQueryWrapper<ChatFriendship> lambdaQueryWrapper = new LambdaQueryWrapper<>(); | //        LambdaQueryWrapper<ChatFriendship> lambdaQueryWrapper = new LambdaQueryWrapper<>(); | ||||||
|         lambdaQueryWrapper.eq(ChatFriendship::getOurSide,userId); | //        lambdaQueryWrapper.eq(ChatFriendship::getOurSide, userId); | ||||||
|         List<ChatFriendship> list = chatFriendshipService.list(lambdaQueryWrapper); | //        List<ChatFriendship> list = chatFriendshipService.list(lambdaQueryWrapper); | ||||||
|  | // | ||||||
|         List<SysUserVo> sysUserVos = new ArrayList<>(); | //        List<SysUserVo> sysUserVos = new ArrayList<>(); | ||||||
|         for (ChatFriendship chatFriendship : list) { | //        for (ChatFriendship chatFriendship : list) { | ||||||
|             sysUserVos.add(sysUserService.selectUserById(chatFriendship.getOtherSide())); | //            sysUserVos.add(sysUserService.selectUserById(chatFriendship.getOtherSide())); | ||||||
|         } | //        } | ||||||
|         return R.ok(sysUserVos); | //        return R.ok(sysUserVos); | ||||||
|  |         return chatFriendshipService.getAppUserList(bo,pageQuery); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,11 +1,92 @@ | |||||||
| package org.dromara.websocket.service.Impl; | package org.dromara.websocket.service.Impl; | ||||||
|  |  | ||||||
|  | import cn.hutool.core.collection.CollUtil; | ||||||
|  | import cn.hutool.core.convert.Convert; | ||||||
|  | import cn.hutool.core.util.ObjectUtil; | ||||||
|  | import com.baomidou.mybatisplus.core.conditions.Wrapper; | ||||||
|  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||||||
|  | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||||
|  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||||
|  | import jakarta.annotation.Resource; | ||||||
|  | import org.dromara.common.core.constant.SystemConstants; | ||||||
|  | import org.dromara.common.core.utils.StreamUtils; | ||||||
|  | import org.dromara.common.core.utils.StringUtils; | ||||||
|  | import org.dromara.common.mybatis.core.page.PageQuery; | ||||||
|  | import org.dromara.common.mybatis.core.page.TableDataInfo; | ||||||
|  | import org.dromara.system.domain.SysDept; | ||||||
|  | import org.dromara.system.domain.SysUser; | ||||||
|  | import org.dromara.system.domain.SysUserFile; | ||||||
|  | import org.dromara.system.domain.bo.SysUserBo; | ||||||
|  | import org.dromara.system.domain.vo.SysUserVo; | ||||||
|  | import org.dromara.system.mapper.SysDeptMapper; | ||||||
|  | import org.dromara.system.mapper.SysUserMapper; | ||||||
|  | import org.dromara.system.service.ISysUserFileService; | ||||||
|  | import org.dromara.system.service.impl.SysUserServiceImpl; | ||||||
| import org.dromara.websocket.domain.ChatFriendship; | import org.dromara.websocket.domain.ChatFriendship; | ||||||
| import org.dromara.websocket.mapper.ChatFriendshipMapper; | import org.dromara.websocket.mapper.ChatFriendshipMapper; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
| @Service | @Service | ||||||
| public class ChatFriendshipServiceImpl extends ServiceImpl<ChatFriendshipMapper, ChatFriendship> { | public class ChatFriendshipServiceImpl extends ServiceImpl<ChatFriendshipMapper, ChatFriendship> { | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     private SysDeptMapper deptMapper; | ||||||
|  |     @Autowired | ||||||
|  |     private SysUserMapper sysUserMapper; | ||||||
|  |     @Autowired | ||||||
|  |     private ISysUserFileService userFileService; | ||||||
|  |  | ||||||
|  |     public TableDataInfo<SysUserVo> getAppUserList(SysUserBo user, PageQuery pageQuery){ | ||||||
|  |         Page<SysUserVo> page = sysUserMapper.selectPageUserList(pageQuery.build(), this.buildQueryWrapper(user)); | ||||||
|  |         List<SysUserVo> userVoList = page.getRecords(); | ||||||
|  |         List<Long> userIdList = userVoList.stream().map(SysUserVo::getUserId).toList(); | ||||||
|  |         if (CollUtil.isNotEmpty(userIdList)) { | ||||||
|  |             List<SysUserFile> userFileList = userFileService.lambdaQuery() | ||||||
|  |                 .in(SysUserFile::getUserId, userIdList) | ||||||
|  |                 .list(); | ||||||
|  |             Map<Long, List<SysUserFile>> userFileMap = userFileList.stream().collect(Collectors.groupingBy(SysUserFile::getUserId)); | ||||||
|  |             userVoList.forEach(userVo -> { | ||||||
|  |                 Long userId = userVo.getUserId(); | ||||||
|  |                 if (userFileMap.containsKey(userId)) { | ||||||
|  |                     List<SysUserFile> fileList = userFileMap.get(userId); | ||||||
|  |                     String fileIdStr = fileList.stream() | ||||||
|  |                         .map(file -> String.valueOf(file.getFileId())) | ||||||
|  |                         .collect(Collectors.joining(",")); | ||||||
|  |                     userVo.setFilePath(fileIdStr); | ||||||
|  |                 } | ||||||
|  |             }); | ||||||
|  |             page.setRecords(userVoList); | ||||||
|  |         } | ||||||
|  |         return TableDataInfo.build(page); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     private Wrapper<SysUser> buildQueryWrapper(SysUserBo user) { | ||||||
|  |         Map<String, Object> params = user.getParams(); | ||||||
|  |         QueryWrapper<SysUser> wrapper = Wrappers.query(); | ||||||
|  |         wrapper.eq("u.del_flag", SystemConstants.NORMAL) | ||||||
|  |             .eq(ObjectUtil.isNotNull(user.getUserId()), "u.user_id", user.getUserId()) | ||||||
|  |             .like(StringUtils.isNotBlank(user.getNickName()), "u.nick_name", user.getNickName()) | ||||||
|  |             .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName()) | ||||||
|  |             .eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus()) | ||||||
|  |             .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber()) | ||||||
|  |             .between(params.get("beginTime") != null && params.get("endTime") != null, "u.create_time", params.get("beginTime"), params.get("endTime")) | ||||||
|  |             .eq(ObjectUtil.isNotNull(user.getDeptId()),"u.dept_id", user.getDeptId()) | ||||||
|  |             .orderByAsc("u.user_id"); | ||||||
|  |         if (StringUtils.isNotBlank(user.getExcludeUserIds())) { | ||||||
|  |             wrapper.notIn("u.user_id", StringUtils.splitTo(user.getExcludeUserIds(), Convert::toLong)); | ||||||
|  |         } | ||||||
|  |         return wrapper; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user