|
@@ -6,12 +6,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.zhentao.groups.dto.AddGroupMembers;
|
|
import com.zhentao.groups.dto.AddGroupMembers;
|
|
import com.zhentao.groups.dto.AddGroupsDto;
|
|
import com.zhentao.groups.dto.AddGroupsDto;
|
|
import com.zhentao.groups.dto.DelGroupMembers;
|
|
import com.zhentao.groups.dto.DelGroupMembers;
|
|
|
|
+import com.zhentao.groups.dto.GroupDto;
|
|
import com.zhentao.groups.mapper.GroupMembersMapper;
|
|
import com.zhentao.groups.mapper.GroupMembersMapper;
|
|
import com.zhentao.groups.pojo.GroupMembers;
|
|
import com.zhentao.groups.pojo.GroupMembers;
|
|
import com.zhentao.groups.pojo.Groupss;
|
|
import com.zhentao.groups.pojo.Groupss;
|
|
import com.zhentao.groups.service.GroupMembersService;
|
|
import com.zhentao.groups.service.GroupMembersService;
|
|
import com.zhentao.groups.service.GroupsService;
|
|
import com.zhentao.groups.service.GroupsService;
|
|
import com.zhentao.groups.mapper.GroupsMapper;
|
|
import com.zhentao.groups.mapper.GroupsMapper;
|
|
|
|
+import com.zhentao.information.cache.GroupMemberCache;
|
|
import com.zhentao.shouye.domain.UserShouye;
|
|
import com.zhentao.shouye.domain.UserShouye;
|
|
import com.zhentao.shouye.mapper.UserShouyeMapper;
|
|
import com.zhentao.shouye.mapper.UserShouyeMapper;
|
|
import com.zhentao.shouye.service.UserShouyeService;
|
|
import com.zhentao.shouye.service.UserShouyeService;
|
|
@@ -26,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
* @author lzy
|
|
* @author lzy
|
|
@@ -43,12 +46,21 @@ public class GroupsServiceImpl extends ServiceImpl<GroupsMapper, Groupss>
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private UserShouyeMapper userShouyeMapper;
|
|
private UserShouyeMapper userShouyeMapper;
|
|
-
|
|
|
|
// 创建群
|
|
// 创建群
|
|
|
|
+ @Autowired
|
|
|
|
+ private GroupMembersService groupMembersService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private UserShouyeService userShouyeService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private GroupsMapper groupsMapper;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private GroupMemberCache groupMemberCache;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, timeout = 30)
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, timeout = 30)
|
|
public Result addGroup(AddGroupsDto addGroupsDto) {
|
|
public Result addGroup(AddGroupsDto addGroupsDto) {
|
|
- Groupss groups=new Groupss();
|
|
|
|
|
|
+ Groupss groups = new Groupss();
|
|
groups.setGroupId(IdUtil.getSnowflake().nextId());
|
|
groups.setGroupId(IdUtil.getSnowflake().nextId());
|
|
groups.setName(addGroupsDto.getName());
|
|
groups.setName(addGroupsDto.getName());
|
|
groups.setCreatorId(addGroupsDto.getCreatorId());
|
|
groups.setCreatorId(addGroupsDto.getCreatorId());
|
|
@@ -61,7 +73,7 @@ public class GroupsServiceImpl extends ServiceImpl<GroupsMapper, Groupss>
|
|
groups.setUpdatedAt(new Date());
|
|
groups.setUpdatedAt(new Date());
|
|
int insert1 = this.baseMapper.insert(groups);
|
|
int insert1 = this.baseMapper.insert(groups);
|
|
|
|
|
|
- GroupMembers groupMembers=new GroupMembers();
|
|
|
|
|
|
+ GroupMembers groupMembers = new GroupMembers();
|
|
groupMembers.setId(IdUtil.getSnowflake().nextId());
|
|
groupMembers.setId(IdUtil.getSnowflake().nextId());
|
|
groupMembers.setGroupId(groups.getGroupId());
|
|
groupMembers.setGroupId(groups.getGroupId());
|
|
groupMembers.setUserId(groups.getCreatorId());
|
|
groupMembers.setUserId(groups.getCreatorId());
|
|
@@ -70,6 +82,11 @@ public class GroupsServiceImpl extends ServiceImpl<GroupsMapper, Groupss>
|
|
groupMembers.setJoinTime(new Date());
|
|
groupMembers.setJoinTime(new Date());
|
|
int insert = groupMembersMapper.insert(groupMembers);
|
|
int insert = groupMembersMapper.insert(groupMembers);
|
|
|
|
|
|
|
|
+ // 更新群成员缓存
|
|
|
|
+ List<Long> memberIds = new ArrayList<>();
|
|
|
|
+ memberIds.add(groups.getCreatorId());
|
|
|
|
+ groupMemberCache.updateGroupMembers(groups.getGroupId(), memberIds);
|
|
|
|
+
|
|
UserShouye userShouye=new UserShouye();
|
|
UserShouye userShouye=new UserShouye();
|
|
userShouye.setId(IdUtil.getSnowflake().nextId());
|
|
userShouye.setId(IdUtil.getSnowflake().nextId());
|
|
userShouye.setUid1(addGroupsDto.getCreatorId());
|
|
userShouye.setUid1(addGroupsDto.getCreatorId());
|
|
@@ -85,28 +102,19 @@ public class GroupsServiceImpl extends ServiceImpl<GroupsMapper, Groupss>
|
|
return Result.ERR(null,"创建失败");
|
|
return Result.ERR(null,"创建失败");
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
- @Autowired
|
|
|
|
- private GroupMembersService groupMembersService;
|
|
|
|
- @Autowired
|
|
|
|
- private UserShouyeService userShouyeService;
|
|
|
|
- @Autowired
|
|
|
|
- private GroupsMapper groupsMapper;
|
|
|
|
// 添加人数
|
|
// 添加人数
|
|
@Override
|
|
@Override
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, timeout = 30)
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, timeout = 30)
|
|
public Result AddGroupMembers(AddGroupMembers addGroupMembers) {
|
|
public Result AddGroupMembers(AddGroupMembers addGroupMembers) {
|
|
-
|
|
|
|
List<GroupMembers> data = new ArrayList<>();
|
|
List<GroupMembers> data = new ArrayList<>();
|
|
- Groupss groupss = groupsMapper.selectById(addGroupMembers.getGroupId());
|
|
|
|
- System.err.println(groupss);
|
|
|
|
- List<UserShouye> userShouyes =new ArrayList<>();
|
|
|
|
- List<GroupMembers> list = groupMembersMapper.selectList(new LambdaQueryWrapper<GroupMembers>().eq(GroupMembers::getGroupId, addGroupMembers.getGroupId()));
|
|
|
|
- if (list.size()!=0){
|
|
|
|
- if (groupss.getMaxMembers()>list.size()){
|
|
|
|
- System.err.println(addGroupMembers.getUserId());
|
|
|
|
- for (Long groupMembers:addGroupMembers.getUserId()){
|
|
|
|
- GroupMembers groupMembers1=new GroupMembers();
|
|
|
|
|
|
+ List<UserShouye> userShouyes = new ArrayList<>();
|
|
|
|
+ Groupss groupss = this.getById(addGroupMembers.getGroupssId());
|
|
|
|
+ List<GroupMembers> list = groupMembersService.list(new LambdaQueryWrapper<GroupMembers>().eq(GroupMembers::getGroupId, addGroupMembers.getGroupssId()));
|
|
|
|
+
|
|
|
|
+ if (list.size() != 0) {
|
|
|
|
+ if (groupss.getMaxMembers() > list.size()) {
|
|
|
|
+ for (Long groupMembers : addGroupMembers.getUserId()) {
|
|
|
|
+ GroupMembers groupMembers1 = new GroupMembers();
|
|
groupMembers1.setId(IdUtil.getSnowflake().nextId());
|
|
groupMembers1.setId(IdUtil.getSnowflake().nextId());
|
|
groupMembers1.setGroupId(groupss.getGroupId());
|
|
groupMembers1.setGroupId(groupss.getGroupId());
|
|
groupMembers1.setUserId(groupMembers);
|
|
groupMembers1.setUserId(groupMembers);
|
|
@@ -115,7 +123,7 @@ public class GroupsServiceImpl extends ServiceImpl<GroupsMapper, Groupss>
|
|
groupMembers1.setJoinTime(new Date());
|
|
groupMembers1.setJoinTime(new Date());
|
|
data.add(groupMembers1);
|
|
data.add(groupMembers1);
|
|
|
|
|
|
- UserShouye userShouye=new UserShouye();
|
|
|
|
|
|
+ UserShouye userShouye = new UserShouye();
|
|
userShouye.setId(IdUtil.getSnowflake().nextId());
|
|
userShouye.setId(IdUtil.getSnowflake().nextId());
|
|
userShouye.setUid1(groupMembers);
|
|
userShouye.setUid1(groupMembers);
|
|
userShouye.setUid2(null);
|
|
userShouye.setUid2(null);
|
|
@@ -126,17 +134,23 @@ public class GroupsServiceImpl extends ServiceImpl<GroupsMapper, Groupss>
|
|
}
|
|
}
|
|
boolean b1 = groupMembersService.saveBatch(data);
|
|
boolean b1 = groupMembersService.saveBatch(data);
|
|
boolean b = userShouyeService.saveBatch(userShouyes);
|
|
boolean b = userShouyeService.saveBatch(userShouyes);
|
|
- if (b1!=false && b!=false){
|
|
|
|
- return Result.OK(null,"添加成功");
|
|
|
|
|
|
+ if (b1 && b) {
|
|
|
|
+ // 更新群成员缓存
|
|
|
|
+ List<Long> memberIds = list.stream()
|
|
|
|
+ .map(GroupMembers::getUserId)
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ memberIds.addAll(addGroupMembers.getUserId());
|
|
|
|
+ groupMemberCache.updateGroupMembers(groupss.getGroupId(), memberIds);
|
|
|
|
+ return Result.OK(null, "添加成功");
|
|
}
|
|
}
|
|
- }else {
|
|
|
|
- return Result.ERR(null,"群已满");
|
|
|
|
|
|
+ } else {
|
|
|
|
+ return Result.ERR(null, "群已满");
|
|
}
|
|
}
|
|
- }else {
|
|
|
|
- return Result.ERR(null,"群已不存在");
|
|
|
|
|
|
+ } else {
|
|
|
|
+ return Result.ERR(null, "群已不存在");
|
|
}
|
|
}
|
|
|
|
|
|
- return Result.ERR(null,"添加失败");
|
|
|
|
|
|
+ return Result.ERR(null, "添加失败");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -161,11 +175,33 @@ public class GroupsServiceImpl extends ServiceImpl<GroupsMapper, Groupss>
|
|
}
|
|
}
|
|
groupMembersMapper.deleteById(groupMembers2);
|
|
groupMembersMapper.deleteById(groupMembers2);
|
|
userShouyeMapper.deleteById(userShouye);
|
|
userShouyeMapper.deleteById(userShouye);
|
|
|
|
+
|
|
|
|
+ // 更新群成员缓存
|
|
|
|
+ List<GroupMembers> remainingMembers = groupMembersService.list(
|
|
|
|
+ new LambdaQueryWrapper<GroupMembers>()
|
|
|
|
+ .eq(GroupMembers::getGroupId, delGroupMembers.getGroupssId())
|
|
|
|
+ );
|
|
|
|
+ List<Long> memberIds = remainingMembers.stream()
|
|
|
|
+ .map(GroupMembers::getUserId)
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ groupMemberCache.updateGroupMembers(delGroupMembers.getGroupssId(), memberIds);
|
|
|
|
+
|
|
return Result.OK(null,"删除成功");
|
|
return Result.OK(null,"删除成功");
|
|
}else if (groupMembers.getRole()==1){
|
|
}else if (groupMembers.getRole()==1){
|
|
if (groupMembers2.getRole()==0){
|
|
if (groupMembers2.getRole()==0){
|
|
groupMembersMapper.deleteById(groupMembers2);
|
|
groupMembersMapper.deleteById(groupMembers2);
|
|
userShouyeMapper.deleteById(userShouye);
|
|
userShouyeMapper.deleteById(userShouye);
|
|
|
|
+
|
|
|
|
+ // 更新群成员缓存
|
|
|
|
+ List<GroupMembers> remainingMembers = groupMembersService.list(
|
|
|
|
+ new LambdaQueryWrapper<GroupMembers>()
|
|
|
|
+ .eq(GroupMembers::getGroupId, delGroupMembers.getGroupssId())
|
|
|
|
+ );
|
|
|
|
+ List<Long> memberIds = remainingMembers.stream()
|
|
|
|
+ .map(GroupMembers::getUserId)
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ groupMemberCache.updateGroupMembers(delGroupMembers.getGroupssId(), memberIds);
|
|
|
|
+
|
|
return Result.OK(null,"删除成功");
|
|
return Result.OK(null,"删除成功");
|
|
}else {
|
|
}else {
|
|
return Result.ERR(null,"权限不足");
|
|
return Result.ERR(null,"权限不足");
|
|
@@ -178,34 +214,28 @@ public class GroupsServiceImpl extends ServiceImpl<GroupsMapper, Groupss>
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+//查询所有的群ID和群里面成员ID
|
|
|
|
+ @Override
|
|
|
|
+ public List<GroupDto> getList() {
|
|
|
|
+ List<Groupss> list = this.list();
|
|
|
|
+ List<GroupDto> list3 = new ArrayList<>();
|
|
|
|
+// 所有的群ID
|
|
|
|
+ List<Long> collect = list.stream().map(Groupss::getGroupId).collect(Collectors.toList());
|
|
|
|
+ List<GroupMembers> list1 = groupMembersService.list();
|
|
|
|
+ for (Long c:collect) {
|
|
|
|
+ List<Long> list2 = new ArrayList<>();
|
|
|
|
+ for (GroupMembers m: list1) {
|
|
|
|
+ if (c.equals(m.getGroupId())){
|
|
|
|
+ list2.add(m.getUserId());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ GroupDto groupDto = new GroupDto();
|
|
|
|
+ groupDto.setGroupId(c);
|
|
|
|
+ groupDto.setUid(list2);
|
|
|
|
+ list3.add(groupDto);
|
|
|
|
+ }
|
|
|
|
+ return list3;
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|