GroupsServiceImpl.java 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. package com.zhentao.groups.service.impl;
  2. import cn.hutool.core.util.IdUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.zhentao.groups.dto.AddGroupMembers;
  6. import com.zhentao.groups.dto.AddGroupsDto;
  7. import com.zhentao.groups.dto.DelGroupMembers;
  8. import com.zhentao.groups.mapper.GroupMembersMapper;
  9. import com.zhentao.groups.pojo.GroupMembers;
  10. import com.zhentao.groups.pojo.Groupss;
  11. import com.zhentao.groups.service.GroupMembersService;
  12. import com.zhentao.groups.service.GroupsService;
  13. import com.zhentao.groups.mapper.GroupsMapper;
  14. import com.zhentao.shouye.domain.UserShouye;
  15. import com.zhentao.shouye.mapper.UserShouyeMapper;
  16. import com.zhentao.shouye.service.UserShouyeService;
  17. import com.zhentao.vo.Result;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.data.redis.core.RedisTemplate;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.transaction.annotation.Propagation;
  22. import org.springframework.transaction.annotation.Transactional;
  23. import java.util.ArrayList;
  24. import java.util.Date;
  25. import java.util.List;
  26. /**
  27. * @author lzy
  28. * @description 针对表【groups(群组表)】的数据库操作Service实现
  29. * @createDate 2025-06-04 16:00:48
  30. */
  31. @Service
  32. public class GroupsServiceImpl extends ServiceImpl<GroupsMapper, Groupss>
  33. implements GroupsService{
  34. @Autowired
  35. private GroupMembersMapper groupMembersMapper;
  36. @Autowired
  37. private RedisTemplate<String,String> redisTemplate;
  38. @Autowired
  39. private UserShouyeMapper userShouyeMapper;
  40. // 创建群
  41. @Override
  42. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, timeout = 30)
  43. public Result addGroup(AddGroupsDto addGroupsDto) {
  44. Groupss groups=new Groupss();
  45. groups.setGroupId(IdUtil.getSnowflake().nextId());
  46. groups.setName(addGroupsDto.getName());
  47. groups.setCreatorId(addGroupsDto.getCreatorId());
  48. groups.setAvatar(addGroupsDto.getAvatar());
  49. groups.setAnnouncement(addGroupsDto.getAnnouncement());
  50. groups.setDescription(addGroupsDto.getDescription());
  51. groups.setMaxMembers(200);
  52. groups.setStatus(1);
  53. groups.setCreatedAt(new Date());
  54. groups.setUpdatedAt(new Date());
  55. int insert1 = this.baseMapper.insert(groups);
  56. GroupMembers groupMembers=new GroupMembers();
  57. groupMembers.setId(IdUtil.getSnowflake().nextId());
  58. groupMembers.setGroupId(groups.getGroupId());
  59. groupMembers.setUserId(groups.getCreatorId());
  60. groupMembers.setNickname(groups.getName());
  61. groupMembers.setRole(2);
  62. groupMembers.setJoinTime(new Date());
  63. int insert = groupMembersMapper.insert(groupMembers);
  64. UserShouye userShouye=new UserShouye();
  65. userShouye.setId(IdUtil.getSnowflake().nextId());
  66. userShouye.setUid1(addGroupsDto.getCreatorId());
  67. userShouye.setUid2(null);
  68. userShouye.setGid(groups.getGroupId());
  69. userShouye.setStatus(0);
  70. userShouye.setSort(null);
  71. int insert2 = userShouyeMapper.insert(userShouye);
  72. if (insert1!=0 && insert!=0 && insert2!=0){
  73. return Result.OK(null,"创建成功");
  74. }
  75. return Result.ERR(null,"创建失败");
  76. }
  77. @Autowired
  78. private GroupMembersService groupMembersService;
  79. @Autowired
  80. private UserShouyeService userShouyeService;
  81. @Autowired
  82. private GroupsMapper groupsMapper;
  83. // 添加人数
  84. @Override
  85. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, timeout = 30)
  86. public Result AddGroupMembers(AddGroupMembers addGroupMembers) {
  87. List<GroupMembers> data = new ArrayList<>();
  88. Groupss groupss = groupsMapper.selectById(addGroupMembers.getGroupId());
  89. System.err.println(groupss);
  90. List<UserShouye> userShouyes =new ArrayList<>();
  91. List<GroupMembers> list = groupMembersMapper.selectList(new LambdaQueryWrapper<GroupMembers>().eq(GroupMembers::getGroupId, addGroupMembers.getGroupId()));
  92. if (list.size()!=0){
  93. if (groupss.getMaxMembers()>list.size()){
  94. System.err.println(addGroupMembers.getUserId());
  95. for (Long groupMembers:addGroupMembers.getUserId()){
  96. GroupMembers groupMembers1=new GroupMembers();
  97. groupMembers1.setId(IdUtil.getSnowflake().nextId());
  98. groupMembers1.setGroupId(groupss.getGroupId());
  99. groupMembers1.setUserId(groupMembers);
  100. groupMembers1.setNickname(groupss.getName());
  101. groupMembers1.setRole(0);
  102. groupMembers1.setJoinTime(new Date());
  103. data.add(groupMembers1);
  104. UserShouye userShouye=new UserShouye();
  105. userShouye.setId(IdUtil.getSnowflake().nextId());
  106. userShouye.setUid1(groupMembers);
  107. userShouye.setUid2(null);
  108. userShouye.setGid(groupss.getGroupId());
  109. userShouye.setStatus(0);
  110. userShouye.setSort(null);
  111. userShouyes.add(userShouye);
  112. }
  113. boolean b1 = groupMembersService.saveBatch(data);
  114. boolean b = userShouyeService.saveBatch(userShouyes);
  115. if (b1!=false && b!=false){
  116. return Result.OK(null,"添加成功");
  117. }
  118. }else {
  119. return Result.ERR(null,"群已满");
  120. }
  121. }else {
  122. return Result.ERR(null,"群已不存在");
  123. }
  124. return Result.ERR(null,"添加失败");
  125. }
  126. // 踢人
  127. @Override
  128. @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, timeout = 30)
  129. public Result DelGroupMembers(DelGroupMembers delGroupMembers) {
  130. System.err.println(delGroupMembers);
  131. // 用户
  132. GroupMembers groupMembers = groupMembersMapper.selectOne(new LambdaQueryWrapper<GroupMembers>().eq(GroupMembers::getGroupId, delGroupMembers.getGroupssId()).eq(GroupMembers::getUserId, delGroupMembers.getUId()));
  133. // 被踢掉的人
  134. GroupMembers groupMembers2 = groupMembersMapper.selectOne(new LambdaQueryWrapper<GroupMembers>().eq(GroupMembers::getUserId, delGroupMembers.getUserId()).eq(GroupMembers::getGroupId, delGroupMembers.getGroupssId()));
  135. System.err.println(groupMembers2);
  136. UserShouye userShouye = userShouyeMapper.selectOne(new LambdaQueryWrapper<UserShouye>().eq(UserShouye::getUid1, delGroupMembers.getUserId()).eq(UserShouye::getGid, delGroupMembers.getGroupssId()));
  137. System.err.println(userShouye);
  138. if (groupMembers2!=null && groupMembers!=null){
  139. // 首页展示userShouye表中数据
  140. if (groupMembers.getRole()==2){
  141. if (groupMembers2.getRole()==2){
  142. return Result.ERR(null,"群主不能踢自己");
  143. }
  144. groupMembersMapper.deleteById(groupMembers2);
  145. userShouyeMapper.deleteById(userShouye);
  146. return Result.OK(null,"删除成功");
  147. }else if (groupMembers.getRole()==1){
  148. if (groupMembers2.getRole()==0){
  149. groupMembersMapper.deleteById(groupMembers2);
  150. userShouyeMapper.deleteById(userShouye);
  151. return Result.OK(null,"删除成功");
  152. }else {
  153. return Result.ERR(null,"权限不足");
  154. }
  155. }else {
  156. return Result.ERR(null,"权限不足");
  157. }
  158. }else {
  159. return Result.ERR(null,"该用户已经不存在");
  160. }
  161. }
  162. }