中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

做網(wǎng)站帶阿里云服務(wù)器多少錢網(wǎng)站關(guān)鍵詞排名優(yōu)化價格

做網(wǎng)站帶阿里云服務(wù)器多少錢,網(wǎng)站關(guān)鍵詞排名優(yōu)化價格,商城網(wǎng)站方案,涪陵網(wǎng)站制作前言 緊接著上文《SpringBootWebSocket實現(xiàn)即時通訊(二)》 本博客姊妹篇 SpringBootWebSocket實現(xiàn)即時通訊(一)SpringBootWebSocket實現(xiàn)即時通訊(二)SpringBootWebSocket實現(xiàn)即時通訊(三&…

前言

緊接著上文《SpringBoot+WebSocket實現(xiàn)即時通訊(二)》

本博客姊妹篇

  • SpringBoot+WebSocket實現(xiàn)即時通訊(一)
  • SpringBoot+WebSocket實現(xiàn)即時通訊(二)
  • SpringBoot+WebSocket實現(xiàn)即時通訊(三)
  • SpringBoot+WebSocket實現(xiàn)即時通訊(四)

一、功能描述

  • 用戶管理:業(yè)務(wù)自己實現(xiàn),暫從數(shù)據(jù)庫添加
  • 好友管理:添加好友、刪除好友、修改備注、好友列表等
  • 群組管理:新建群、解散群、編輯群、變更群主、拉人進群、踢出群等
  • 聊天模式:私聊、群聊
  • 消息類型:系統(tǒng)、文本、語音、圖片、視頻
  • 聊天管理:刪除聊天、置頂聊天、查看聊天記錄等

二、好友、群組功能實現(xiàn)

2.1 好友

mapper

package com.qiangesoft.im.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qiangesoft.im.entity.ImFriend;/*** <p>* 好友 Mapper 接口* </p>** @author qiangesoft* @date 2024-02-07*/
public interface ImFriendMapper extends BaseMapper<ImFriend> {}

service

package com.qiangesoft.im.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.qiangesoft.im.entity.ImFriend;
import com.qiangesoft.im.pojo.dto.ImFriendDTO;
import com.qiangesoft.im.pojo.vo.ImFriendVO;import java.util.List;/*** <p>* 好友 服務(wù)類* </p>** @author qiangesoft* @date 2024-02-07*/
public interface IImFriendService extends IService<ImFriend> {/*** 添加好友** @param friendDTO*/void addFriend(ImFriendDTO friendDTO);/*** 刪除好友** @param id*/void removeFriend(Long id);/*** 編輯好友信息** @param id* @param friendDTO*/void updateFriend(Long id, ImFriendDTO friendDTO);/*** 好友列表** @param keyword* @return*/List<ImFriendVO> listFriend(String keyword);/*** 好友詳情** @param id* @return*/ImFriendVO getFriendInfo(Long id);
}
package com.qiangesoft.im.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qiangesoft.im.auth.UserUtil;
import com.qiangesoft.im.entity.ImFriend;
import com.qiangesoft.im.exception.ServiceException;
import com.qiangesoft.im.mapper.ImFriendMapper;
import com.qiangesoft.im.pojo.dto.ImFriendDTO;
import com.qiangesoft.im.pojo.vo.ImFriendVO;
import com.qiangesoft.im.pojo.vo.SysUserVo;
import com.qiangesoft.im.service.IImFriendService;
import com.qiangesoft.im.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;/*** <p>* 好友 服務(wù)實現(xiàn)類* </p>** @author qiangesoft* @date 2024-02-07*/
@RequiredArgsConstructor
@Service
public class ImFriendServiceImpl extends ServiceImpl<ImFriendMapper, ImFriend> implements IImFriendService {private final ISysUserService sysUserService;@Transactional(rollbackFor = RuntimeException.class)@Overridepublic void addFriend(ImFriendDTO friendDTO) {Long userId = UserUtil.getUserId();Long friendUserId = friendDTO.getFriendUserId();if (userId.equals(friendUserId)) {throw new ServiceException("不能添加自己!");}LambdaQueryWrapper<ImFriend> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(ImFriend::getUserId, userId).eq(ImFriend::getFriendUserId, friendUserId).eq(ImFriend::getDelFlag, false);Long count = baseMapper.selectCount(queryWrapper);if (count > 0) {throw new ServiceException("已添加過好友!");}ImFriend friend = new ImFriend();friend.setUserId(userId);friend.setFriendUserId(friendDTO.getFriendUserId());friend.setRemark(friendDTO.getRemark());friend.setDelFlag(false);baseMapper.insert(friend);}@Overridepublic void removeFriend(Long id) {LambdaUpdateWrapper<ImFriend> updateWrapper = new LambdaUpdateWrapper<>();updateWrapper.eq(ImFriend::getId, id).set(ImFriend::getDelFlag, true);baseMapper.update(null, updateWrapper);}@Overridepublic void updateFriend(Long id, ImFriendDTO friendDTO) {LambdaUpdateWrapper<ImFriend> updateWrapper = new LambdaUpdateWrapper<>();updateWrapper.eq(ImFriend::getId, id).set(ImFriend::getRemark, friendDTO.getRemark());baseMapper.update(null, updateWrapper);}@Overridepublic List<ImFriendVO> listFriend(String keyword) {LambdaQueryWrapper<ImFriend> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.like(StringUtils.isNotBlank(keyword), ImFriend::getRemark, keyword).eq(ImFriend::getDelFlag, false);List<ImFriend> friendList = baseMapper.selectList(queryWrapper);List<ImFriendVO> friendVOList = new ArrayList<>();if (CollectionUtils.isEmpty(friendList)) {return friendVOList;}List<Long> userIdList = friendList.stream().map(ImFriend::getFriendUserId).collect(Collectors.toList());Map<Long, SysUserVo> sysUserVoMap = sysUserService.listByIds(userIdList).stream().map(SysUserVo::fromEntity).collect(Collectors.toMap(SysUserVo::getId, sysUserVo -> sysUserVo));for (ImFriend friend : friendList) {ImFriendVO friendVO = new ImFriendVO();friendVO.setId(friend.getId());friendVO.setFriendUser(sysUserVoMap.get(friend.getFriendUserId()));friendVO.setRemark(friend.getRemark());friendVOList.add(friendVO);}return friendVOList;}@Overridepublic ImFriendVO getFriendInfo(Long id) {LambdaQueryWrapper<ImFriend> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(ImFriend::getId, id).eq(ImFriend::getDelFlag, false);ImFriend friend = baseMapper.selectOne(queryWrapper);if (friend == null) {throw new ServiceException("未添加為好友!");}SysUserVo sysUserVo = SysUserVo.fromEntity(sysUserService.getById(friend.getFriendUserId()));ImFriendVO friendVO = new ImFriendVO();friendVO.setId(friend.getId());friendVO.setFriendUser(sysUserVo);friendVO.setRemark(friend.getRemark());return friendVO;}
}

controller

package com.qiangesoft.im.controller;import com.qiangesoft.im.pojo.dto.ImFriendDTO;
import com.qiangesoft.im.pojo.vo.ImFriendVO;
import com.qiangesoft.im.pojo.vo.ResultInfo;
import com.qiangesoft.im.service.IImFriendService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;import java.util.List;/*** <p>* 好友 前端控制器* </p>** @author qiangesoft* @date 2024-02-07*/
@Api(tags = "好友")
@RequiredArgsConstructor
@RestController
@RequestMapping("/im/friend")
public class ImFriendController {private final IImFriendService friendService;@PostMapping@ApiOperation(value = "添加好友")public ResultInfo<Void> addFriend(@RequestBody ImFriendDTO friendDTO) {friendService.addFriend(friendDTO);return ResultInfo.ok();}@DeleteMapping("/{id}")@ApiOperation(value = "刪除好友")public ResultInfo<Void> removeFriend(@PathVariable Long id) {friendService.removeFriend(id);return ResultInfo.ok();}@PutMapping("/{id}")@ApiOperation(value = "編輯好友")public ResultInfo<Void> updateFriend(@PathVariable Long id, @RequestBody ImFriendDTO friendDTO) {friendService.updateFriend(id, friendDTO);return ResultInfo.ok();}@GetMapping@ApiOperation(value = "好友列表")public ResultInfo<List<ImFriendVO>> listFriend(String keyword) {return ResultInfo.ok(friendService.listFriend(keyword));}@GetMapping("/{id}")@ApiOperation(value = "好友詳情")public ResultInfo<ImFriendVO> getFriendInfo(@PathVariable Long id) {return ResultInfo.ok(friendService.getFriendInfo(id));}}

2.2 群組

mapper

package com.qiangesoft.im.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qiangesoft.im.entity.ImGroup;/*** <p>* 群組 Mapper 接口* </p>** @author qiangesoft* @date 2024-02-07*/
public interface ImGroupMapper extends BaseMapper<ImGroup> {}
package com.qiangesoft.im.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qiangesoft.im.entity.ImGroupUser;/*** <p>* 群成員 Mapper 接口* </p>** @author qiangesoft* @date 2024-02-07*/
public interface ImGroupUserMapper extends BaseMapper<ImGroupUser> {}
package com.qiangesoft.im.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.qiangesoft.im.entity.ImGroup;
import com.qiangesoft.im.pojo.dto.ImGroupDTO;
import com.qiangesoft.im.pojo.dto.ImGroupMasterDTO;
import com.qiangesoft.im.pojo.vo.ImGroupInfoVO;
import com.qiangesoft.im.pojo.vo.ImGroupVO;import java.util.List;/*** <p>* 群組 服務(wù)類* </p>** @author qiangesoft* @date 2024-02-07*/
public interface IImGroupService extends IService<ImGroup> {/*** 建群** @param groupDTO*/void addGroup(ImGroupDTO groupDTO);/*** 解散群** @param id*/void removeGroup(Long id);/*** 編輯群** @param id* @param groupDTO*/void updateGroup(Long id, ImGroupDTO groupDTO);/*** 群列表** @param keyword* @return*/List<ImGroupVO> listGroup(String keyword);/*** 群詳情** @param id* @return*/ImGroupInfoVO getGroupInfo(Long id);/*** 變更群主** @param groupMasterDTO*/void updateMaster(ImGroupMasterDTO groupMasterDTO);/*** 校驗群組** @param id* @return*/ImGroup validateGroup(Long id);
}
package com.qiangesoft.im.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.qiangesoft.im.entity.ImGroupUser;
import com.qiangesoft.im.pojo.dto.ImGroupUserDTO;
import com.qiangesoft.im.pojo.vo.SysUserVo;import java.util.List;/*** <p>* 群成員 服務(wù)類* </p>** @author qiangesoft* @date 2024-02-07*/
public interface IImGroupUserService extends IService<ImGroupUser> {/*** 添加群成員** @param groupUserDTO*/void addGroupUser(ImGroupUserDTO groupUserDTO);/*** 刪除群成員** @param groupUserDTO*/void removeGroupUser(ImGroupUserDTO groupUserDTO);/*** 群成員列表** @param id* @return*/List<SysUserVo> listGroupUser(Long id);}
package com.qiangesoft.im.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qiangesoft.im.auth.UserUtil;
import com.qiangesoft.im.entity.ImGroup;
import com.qiangesoft.im.entity.ImGroupUser;
import com.qiangesoft.im.entity.SysUser;
import com.qiangesoft.im.exception.ServiceException;
import com.qiangesoft.im.mapper.ImGroupMapper;
import com.qiangesoft.im.pojo.dto.ImGroupDTO;
import com.qiangesoft.im.pojo.dto.ImGroupMasterDTO;
import com.qiangesoft.im.pojo.vo.ImGroupInfoVO;
import com.qiangesoft.im.pojo.vo.ImGroupVO;
import com.qiangesoft.im.pojo.vo.SysUserVo;
import com.qiangesoft.im.service.IImGroupService;
import com.qiangesoft.im.service.IImGroupUserService;
import com.qiangesoft.im.service.ISysUserService;
import com.qiangesoft.im.util.IdSplitUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;/*** <p>* 群組 服務(wù)實現(xiàn)類* </p>** @author qiangesoft* @date 2024-02-07*/
@Service
public class ImGroupServiceImpl extends ServiceImpl<ImGroupMapper, ImGroup> implements IImGroupService {@Autowiredprivate IImGroupUserService groupUserService;@Autowiredprivate ISysUserService sysUserService;@Transactional(rollbackFor = RuntimeException.class)@Overridepublic void addGroup(ImGroupDTO groupDTO) {Long userId = UserUtil.getUserId();ImGroup group = new ImGroup();group.setName(groupDTO.getName());group.setAvatar(groupDTO.getAvatar());group.setMaster(userId);group.setManager(IdSplitUtil.listToStr(groupDTO.getManager()));group.setNotice(groupDTO.getNotice());group.setRemark(groupDTO.getRemark());group.setDelFlag(false);baseMapper.insert(group);// 群成員List<ImGroupUser> groupUserList = new ArrayList<>();List<Long> memberIdList = groupDTO.getMemberIdList();if (!memberIdList.contains(userId)) {memberIdList.add(userId);}for (Long memberId : memberIdList) {ImGroupUser groupUser = new ImGroupUser();groupUser.setGroupId(group.getId());groupUser.setUserId(memberId);groupUser.setDelFlag(false);groupUserList.add(groupUser);}groupUserService.saveBatch(groupUserList);}@Overridepublic void removeGroup(Long id) {LambdaUpdateWrapper<ImGroup> updateWrapper = new LambdaUpdateWrapper<>();updateWrapper.eq(ImGroup::getId, id).set(ImGroup::getDelFlag, true);baseMapper.update(null, updateWrapper);}@Overridepublic void updateGroup(Long id, ImGroupDTO groupDTO) {ImGroup group = this.validateGroup(id);if (group.getDelFlag()) {throw new ServiceException("群組已解散!");}group.setName(groupDTO.getName());group.setAvatar(groupDTO.getAvatar());group.setManager(IdSplitUtil.listToStr(groupDTO.getManager()));group.setNotice(groupDTO.getNotice());group.setRemark(groupDTO.getRemark());baseMapper.updateById(group);}@Overridepublic List<ImGroupVO> listGroup(String keyword) {LambdaQueryWrapper<ImGroup> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.like(StringUtils.isNotBlank(keyword), ImGroup::getRemark, keyword).eq(ImGroup::getDelFlag, false);List<ImGroup> groupList = baseMapper.selectList(queryWrapper);List<ImGroupVO> groupVOList = new ArrayList<>();if (CollectionUtils.isEmpty(groupList)) {return groupVOList;}for (ImGroup group : groupList) {ImGroupVO groupVO = new ImGroupVO();groupVO.setId(group.getId());groupVO.setName(group.getName());groupVO.setAvatar(group.getAvatar());groupVO.setRemark(group.getRemark());groupVO.setCreateTime(group.getCreateTime().getTime());groupVOList.add(groupVO);}return groupVOList;}@Overridepublic ImGroupInfoVO getGroupInfo(Long id) {ImGroup group = this.validateGroup(id);ImGroupInfoVO vo = new ImGroupInfoVO();vo.setId(group.getId());vo.setName(group.getName());vo.setAvatar(group.getAvatar());vo.setNotice(group.getNotice());vo.setRemark(group.getRemark());vo.setCreateTime(group.getCreateTime().getTime());// 群主Long masterId = group.getMaster();if (masterId != null) {SysUser master = sysUserService.getById(masterId);if (master != null) {SysUserVo masterVo = SysUserVo.fromEntity(master);vo.setMaster(masterVo);}}// 群管理String manager = group.getManager();List<Long> managerIdList = IdSplitUtil.strToList(manager);if (!CollectionUtils.isEmpty(managerIdList)) {List<SysUserVo> managerUserList = sysUserService.listByIds(managerIdList).stream().map(SysUserVo::fromEntity).collect(Collectors.toList());vo.setManagerList(managerUserList);}// 群成員List<SysUserVo> userVoList = new ArrayList<>();LambdaQueryWrapper<ImGroupUser> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(ImGroupUser::getGroupId, id).eq(ImGroupUser::getDelFlag, false);List<ImGroupUser> groupUserList = groupUserService.list(queryWrapper);if (CollectionUtils.isEmpty(groupUserList)) {vo.setMemberList(userVoList);return vo;}List<Long> userIdList = groupUserList.stream().map(ImGroupUser::getUserId).collect(Collectors.toList());Map<Long, SysUserVo> sysUserVOMap = sysUserService.listByIds(userIdList).stream().map(SysUserVo::fromEntity).collect(Collectors.toMap(SysUserVo::getId, sysUserVo -> sysUserVo));for (ImGroupUser groupUser : groupUserList) {SysUserVo sysUserVo = sysUserVOMap.get(groupUser.getUserId());if (sysUserVo != null) {userVoList.add(sysUserVo);}}vo.setMemberList(userVoList);return vo;}@Overridepublic void updateMaster(ImGroupMasterDTO groupMasterDTO) {Long id = groupMasterDTO.getId();ImGroup group = this.validateGroup(id);if (group.getDelFlag()) {throw new ServiceException("群組已解散!");}LambdaUpdateWrapper<ImGroup> updateWrapper = new LambdaUpdateWrapper<>();updateWrapper.eq(ImGroup::getId, id).set(ImGroup::getMaster, groupMasterDTO.getMaster());baseMapper.update(null, updateWrapper);}@Overridepublic ImGroup validateGroup(Long id) {ImGroup group = baseMapper.selectById(id);if (group == null) {throw new ServiceException("群組不存在");}return group;}
}
package com.qiangesoft.im.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qiangesoft.im.auth.UserUtil;
import com.qiangesoft.im.entity.ImGroup;
import com.qiangesoft.im.entity.ImGroupUser;
import com.qiangesoft.im.exception.ServiceException;
import com.qiangesoft.im.mapper.ImGroupUserMapper;
import com.qiangesoft.im.pojo.dto.ImGroupUserDTO;
import com.qiangesoft.im.pojo.vo.SysUserVo;
import com.qiangesoft.im.service.IImGroupService;
import com.qiangesoft.im.service.IImGroupUserService;
import com.qiangesoft.im.service.ISysUserService;
import com.qiangesoft.im.util.IdSplitUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;/*** <p>* 群成員 服務(wù)實現(xiàn)類* </p>** @author qiangesoft* @date 2024-02-07*/
@Service
public class ImGroupUserServiceImpl extends ServiceImpl<ImGroupUserMapper, ImGroupUser> implements IImGroupUserService {@Autowiredprivate ISysUserService sysUserService;@Lazy@Autowiredprivate IImGroupService groupService;@Transactional(rollbackFor = RuntimeException.class)@Overridepublic void addGroupUser(ImGroupUserDTO groupUserDTO) {Long groupId = groupUserDTO.getGroupId();ImGroup group = groupService.validateGroup(groupId);if (group.getDelFlag()) {throw new ServiceException("群組已解散!");}Long userId = UserUtil.getUserId();List<Long> managerIdList = IdSplitUtil.strToList(group.getManager());if (group.getMaster().equals(userId)) {throw new ServiceException("無添加好友權(quán)限!");} else {if (!managerIdList.contains(userId)) {throw new ServiceException("無添加好友權(quán)限!");}}List<Long> memberIdList = groupUserDTO.getMemberIdList();if (memberIdList.contains(userId)) {throw new ServiceException("你是群主,不可添加!");}LambdaQueryWrapper<ImGroupUser> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(ImGroupUser::getGroupId, groupId).eq(ImGroupUser::getDelFlag, false);List<Long> existMemberIdList = baseMapper.selectList(queryWrapper).stream().map(ImGroupUser::getUserId).collect(Collectors.toList());List<Long> notExistMemberIdList = memberIdList.stream().filter(e -> !existMemberIdList.contains(e)).collect(Collectors.toList());List<ImGroupUser> groupUserList = new ArrayList<>();for (Long memberId : notExistMemberIdList) {ImGroupUser groupUser = new ImGroupUser();groupUser.setGroupId(groupId);groupUser.setUserId(memberId);groupUser.setDelFlag(false);groupUserList.add(groupUser);}this.saveBatch(groupUserList);}@Transactional(rollbackFor = RuntimeException.class)@Overridepublic void removeGroupUser(ImGroupUserDTO groupUserDTO) {Long groupId = groupUserDTO.getGroupId();ImGroup group = groupService.validateGroup(groupId);if (group.getDelFlag()) {throw new ServiceException("群組已解散!");}Long userId = UserUtil.getUserId();List<Long> managerIdList = IdSplitUtil.strToList(group.getManager());if (group.getMaster().equals(userId)) {throw new ServiceException("無移除好友權(quán)限!");} else {if (!managerIdList.contains(userId)) {throw new ServiceException("無移除好友權(quán)限!");}}List<Long> memberIdList = groupUserDTO.getMemberIdList();if (memberIdList.contains(userId)) {throw new ServiceException("不能移除自己!");}LambdaUpdateWrapper<ImGroupUser> updateWrapper = new LambdaUpdateWrapper<>();updateWrapper.eq(ImGroupUser::getGroupId, groupId).in(ImGroupUser::getUserId, memberIdList).set(ImGroupUser::getDelFlag, true);baseMapper.update(null, updateWrapper);// 去除管理員權(quán)限List<Long> collect = managerIdList.stream().filter(e -> !memberIdList.contains(e)).collect(Collectors.toList());LambdaUpdateWrapper<ImGroup> updateWrapper1 = new LambdaUpdateWrapper<>();updateWrapper1.eq(ImGroup::getId, groupId).set(ImGroup::getManager, IdSplitUtil.listToStr(collect));groupService.update(updateWrapper1);}@Overridepublic List<SysUserVo> listGroupUser(Long id) {groupService.validateGroup(id);List<SysUserVo> userVoList = new ArrayList<>();LambdaQueryWrapper<ImGroupUser> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(ImGroupUser::getGroupId, id).eq(ImGroupUser::getDelFlag, false);List<ImGroupUser> groupUserList = baseMapper.selectList(queryWrapper);if (CollectionUtils.isEmpty(groupUserList)) {return userVoList;}List<Long> userIdList = groupUserList.stream().map(ImGroupUser::getUserId).collect(Collectors.toList());Map<Long, SysUserVo> sysUserVOMap = sysUserService.listByIds(userIdList).stream().map(SysUserVo::fromEntity).collect(Collectors.toMap(SysUserVo::getId, sysUserVo -> sysUserVo));for (ImGroupUser groupUser : groupUserList) {SysUserVo sysUserVo = sysUserVOMap.get(groupUser.getUserId());if (sysUserVo != null) {userVoList.add(sysUserVo);}}return userVoList;}
}

controller

package com.qiangesoft.im.controller;import com.qiangesoft.im.pojo.dto.ImGroupDTO;
import com.qiangesoft.im.pojo.dto.ImGroupMasterDTO;
import com.qiangesoft.im.pojo.vo.ImGroupInfoVO;
import com.qiangesoft.im.pojo.vo.ImGroupVO;
import com.qiangesoft.im.pojo.vo.ResultInfo;
import com.qiangesoft.im.service.IImGroupService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;/*** <p>* 群組 前端控制器* </p>** @author qiangesoft* @date 2024-02-07*/
@Api(tags = "群組")
@RestController
@RequestMapping("/im/group")
public class ImGroupController {@Autowiredprivate IImGroupService groupService;@PostMapping@ApiOperation(value = "建群")public ResultInfo<Void> addGroup(@RequestBody ImGroupDTO groupDTO) {groupService.addGroup(groupDTO);return ResultInfo.ok();}@DeleteMapping("/{id}")@ApiOperation(value = "解散群")public ResultInfo<Void> removeGroup(@PathVariable Long id) {groupService.removeGroup(id);return ResultInfo.ok();}@PutMapping("/{id}")@ApiOperation(value = "編輯群")public ResultInfo<Void> updateGroup(@PathVariable Long id, @RequestBody ImGroupDTO groupDTO) {groupService.updateGroup(id, groupDTO);return ResultInfo.ok();}@GetMapping@ApiOperation(value = "群列表")public ResultInfo<List<ImGroupVO>> listGroup(String keyword) {return ResultInfo.ok(groupService.listGroup(keyword));}@GetMapping("/{id}")@ApiOperation(value = "群詳情")public ResultInfo<ImGroupInfoVO> getGroupInfo(@PathVariable Long id) {return ResultInfo.ok(groupService.getGroupInfo(id));}@GetMapping("/updateMaster")@ApiOperation(value = "變更群主")public ResultInfo<Void> updateMaster(@RequestBody ImGroupMasterDTO groupMasterDTO) {groupService.updateMaster(groupMasterDTO);return ResultInfo.ok();}
}
package com.qiangesoft.im.controller;import com.qiangesoft.im.pojo.dto.ImGroupUserDTO;
import com.qiangesoft.im.pojo.vo.ResultInfo;
import com.qiangesoft.im.pojo.vo.SysUserVo;
import com.qiangesoft.im.service.IImGroupUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;/*** <p>* 群成員 前端控制器* </p>** @author qiangesoft* @date 2024-02-07*/
@Api(tags = "群成員")
@RestController
@RequestMapping("/im/groupUser")
public class ImGroupUserController {@Autowiredprivate IImGroupUserService groupUserService;@PostMapping@ApiOperation(value = "添加群成員")public ResultInfo<Void> addGroupUser(@RequestBody ImGroupUserDTO groupUserDTO) {groupUserService.addGroupUser(groupUserDTO);return ResultInfo.ok();}@DeleteMapping@ApiOperation(value = "刪除群成員")public ResultInfo<Void> removeGroupUser(@RequestBody ImGroupUserDTO groupUserDTO) {groupUserService.removeGroupUser(groupUserDTO);return ResultInfo.ok();}@GetMapping("/{id}")@ApiOperation(value = "群成員列表")public ResultInfo<List<SysUserVo>> listGroupUser(@PathVariable Long id) {return ResultInfo.ok(groupUserService.listGroupUser(id));}}

三、源碼地址

源碼地址:https://gitee.com/qiangesoft/boot-business/tree/master/boot-business-im

后續(xù)內(nèi)容見下章

http://www.risenshineclean.com/news/52115.html

相關(guān)文章:

  • 幫助做ppt的網(wǎng)站上海aso優(yōu)化公司
  • 獨立電商網(wǎng)站開發(fā)廊坊推廣seo霸屏
  • 信用網(wǎng)站建設(shè)內(nèi)容近期重大新聞事件
  • 網(wǎng)站vr的建設(shè)百度引擎入口
  • 虎門做網(wǎng)站公司2020最成功的網(wǎng)絡(luò)營銷
  • 個人網(wǎng)站有哪些站營銷型網(wǎng)頁設(shè)計
  • 做網(wǎng)站發(fā)房源綜合語錄論文收錄網(wǎng)站有哪些
  • 做那個網(wǎng)站比較好sem優(yōu)化怎么做
  • 浦東新區(qū)建設(shè)和交通委員會網(wǎng)站百度快速排名優(yōu)化工具
  • 網(wǎng)站宣傳夸大處罰nba總得分排行榜最新
  • 機器ip后面加個端口做網(wǎng)站湖北百度關(guān)鍵詞排名軟件
  • 福州英文網(wǎng)站建設(shè)網(wǎng)絡(luò)公司網(wǎng)絡(luò)推廣服務(wù)
  • 江西省城鄉(xiāng)建設(shè)廳網(wǎng)站查詢證件廣州seo優(yōu)化公司排名
  • 做網(wǎng)站如何上傳apk電腦網(wǎng)絡(luò)優(yōu)化軟件
  • 凡科這樣的建站網(wǎng)站dw網(wǎng)頁設(shè)計模板網(wǎng)站
  • 如何更改wordpress登錄密碼錯誤學(xué)seo哪個培訓(xùn)好
  • wordpress論壇收費嗎網(wǎng)站優(yōu)化 秦皇島
  • 做正品的汽配網(wǎng)站360收錄提交入口網(wǎng)址
  • 上海集團網(wǎng)站建設(shè)價格seo公司關(guān)鍵詞
  • 個人建網(wǎng)站wordpress東莞疫情最新數(shù)據(jù)
  • 網(wǎng)站建設(shè)捌金手指花總八百度指數(shù)網(wǎng)站
  • 網(wǎng)站建設(shè)相關(guān)資料網(wǎng)站建設(shè)公司簡介
  • 網(wǎng)站建設(shè) 中企動力公司附近的成人電腦培訓(xùn)班
  • 山東公路建設(shè)集團網(wǎng)站seo sem
  • wordpress建站linuxseo手機關(guān)鍵詞網(wǎng)址
  • 做網(wǎng)站咋不用買虛擬機搜索引擎的優(yōu)化方法有哪些
  • 中國數(shù)據(jù)域名注冊重慶seo
  • 吉林網(wǎng)站優(yōu)化百度聯(lián)盟一天多少收入
  • 個人網(wǎng)站可以收費嗎快點tv下載安裝
  • 鎮(zhèn)江網(wǎng)站推廣優(yōu)化seo查詢官方網(wǎng)站