|
@@ -1,5 +1,9 @@
|
|
package com.ym.mec.biz.service.impl;
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
|
+import com.microsvc.toolkit.middleware.im.ImPluginContext;
|
|
|
|
+import com.microsvc.toolkit.middleware.im.ImPluginService;
|
|
|
|
+import com.microsvc.toolkit.middleware.im.message.ImGroupMemberWrapper;
|
|
import com.ym.mec.auth.api.client.SysUserFeignService;
|
|
import com.ym.mec.auth.api.client.SysUserFeignService;
|
|
import com.ym.mec.auth.api.entity.SysUser;
|
|
import com.ym.mec.auth.api.entity.SysUser;
|
|
import com.ym.mec.biz.dal.dao.ImGroupDao;
|
|
import com.ym.mec.biz.dal.dao.ImGroupDao;
|
|
@@ -11,8 +15,10 @@ import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
|
|
import com.ym.mec.biz.dal.dto.NameDto;
|
|
import com.ym.mec.biz.dal.dto.NameDto;
|
|
import com.ym.mec.biz.dal.entity.ImGroup;
|
|
import com.ym.mec.biz.dal.entity.ImGroup;
|
|
import com.ym.mec.biz.dal.entity.ImGroupMember;
|
|
import com.ym.mec.biz.dal.entity.ImGroupMember;
|
|
|
|
+import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
|
|
import com.ym.mec.biz.service.ImGroupMemberService;
|
|
import com.ym.mec.biz.service.ImGroupMemberService;
|
|
import com.ym.mec.biz.service.ImGroupService;
|
|
import com.ym.mec.biz.service.ImGroupService;
|
|
|
|
+import com.ym.mec.biz.service.SysConfigService;
|
|
import com.ym.mec.biz.service.SysUserService;
|
|
import com.ym.mec.biz.service.SysUserService;
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
import com.ym.mec.common.entity.ImUserModel;
|
|
import com.ym.mec.common.entity.ImUserModel;
|
|
@@ -22,6 +28,7 @@ import com.ym.mec.common.tenant.TenantContextHolder;
|
|
import com.ym.mec.im.ImFeignService;
|
|
import com.ym.mec.im.ImFeignService;
|
|
import com.ym.mec.im.entity.GroupMember;
|
|
import com.ym.mec.im.entity.GroupMember;
|
|
import com.ym.mec.im.entity.GroupModel;
|
|
import com.ym.mec.im.entity.GroupModel;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -33,216 +40,222 @@ import java.util.function.Function;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
@Service
|
|
|
|
+@Slf4j
|
|
public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> implements ImGroupService {
|
|
public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> implements ImGroupService {
|
|
|
|
|
|
- @Autowired
|
|
|
|
- private ImGroupDao imGroupDao;
|
|
|
|
-
|
|
|
|
- @Autowired
|
|
|
|
- private ImGroupMemberDao imGroupMemberDao;
|
|
|
|
-
|
|
|
|
- @Autowired
|
|
|
|
- private ImGroupNoticeDao imGroupNoticeDao;
|
|
|
|
-
|
|
|
|
- @Autowired
|
|
|
|
- private ImGroupMemberService imGroupMemberService;
|
|
|
|
-
|
|
|
|
- @Autowired
|
|
|
|
- private ImFeignService imFeignService;
|
|
|
|
-
|
|
|
|
- @Autowired
|
|
|
|
- private SysUserService sysUserService;
|
|
|
|
-
|
|
|
|
- @Autowired
|
|
|
|
- private ImUserFriendDao imUserFriendDao;
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public BaseDAO<String, ImGroup> getDAO() {
|
|
|
|
- return imGroupDao;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
- public ImGroup create(String id, Integer userId, String name, String introduce, String memo, String tags, String img, String type, ImGroup.GroupTypeEnum groupType) {
|
|
|
|
- ImGroup imGroup = imGroupDao.get(id);
|
|
|
|
- if (imGroup != null) {
|
|
|
|
- return imGroup;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- imGroup = new ImGroup();
|
|
|
|
-
|
|
|
|
- Date date = new Date();
|
|
|
|
-
|
|
|
|
- imGroup.setId(id);
|
|
|
|
- imGroup.setCreateTime(date);
|
|
|
|
- imGroup.setIntroduce(introduce);
|
|
|
|
-
|
|
|
|
- if(userId != null){
|
|
|
|
- imGroup.setMemberNum(1);
|
|
|
|
- }else{
|
|
|
|
- imGroup.setMemberNum(0);
|
|
|
|
- }
|
|
|
|
- imGroup.setMemo(memo);
|
|
|
|
- imGroup.setName(name);
|
|
|
|
- imGroup.setTags(tags);
|
|
|
|
- imGroup.setImg(img);
|
|
|
|
- imGroup.setType(type);
|
|
|
|
- imGroup.setGroupType(groupType);
|
|
|
|
- imGroup.setUpdateTime(date);
|
|
|
|
- imGroupDao.insert(imGroup);
|
|
|
|
-
|
|
|
|
- String groupId = imGroup.getId();
|
|
|
|
-
|
|
|
|
- if(userId != null){
|
|
|
|
- imGroupMemberService.join(id, userId, null, true);
|
|
|
|
-
|
|
|
|
- GroupMember groupMember = new GroupMember(userId.toString(), groupId);
|
|
|
|
-
|
|
|
|
- imFeignService.groupCreate(new GroupModel(groupId, new GroupMember[] { groupMember }, name));
|
|
|
|
- }else{
|
|
|
|
- imFeignService.groupCreate(new GroupModel(groupId, null, name));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return imGroup;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
- public String createGroup(ImGroupDto imGroupDto){
|
|
|
|
- List<String> userIdList = imGroupDto.getUserIdList();
|
|
|
|
- Integer currentUserId = null;
|
|
|
|
- if (CollectionUtils.isEmpty(userIdList)){
|
|
|
|
- userIdList.add(sysUserService.getUserId().toString());
|
|
|
|
- }
|
|
|
|
- String groupName = imGroupDto.getGroupName();
|
|
|
|
- String type = imGroupDto.getType();
|
|
|
|
- Optional.ofNullable(groupName).filter(StringUtils::isNotBlank).orElseThrow(() -> new BizException("群名称不能为空"));
|
|
|
|
- Optional.ofNullable(type).filter(StringUtils::isNotBlank).orElseThrow(() -> new BizException("群类型不能为空"));
|
|
|
|
- Date date = new Date();
|
|
|
|
- ImGroup imGroup = new ImGroup();
|
|
|
|
- String groupId = UUID.randomUUID().toString();
|
|
|
|
- imGroup.setId(groupId);
|
|
|
|
- imGroup.setCreateTime(date);
|
|
|
|
- imGroup.setIntroduce(groupName);
|
|
|
|
- imGroup.setMemo(groupName);
|
|
|
|
- imGroup.setMemberNum(userIdList.size());
|
|
|
|
- imGroup.setName(groupName);
|
|
|
|
- imGroup.setType(type);
|
|
|
|
- imGroup.setGroupType(imGroupDto.getGroupType());
|
|
|
|
- imGroup.setUpdateTime(date);
|
|
|
|
- imGroupDao.insert(imGroup);
|
|
|
|
- List<ImGroupMember> groupMemberList = imGroupMemberDao.queryMembers(groupId, userIdList, TenantContextHolder.getTenantId());
|
|
|
|
- if(currentUserId != null){
|
|
|
|
- groupMemberList.get(0).setRoleType("乐团主管");
|
|
|
|
- }
|
|
|
|
- imGroupMemberDao.batchInsert(groupMemberList);
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private ImGroupDao imGroupDao;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ImGroupMemberDao imGroupMemberDao;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ImGroupNoticeDao imGroupNoticeDao;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ImGroupMemberService imGroupMemberService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ImFeignService imFeignService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private SysUserService sysUserService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ImUserFriendDao imUserFriendDao;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private SysConfigService sysConfigService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ImPluginContext imPluginContext;
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public BaseDAO<String, ImGroup> getDAO() {
|
|
|
|
+ return imGroupDao;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public ImGroup create(String id, Integer userId, String name, String introduce, String memo, String tags, String img, String type, ImGroup.GroupTypeEnum groupType) {
|
|
|
|
+ ImGroup imGroup = imGroupDao.get(id);
|
|
|
|
+ if (imGroup != null) {
|
|
|
|
+ return imGroup;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ imGroup = new ImGroup();
|
|
|
|
+
|
|
|
|
+ Date date = new Date();
|
|
|
|
+
|
|
|
|
+ imGroup.setId(id);
|
|
|
|
+ imGroup.setCreateTime(date);
|
|
|
|
+ imGroup.setIntroduce(introduce);
|
|
|
|
+
|
|
|
|
+ if(userId != null){
|
|
|
|
+ imGroup.setMemberNum(1);
|
|
|
|
+ }else{
|
|
|
|
+ imGroup.setMemberNum(0);
|
|
|
|
+ }
|
|
|
|
+ imGroup.setMemo(memo);
|
|
|
|
+ imGroup.setName(name);
|
|
|
|
+ imGroup.setTags(tags);
|
|
|
|
+ imGroup.setImg(img);
|
|
|
|
+ imGroup.setType(type);
|
|
|
|
+ imGroup.setGroupType(groupType);
|
|
|
|
+ imGroup.setUpdateTime(date);
|
|
|
|
+ imGroupDao.insert(imGroup);
|
|
|
|
+
|
|
|
|
+ String groupId = imGroup.getId();
|
|
|
|
+
|
|
|
|
+ if(userId != null){
|
|
|
|
+ imGroupMemberService.join(id, userId, null, true);
|
|
|
|
+
|
|
|
|
+ GroupMember groupMember = new GroupMember(userId.toString(), groupId);
|
|
|
|
+
|
|
|
|
+ imFeignService.groupCreate(new GroupModel(groupId, new GroupMember[] { groupMember }, name));
|
|
|
|
+ }else{
|
|
|
|
+ imFeignService.groupCreate(new GroupModel(groupId, null, name));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return imGroup;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public String createGroup(ImGroupDto imGroupDto){
|
|
|
|
+ List<String> userIdList = imGroupDto.getUserIdList();
|
|
|
|
+ Integer currentUserId = null;
|
|
|
|
+ if (CollectionUtils.isEmpty(userIdList)){
|
|
|
|
+ userIdList.add(sysUserService.getUserId().toString());
|
|
|
|
+ }
|
|
|
|
+ String groupName = imGroupDto.getGroupName();
|
|
|
|
+ String type = imGroupDto.getType();
|
|
|
|
+ Optional.ofNullable(groupName).filter(StringUtils::isNotBlank).orElseThrow(() -> new BizException("群名称不能为空"));
|
|
|
|
+ Optional.ofNullable(type).filter(StringUtils::isNotBlank).orElseThrow(() -> new BizException("群类型不能为空"));
|
|
|
|
+ Date date = new Date();
|
|
|
|
+ ImGroup imGroup = new ImGroup();
|
|
|
|
+ String groupId = UUID.randomUUID().toString();
|
|
|
|
+ imGroup.setId(groupId);
|
|
|
|
+ imGroup.setCreateTime(date);
|
|
|
|
+ imGroup.setIntroduce(groupName);
|
|
|
|
+ imGroup.setMemo(groupName);
|
|
|
|
+ imGroup.setMemberNum(userIdList.size());
|
|
|
|
+ imGroup.setName(groupName);
|
|
|
|
+ imGroup.setType(type);
|
|
|
|
+ imGroup.setGroupType(imGroupDto.getGroupType());
|
|
|
|
+ imGroup.setUpdateTime(date);
|
|
|
|
+ imGroupDao.insert(imGroup);
|
|
|
|
+ List<ImGroupMember> groupMemberList = imGroupMemberDao.queryMembers(groupId, userIdList, TenantContextHolder.getTenantId());
|
|
|
|
+ if(currentUserId != null){
|
|
|
|
+ groupMemberList.get(0).setRoleType("乐团主管");
|
|
|
|
+ }
|
|
|
|
+ imGroupMemberDao.batchInsert(groupMemberList);
|
|
Function<String,GroupMember> newGroup = userId ->new GroupMember(userId, groupId);
|
|
Function<String,GroupMember> newGroup = userId ->new GroupMember(userId, groupId);
|
|
- List<GroupMember> groupMembers = userIdList.stream().map(newGroup).collect(Collectors.toList());
|
|
|
|
- GroupMember[] members = new GroupMember[groupMembers.size()];
|
|
|
|
- groupMembers.toArray(members);
|
|
|
|
- imFeignService.groupCreate(new GroupModel(groupId,members,groupName));
|
|
|
|
|
|
+ List<GroupMember> groupMembers = userIdList.stream().map(newGroup).collect(Collectors.toList());
|
|
|
|
+ GroupMember[] members = new GroupMember[groupMembers.size()];
|
|
|
|
+ groupMembers.toArray(members);
|
|
|
|
+ imFeignService.groupCreate(new GroupModel(groupId,members,groupName));
|
|
return groupId;
|
|
return groupId;
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
- public boolean cancel(String imGroupId) {
|
|
|
|
- // 删除群成员
|
|
|
|
- imGroupMemberDao.deleteByImGroupId(imGroupId);
|
|
|
|
- // 删除群公告
|
|
|
|
- imGroupNoticeDao.deleteByImGroupId(imGroupId);
|
|
|
|
- // 删除群信息
|
|
|
|
- imGroupDao.delete(imGroupId);
|
|
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public boolean cancel(String imGroupId) {
|
|
|
|
+ // 删除群成员
|
|
|
|
+ imGroupMemberDao.deleteByImGroupId(imGroupId);
|
|
|
|
+ // 删除群公告
|
|
|
|
+ imGroupNoticeDao.deleteByImGroupId(imGroupId);
|
|
|
|
+ // 删除群信息
|
|
|
|
+ imGroupDao.delete(imGroupId);
|
|
|
|
+
|
|
|
|
+ imFeignService.groupDismiss(new GroupModel(imGroupId, null));
|
|
|
|
+
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
|
|
- imFeignService.groupDismiss(new GroupModel(imGroupId, null));
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public List<ImGroup> queryByUserId(Integer userId, String search,String groupType) {
|
|
|
|
+ return imGroupDao.queryByUserId(userId, search,groupType);
|
|
|
|
+ }
|
|
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public List<ImGroupMemberDto> queryMemberById(String imGroupId) {
|
|
|
|
+ return imGroupDao.queryMemberById(imGroupId);
|
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<ImGroup> queryByUserId(Integer userId, String search,String groupType) {
|
|
|
|
- return imGroupDao.queryByUserId(userId, search,groupType);
|
|
|
|
|
|
+ public ImGroupMemberDto queryMember(String imGroupId, Integer userId) {
|
|
|
|
+ ImGroupMemberDto imGroupMemberDto = imGroupDao.queryMember(imGroupId, userId);
|
|
|
|
+ if(Objects.isNull(imGroupMemberDto)){
|
|
|
|
+ imGroupMemberDto = imGroupDao.queryMember(null, userId);
|
|
|
|
+ if (Objects.nonNull(imGroupMemberDto)){
|
|
|
|
+ imGroupMemberDto.setRoleType(null);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return imGroupMemberDto;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<ImGroupMemberDto> queryMemberById(String imGroupId) {
|
|
|
|
- return imGroupDao.queryMemberById(imGroupId);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public ImGroupMemberDto queryMember(String imGroupId, Integer userId) {
|
|
|
|
- ImGroupMemberDto imGroupMemberDto = imGroupDao.queryMember(imGroupId, userId);
|
|
|
|
- if(Objects.isNull(imGroupMemberDto)){
|
|
|
|
- imGroupMemberDto = imGroupDao.queryMember(null, userId);
|
|
|
|
- if (Objects.nonNull(imGroupMemberDto)){
|
|
|
|
- imGroupMemberDto.setRoleType(null);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return imGroupMemberDto;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
- public int updateNickName(Integer userId, String nickName) {
|
|
|
|
- //修改群成员备注
|
|
|
|
- int i = imGroupDao.updateNickname(userId, nickName);
|
|
|
|
- imGroupDao.updateUserFriendNickname(userId, nickName);
|
|
|
|
- return i;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
- public void updateNickName1(Integer userId, String nickName) {
|
|
|
|
- //修改群成员备注
|
|
|
|
- imGroupDao.updateNickname(userId, nickName);
|
|
|
|
- imGroupDao.updateUserFriendNickname(userId, nickName);
|
|
|
|
- //修改sysUser名称,如果包含学员的角色,那么修改userName。否则修改realName
|
|
|
|
- SysUser sysUser = sysUserService.queryUserById(userId);
|
|
|
|
- if(sysUser.getUserType().contains("STUDENT")){
|
|
|
|
- sysUser.setUsername(nickName);
|
|
|
|
- }else {
|
|
|
|
- sysUser.setRealName(nickName);
|
|
|
|
- }
|
|
|
|
- sysUserService.updateSysUser(sysUser);
|
|
|
|
- //同步融云基本信息
|
|
|
|
- imFeignService.update(new ImUserModel(sysUser.getId().toString(),nickName,sysUser.getAvatar()));
|
|
|
|
- }
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public int updateNickName(Integer userId, String nickName) {
|
|
|
|
+ //修改群成员备注
|
|
|
|
+ int i = imGroupDao.updateNickname(userId, nickName);
|
|
|
|
+ imGroupDao.updateUserFriendNickname(userId, nickName);
|
|
|
|
+ return i;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void updateNickName1(Integer userId, String nickName) {
|
|
|
|
+ //修改群成员备注
|
|
|
|
+ imGroupDao.updateNickname(userId, nickName);
|
|
|
|
+ imGroupDao.updateUserFriendNickname(userId, nickName);
|
|
|
|
+ //修改sysUser名称,如果包含学员的角色,那么修改userName。否则修改realName
|
|
|
|
+ SysUser sysUser = sysUserService.queryUserById(userId);
|
|
|
|
+ if(sysUser.getUserType().contains("STUDENT")){
|
|
|
|
+ sysUser.setUsername(nickName);
|
|
|
|
+ }else {
|
|
|
|
+ sysUser.setRealName(nickName);
|
|
|
|
+ }
|
|
|
|
+ sysUserService.updateSysUser(sysUser);
|
|
|
|
+ //同步融云基本信息
|
|
|
|
+ imFeignService.update(new ImUserModel(sysUser.getId().toString(),nickName,sysUser.getAvatar()));
|
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
public void updateImGroup(ImGroup imGroup) {
|
|
public void updateImGroup(ImGroup imGroup) {
|
|
- imGroup.setMemberNum(null);
|
|
|
|
- imGroupDao.update(imGroup);
|
|
|
|
- imFeignService.groupUpdate(new GroupModel(imGroup.getId(),null,imGroup.getName()));
|
|
|
|
|
|
+ imGroup.setMemberNum(null);
|
|
|
|
+ imGroupDao.update(imGroup);
|
|
|
|
+ imFeignService.groupUpdate(new GroupModel(imGroup.getId(),null,imGroup.getName()));
|
|
}
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
- public void dismissGroup(String imGroupId) {
|
|
|
|
- imFeignService.groupDismiss(new GroupModel(imGroupId, null));
|
|
|
|
- imGroupDao.delete(imGroupId);
|
|
|
|
- imGroupMemberDao.deleteByImGroupId(imGroupId);
|
|
|
|
- imGroupNoticeDao.deleteByImGroupId(imGroupId);
|
|
|
|
- }
|
|
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void dismissGroup(String imGroupId) {
|
|
|
|
+ imFeignService.groupDismiss(new GroupModel(imGroupId, null));
|
|
|
|
+ imGroupDao.delete(imGroupId);
|
|
|
|
+ imGroupMemberDao.deleteByImGroupId(imGroupId);
|
|
|
|
+ imGroupNoticeDao.deleteByImGroupId(imGroupId);
|
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public List<NameDto> queryDetail(List<NameDto> nameDto) {
|
|
public List<NameDto> queryDetail(List<NameDto> nameDto) {
|
|
- List<NameDto> dtos = new ArrayList<>();
|
|
|
|
- if(CollectionUtils.isNotEmpty(nameDto)){
|
|
|
|
- Map<Integer, List<NameDto>> collect = nameDto.stream().collect(Collectors.groupingBy(NameDto::getType));
|
|
|
|
- for (Integer integer : collect.keySet()) {
|
|
|
|
- List<NameDto> nameDtos = collect.get(integer);
|
|
|
|
- if(CollectionUtils.isNotEmpty(nameDtos)){
|
|
|
|
- String idList = nameDtos.stream().map(e -> e.getId()).collect(Collectors.joining(","));
|
|
|
|
- if(integer.equals(3)){
|
|
|
|
- dtos.addAll(imGroupDao.queryNameByIds(idList));
|
|
|
|
- }else if (integer.equals(1)){
|
|
|
|
- Integer userId = sysUserService.getUserId();
|
|
|
|
- dtos.addAll(imUserFriendDao.queryNameByIds(idList,userId));
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ List<NameDto> dtos = new ArrayList<>();
|
|
|
|
+ if(CollectionUtils.isNotEmpty(nameDto)){
|
|
|
|
+ Map<Integer, List<NameDto>> collect = nameDto.stream().collect(Collectors.groupingBy(NameDto::getType));
|
|
|
|
+ for (Integer integer : collect.keySet()) {
|
|
|
|
+ List<NameDto> nameDtos = collect.get(integer);
|
|
|
|
+ if(CollectionUtils.isNotEmpty(nameDtos)){
|
|
|
|
+ String idList = nameDtos.stream().map(e -> e.getId()).collect(Collectors.joining(","));
|
|
|
|
+ if(integer.equals(3)){
|
|
|
|
+ dtos.addAll(imGroupDao.queryNameByIds(idList));
|
|
|
|
+ }else if (integer.equals(1)){
|
|
|
|
+ Integer userId = sysUserService.getUserId();
|
|
|
|
+ dtos.addAll(imUserFriendDao.queryNameByIds(idList,userId));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
return dtos;
|
|
return dtos;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -255,4 +268,118 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
|
|
public List<ImGroupMemberDto> queryMemberByIdV2(String imGroupId, String search, Integer subjectId, Boolean vipFlag) {
|
|
public List<ImGroupMemberDto> queryMemberByIdV2(String imGroupId, String search, Integer subjectId, Boolean vipFlag) {
|
|
return imGroupDao.queryMemberByIdV2(imGroupId,search,subjectId,vipFlag);
|
|
return imGroupDao.queryMemberByIdV2(imGroupId,search,subjectId,vipFlag);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 用户退出所有群
|
|
|
|
+ *
|
|
|
|
+ * @param userId 用户id
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void quit(Long userId) {
|
|
|
|
+
|
|
|
|
+ // 退出群组
|
|
|
|
+ // 查询用户默认头象
|
|
|
|
+ String serviceProvider = sysConfigService.findByParamName(SysConfigService.IM_SERVICE_PROVIDER).getParanValue();
|
|
|
|
+
|
|
|
|
+ ImPluginService imPluginService =imPluginContext.getPluginService(serviceProvider);
|
|
|
|
+
|
|
|
|
+ List<ImGroupMember> imGroupMembers = imGroupMemberDao.queryMembersByUserId(userId);
|
|
|
|
+ if (CollectionUtils.isNotEmpty(imGroupMembers)) {
|
|
|
|
+ for (ImGroupMember imGroupMember : imGroupMembers) {
|
|
|
|
+ try {
|
|
|
|
+ imPluginService.groupQuit(imGroupMember.getImGroupId(), ImGroupMemberWrapper.ImGroupMember.builder().userId(userId).build());
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("用户退出群失败{},{}", userId, imGroupMember.getImGroupId(), e);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ imGroupMemberDao.deleteByUserId(userId);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 用户加入群
|
|
|
|
+ *
|
|
|
|
+ * @param schoolId 学校id
|
|
|
|
+ * @param userId 用户id
|
|
|
|
+ * @param leader 是否是群主
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void addSchoolStaffGroup(Long schoolId, Integer userId, ESchoolStaffType schoolStaffType) throws Exception {
|
|
|
|
+
|
|
|
|
+ // 查询群是否存在
|
|
|
|
+ ImGroup imGroup = imGroupDao.queryBySchoolId(schoolId);
|
|
|
|
+
|
|
|
|
+ String serviceProvider = sysConfigService.findByParamName(SysConfigService.IM_SERVICE_PROVIDER).getParanValue();
|
|
|
|
+
|
|
|
|
+ ImPluginService imPluginService =imPluginContext.getPluginService(serviceProvider);
|
|
|
|
+
|
|
|
|
+ if (Objects.isNull(imGroup)) {
|
|
|
|
+ imGroup = new ImGroup();
|
|
|
|
+ imGroup.setSchoolId(schoolId);
|
|
|
|
+ imGroup.setId(IdWorker.getIdStr());
|
|
|
|
+ imGroup.setName("教学团队衔接群");
|
|
|
|
+ imGroup.setIntroduce(imGroup.getName());
|
|
|
|
+ imGroup.setMemberNum(1);
|
|
|
|
+ imGroup.setType(ImGroup.GroupTypeEnum.SHOOL.getCode());
|
|
|
|
+ imGroup.setGroupType(ImGroup.GroupTypeEnum.SHOOL);
|
|
|
|
+ imGroup.setCreateTime(new Date());
|
|
|
|
+ imGroup.setUpdateTime(new Date());
|
|
|
|
+ imGroup.setTenantId(TenantContextHolder.getTenantId());
|
|
|
|
+ imGroupDao.insert(imGroup);
|
|
|
|
+ imPluginService.groupCreate(imGroup.getId(), imGroup.getName(), userId.toString());
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ if (!schoolStaffType.equals(ESchoolStaffType.ORCHESTRA_LEADER)) {
|
|
|
|
+ imPluginService.groupJoin(imGroup.getId(), imGroup.getName(), ImGroupMemberWrapper.ImGroupMember.builder().userId(userId.longValue()).build());
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ ImGroupMember imGroupMember = new ImGroupMember();
|
|
|
|
+ imGroupMember.setImGroupId(imGroup.getId());
|
|
|
|
+ imGroupMember.setUserId(userId);
|
|
|
|
+ imGroupMember.setIsAdmin(schoolStaffType.equals(ESchoolStaffType.ORCHESTRA_LEADER));
|
|
|
|
+ imGroupMember.setRoleType(schoolStaffType.getDescribe());
|
|
|
|
+ imGroupMember.setTenantId(imGroup.getTenantId());
|
|
|
|
+ imGroupMemberDao.insert(imGroupMember);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 加群
|
|
|
|
+ *
|
|
|
|
+ * @param musicGroupIds 群组ID
|
|
|
|
+ * @param user 用户信息
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void addImGroup(List<String> musicGroupIds, SysUser user) {
|
|
|
|
+ if (CollectionUtils.isEmpty(musicGroupIds)) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String serviceProvider = sysConfigService.findByParamName(SysConfigService.IM_SERVICE_PROVIDER).getParanValue();
|
|
|
|
+
|
|
|
|
+ ImPluginService imPluginService =imPluginContext.getPluginService(serviceProvider);
|
|
|
|
+
|
|
|
|
+ List<ImGroup> groupList = imGroupDao.getByIds(musicGroupIds);
|
|
|
|
+
|
|
|
|
+ // id 分组
|
|
|
|
+ Map<String, ImGroup> map = groupList.stream().collect(Collectors.toMap(o -> o.getId(), Function.identity()));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ for (String musicGroupId : musicGroupIds) {
|
|
|
|
+ ImGroup imGroup = map.get(musicGroupId);
|
|
|
|
+ if (imGroup == null) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ try {
|
|
|
|
+ imPluginService.groupJoin(imGroup.getId(), imGroup.getName(), ImGroupMemberWrapper.ImGroupMember.builder().userId(user.getId().longValue()).build());
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("加入群聊失败",e);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|