|
@@ -3,13 +3,14 @@ package com.ym.mec.biz.service.impl;
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.google.common.collect.Lists;
|
|
import com.google.common.collect.Lists;
|
|
import com.microsvc.toolkit.middleware.im.ImPluginContext;
|
|
import com.microsvc.toolkit.middleware.im.ImPluginContext;
|
|
|
|
+import com.microsvc.toolkit.middleware.im.ImPluginService;
|
|
import com.microsvc.toolkit.middleware.im.impl.RongCloudImPlugin;
|
|
import com.microsvc.toolkit.middleware.im.impl.RongCloudImPlugin;
|
|
import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
|
|
import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
|
|
import com.ym.mec.auth.api.entity.SysUser;
|
|
import com.ym.mec.auth.api.entity.SysUser;
|
|
import com.ym.mec.biz.dal.dao.*;
|
|
import com.ym.mec.biz.dal.dao.*;
|
|
import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
|
|
import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
|
|
-import com.ym.mec.biz.dal.dto.im.BasicUserInfo;
|
|
|
|
import com.ym.mec.biz.dal.entity.*;
|
|
import com.ym.mec.biz.dal.entity.*;
|
|
|
|
+import com.ym.mec.biz.dal.enums.EFriendRoleType;
|
|
import com.ym.mec.biz.dal.enums.GroupType;
|
|
import com.ym.mec.biz.dal.enums.GroupType;
|
|
import com.ym.mec.biz.dal.page.GroupMemberQueryInfo;
|
|
import com.ym.mec.biz.dal.page.GroupMemberQueryInfo;
|
|
import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
|
|
import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
|
|
@@ -26,12 +27,13 @@ import com.ym.mec.im.entity.GroupMember;
|
|
import com.ym.mec.im.entity.GroupModel;
|
|
import com.ym.mec.im.entity.GroupModel;
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.joda.time.DateTime;
|
|
import org.joda.time.DateTime;
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.Map.Entry;
|
|
import java.util.Map.Entry;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -39,41 +41,40 @@ import java.util.stream.Collectors;
|
|
@Slf4j
|
|
@Slf4j
|
|
@Service
|
|
@Service
|
|
public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMember> implements ImGroupMemberService {
|
|
public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMember> implements ImGroupMemberService {
|
|
- @Autowired
|
|
|
|
|
|
+ @Resource
|
|
private ImGroupMemberDao imGroupMemberDao;
|
|
private ImGroupMemberDao imGroupMemberDao;
|
|
- @Autowired
|
|
|
|
|
|
+ @Resource
|
|
private ImGroupDao imGroupDao;
|
|
private ImGroupDao imGroupDao;
|
|
- @Autowired
|
|
|
|
|
|
+ @Resource
|
|
private ImGroupService imGroupService;
|
|
private ImGroupService imGroupService;
|
|
- @Autowired
|
|
|
|
|
|
+ @Resource
|
|
private TeacherDao teacherDao;
|
|
private TeacherDao teacherDao;
|
|
- @Autowired
|
|
|
|
|
|
+ @Resource
|
|
private ClassGroupDao classGroupDao;
|
|
private ClassGroupDao classGroupDao;
|
|
- @Autowired
|
|
|
|
|
|
+ @Resource
|
|
private MusicGroupDao musicGroupDao;
|
|
private MusicGroupDao musicGroupDao;
|
|
- @Autowired
|
|
|
|
|
|
+ @Resource
|
|
private PracticeGroupDao practiceGroupDao;
|
|
private PracticeGroupDao practiceGroupDao;
|
|
- @Autowired
|
|
|
|
|
|
+ @Resource
|
|
private VipGroupDao vipGroupDao;
|
|
private VipGroupDao vipGroupDao;
|
|
- @Autowired
|
|
|
|
|
|
+ @Resource
|
|
private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
|
|
private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
|
|
- @Autowired
|
|
|
|
|
|
+ @Resource
|
|
private ClassGroupStudentMapperDao classGroupStudentMapperDao;
|
|
private ClassGroupStudentMapperDao classGroupStudentMapperDao;
|
|
- @Autowired
|
|
|
|
|
|
+ @Resource
|
|
private ImFeignService imFeignService;
|
|
private ImFeignService imFeignService;
|
|
- @Autowired
|
|
|
|
|
|
+ @Resource
|
|
private ImGroupCoreService imGroupCoreService;
|
|
private ImGroupCoreService imGroupCoreService;
|
|
- @Autowired
|
|
|
|
|
|
+ @Resource
|
|
private ImPluginContext imPluginContext;
|
|
private ImPluginContext imPluginContext;
|
|
-
|
|
|
|
- @Autowired
|
|
|
|
|
|
+ @Resource
|
|
private SysUserService sysUserService;
|
|
private SysUserService sysUserService;
|
|
@Override
|
|
@Override
|
|
public BaseDAO<Long, ImGroupMember> getDAO() {
|
|
public BaseDAO<Long, ImGroupMember> getDAO() {
|
|
return imGroupMemberDao;
|
|
return imGroupMemberDao;
|
|
}
|
|
}
|
|
|
|
|
|
- public ImGroup joinGroup(String imGroupId, Integer userId, String roleType, boolean isAdmin,Map<Integer,String> userRoleMap){
|
|
|
|
|
|
+ public void joinGroup(String imGroupId, Integer userId, String roleType, boolean isAdmin, Map<Integer,String> userRoleMap){
|
|
int groupId = Integer.parseInt(imGroupId);
|
|
int groupId = Integer.parseInt(imGroupId);
|
|
ClassGroup classGroup = classGroupDao.get(groupId);
|
|
ClassGroup classGroup = classGroupDao.get(groupId);
|
|
String tags = classGroup.getName();
|
|
String tags = classGroup.getName();
|
|
@@ -119,13 +120,17 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
|
|
}
|
|
}
|
|
tags = vipGroup.getName();
|
|
tags = vipGroup.getName();
|
|
}
|
|
}
|
|
- ImGroup imGroup = imGroupService.create(imGroupId, null, classGroup.getName(), tags,
|
|
|
|
|
|
+ imGroupService.create(imGroupId, null, classGroup.getName(), tags,
|
|
tags, tags, null, classGroup.getGroupType().getCode(), ImGroup.GroupTypeEnum.valueOf(classGroup.getType().getCode()));
|
|
tags, tags, null, classGroup.getGroupType().getCode(), ImGroup.GroupTypeEnum.valueOf(classGroup.getType().getCode()));
|
|
if(userId != null){
|
|
if(userId != null){
|
|
join(imGroupId,userId,roleType,isAdmin);
|
|
join(imGroupId,userId,roleType,isAdmin);
|
|
}
|
|
}
|
|
join(imGroupId,userRoleMap);
|
|
join(imGroupId,userRoleMap);
|
|
- return imGroup;
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public ImGroupMemberDao getDao() {
|
|
|
|
+ return imGroupMemberDao;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -137,27 +142,28 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
//检查用户是否已存在
|
|
//检查用户是否已存在
|
|
- List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userId.toString());
|
|
|
|
- if(imGroupMemberList != null && imGroupMemberList.size() > 0){
|
|
|
|
|
|
+ List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId, userId.toString());
|
|
|
|
+ if(CollectionUtils.isNotEmpty(imGroupMemberList)){
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
-
|
|
|
|
ImGroupMember imGroupMember = new ImGroupMember();
|
|
ImGroupMember imGroupMember = new ImGroupMember();
|
|
Date date = new Date();
|
|
Date date = new Date();
|
|
-
|
|
|
|
|
|
+ imGroupMember.setGroupType(imGroup.getGroupType());
|
|
imGroupMember.setCreateTime(date);
|
|
imGroupMember.setCreateTime(date);
|
|
imGroupMember.setImGroupId(imGroupId);
|
|
imGroupMember.setImGroupId(imGroupId);
|
|
imGroupMember.setIsAdmin(isAdmin);
|
|
imGroupMember.setIsAdmin(isAdmin);
|
|
|
|
+ SysUser user = teacherDao.getUser(userId);
|
|
imGroupMember.setRoleType(roleType);
|
|
imGroupMember.setRoleType(roleType);
|
|
|
|
+ if(StringUtils.isNotEmpty(roleType)){
|
|
|
|
+ imGroupMember.setType(EFriendRoleType.getByName(roleType).name());
|
|
|
|
+ imGroupMember.setNickname(StringUtils.isEmpty(user.getRealName())?user.getUsername():user.getRealName());
|
|
|
|
+ }else {
|
|
|
|
+ imGroupMember.setNickname(StringUtils.isEmpty(user.getUsername())?user.getRealName():user.getUsername());
|
|
|
|
+ }
|
|
imGroupMember.setUpdateTime(date);
|
|
imGroupMember.setUpdateTime(date);
|
|
imGroupMember.setUserId(userId);
|
|
imGroupMember.setUserId(userId);
|
|
-// if (StringUtils.isBlank(roleType)) {
|
|
|
|
-// imGroupMember.setNickname(user.getUsername()==null?user.getRealName():user.getUsername());
|
|
|
|
-// } else {
|
|
|
|
-// imGroupMember.setNickname(user.getRealName()==null?user.getUsername():user.getRealName());
|
|
|
|
-// }
|
|
|
|
- SysUser user = teacherDao.getUser(userId);
|
|
|
|
- imGroupMember.setNickname(sysUserService.getImName(user));
|
|
|
|
|
|
+ //初始化群主数据
|
|
|
|
+ this.initImGroupMember(imGroupMember,imGroup.getGroupType());
|
|
|
|
|
|
imGroupMemberDao.insert(imGroupMember);
|
|
imGroupMemberDao.insert(imGroupMember);
|
|
|
|
|
|
@@ -177,11 +183,13 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
|
|
|
|
|
|
groupMembers.add(ImGroupMemberWrapper.ImGroupMember.builder()
|
|
groupMembers.add(ImGroupMemberWrapper.ImGroupMember.builder()
|
|
.groupId(groupId)
|
|
.groupId(groupId)
|
|
- .isAdmin(isAdmin)
|
|
|
|
- .roleType(roleType)
|
|
|
|
|
|
+ .isAdmin(imGroupMember.getIsAdmin())
|
|
|
|
+ .roleType(imGroupMember.getRoleType())
|
|
|
|
+ .type(imGroupMember.getType())
|
|
.nickname(imGroupMember.getNickname())
|
|
.nickname(imGroupMember.getNickname())
|
|
.userId(userId.longValue())
|
|
.userId(userId.longValue())
|
|
.imUserId(userId.toString())
|
|
.imUserId(userId.toString())
|
|
|
|
+ .groupRoleType(imGroupMember.getGroupRoleType())
|
|
.avatar(sysUserService.getImAvatar(user))
|
|
.avatar(sysUserService.getImAvatar(user))
|
|
.updateTime(DateTime.now().toDate())
|
|
.updateTime(DateTime.now().toDate())
|
|
.createTime(DateTime.now().toDate())
|
|
.createTime(DateTime.now().toDate())
|
|
@@ -196,6 +204,133 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
+ public void initImGroupMember(ImGroupMember imGroupMember, ImGroup.GroupTypeEnum groupType){
|
|
|
|
+ try {
|
|
|
|
+ List<GroupMemberWrapper.Member> members = imPluginContext.getPluginService().groupUserGagList(imGroupMember.getImGroupId());
|
|
|
|
+ if(CollectionUtils.isNotEmpty(members)){
|
|
|
|
+ List<String> imGroupUserIds = members.stream().map(e -> e.getId()).collect(Collectors.toList());
|
|
|
|
+ if(CollectionUtils.isNotEmpty(imGroupUserIds)){
|
|
|
|
+ if(imGroupUserIds.contains(imGroupMember.getUserId().toString())){
|
|
|
|
+ imGroupMember.setMuteFlag(true);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ throw new RuntimeException(e);
|
|
|
|
+ }
|
|
|
|
+ //是否有群主
|
|
|
|
+ if(!imGroupMember.getIsAdmin()){
|
|
|
|
+ ImGroupMember admin = imGroupMemberDao.getAdmin(imGroupMember.getImGroupId());
|
|
|
|
+ if(Objects.nonNull(admin)){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ switch (groupType) {
|
|
|
|
+ case NORMAL:
|
|
|
|
+ case MIX:
|
|
|
|
+ case HIGH:
|
|
|
|
+ case SNAP:
|
|
|
|
+ case HIGH_ONLINE:
|
|
|
|
+ case MUSIC_NETWORK:
|
|
|
|
+ case PARENT_MEETING:
|
|
|
|
+ if("乐团主管".equals(imGroupMember.getRoleType())){
|
|
|
|
+ imGroupMember.setIsAdmin(true);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case VIP:
|
|
|
|
+ case DEMO:
|
|
|
|
+ case PRACTICE:
|
|
|
|
+ case COMM:
|
|
|
|
+ case REPERTOIRE_PLAY:
|
|
|
|
+ case LIVE:
|
|
|
|
+ if("指导老师".equals(imGroupMember.getRoleType())){
|
|
|
|
+ imGroupMember.setIsAdmin(true);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case TRAINING:
|
|
|
|
+ if("分部经理".equals(imGroupMember.getRoleType())){
|
|
|
|
+ imGroupMember.setIsAdmin(true);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case SCHOOL:
|
|
|
|
+ if("乐团领队".equals(imGroupMember.getRoleType())){
|
|
|
|
+ imGroupMember.setIsAdmin(true);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void initImGroupMembers(List<ImGroupMember> imGroupMembers, ImGroup.GroupTypeEnum groupType){
|
|
|
|
+ if (CollectionUtils.isEmpty(imGroupMembers)) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ String imGroupId = imGroupMembers.get(0).getImGroupId();
|
|
|
|
+ try {
|
|
|
|
+ List<GroupMemberWrapper.Member> members = imPluginContext.getPluginService().groupUserGagList(imGroupId);
|
|
|
|
+ if(CollectionUtils.isNotEmpty(members)){
|
|
|
|
+ List<String> imGroupUserIds = members.stream().map(e -> e.getId()).collect(Collectors.toList());
|
|
|
|
+ if(CollectionUtils.isNotEmpty(imGroupUserIds)){
|
|
|
|
+ for (ImGroupMember imGroupMember : imGroupMembers) {
|
|
|
|
+ if(imGroupUserIds.contains(imGroupMember.getUserId().toString())){
|
|
|
|
+ imGroupMember.setMuteFlag(true);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ throw new RuntimeException(e);
|
|
|
|
+ }
|
|
|
|
+ //是否有群主
|
|
|
|
+ long count = imGroupMembers.stream().filter(e -> e.getIsAdmin()).count();
|
|
|
|
+ if(count > 0){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ ImGroupMember admin = imGroupMemberDao.getAdmin(imGroupId);
|
|
|
|
+ if(Objects.nonNull(admin)){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ for (ImGroupMember imGroupMember : imGroupMembers) {
|
|
|
|
+ switch (groupType) {
|
|
|
|
+ case NORMAL:
|
|
|
|
+ case MIX:
|
|
|
|
+ case HIGH:
|
|
|
|
+ case SNAP:
|
|
|
|
+ case HIGH_ONLINE:
|
|
|
|
+ case MUSIC_NETWORK:
|
|
|
|
+ case PARENT_MEETING:
|
|
|
|
+ if("乐团主管".equals(imGroupMember.getRoleType())){
|
|
|
|
+ imGroupMember.setIsAdmin(true);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case VIP:
|
|
|
|
+ case DEMO:
|
|
|
|
+ case PRACTICE:
|
|
|
|
+ case COMM:
|
|
|
|
+ case REPERTOIRE_PLAY:
|
|
|
|
+ case LIVE:
|
|
|
|
+ if("指导老师".equals(imGroupMember.getRoleType())){
|
|
|
|
+ imGroupMember.setIsAdmin(true);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case TRAINING:
|
|
|
|
+ if("分部经理".equals(imGroupMember.getRoleType())){
|
|
|
|
+ imGroupMember.setIsAdmin(true);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case SCHOOL:
|
|
|
|
+ if("乐团领队".equals(imGroupMember.getRoleType())){
|
|
|
|
+ imGroupMember.setIsAdmin(true);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public boolean join(String imGroupId,String roleType, boolean isAdmin,ImGroup imGroup,SysUser user) {
|
|
public boolean join(String imGroupId,String roleType, boolean isAdmin,ImGroup imGroup,SysUser user) {
|
|
if (imGroup == null) {
|
|
if (imGroup == null) {
|
|
@@ -206,8 +341,8 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
//检查用户是否已存在
|
|
//检查用户是否已存在
|
|
- List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), user.getId().toString());
|
|
|
|
- if(imGroupMemberList != null && imGroupMemberList.size() > 0){
|
|
|
|
|
|
+ List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId, user.getId().toString());
|
|
|
|
+ if(CollectionUtils.isNotEmpty(imGroupMemberList)){
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -218,23 +353,22 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
|
|
imGroupMember.setImGroupId(imGroupId);
|
|
imGroupMember.setImGroupId(imGroupId);
|
|
imGroupMember.setIsAdmin(isAdmin);
|
|
imGroupMember.setIsAdmin(isAdmin);
|
|
imGroupMember.setRoleType(roleType);
|
|
imGroupMember.setRoleType(roleType);
|
|
|
|
+ if(StringUtils.isNotEmpty(roleType)){
|
|
|
|
+ imGroupMember.setType(EFriendRoleType.getByName(roleType).name());
|
|
|
|
+ imGroupMember.setNickname(StringUtils.isEmpty(user.getRealName())?user.getUsername():user.getRealName());
|
|
|
|
+ }else {
|
|
|
|
+ imGroupMember.setNickname(StringUtils.isEmpty(user.getUsername())?user.getRealName():user.getUsername());
|
|
|
|
+ }
|
|
imGroupMember.setUpdateTime(date);
|
|
imGroupMember.setUpdateTime(date);
|
|
imGroupMember.setUserId(user.getId());
|
|
imGroupMember.setUserId(user.getId());
|
|
-// if (StringUtils.isBlank(roleType)) {
|
|
|
|
-// imGroupMember.setNickname(user.getUsername()==null?user.getRealName():user.getUsername());
|
|
|
|
-// } else {
|
|
|
|
-// imGroupMember.setNickname(user.getRealName()==null?user.getUsername():user.getRealName());
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- imGroupMember.setNickname(sysUserService.getImName(user));
|
|
|
|
|
|
+ this.initImGroupMember(imGroupMember,imGroup.getGroupType());
|
|
imGroupMemberDao.insert(imGroupMember);
|
|
imGroupMemberDao.insert(imGroupMember);
|
|
|
|
|
|
imGroup.setMemberNum(1);
|
|
imGroup.setMemberNum(1);
|
|
imGroup.setUpdateTime(date);
|
|
imGroup.setUpdateTime(date);
|
|
imGroupDao.update(imGroup);
|
|
imGroupDao.update(imGroup);
|
|
|
|
|
|
- String groupId = imGroup.getId().toString();
|
|
|
|
|
|
+ String groupId = imGroup.getId();
|
|
|
|
|
|
if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
|
|
if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
|
|
// 融云IM用户加群
|
|
// 融云IM用户加群
|
|
@@ -251,7 +385,9 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
|
|
.imUserId(imGroupMember.getUserId().toString())
|
|
.imUserId(imGroupMember.getUserId().toString())
|
|
.nickname(imGroupMember.getNickname())
|
|
.nickname(imGroupMember.getNickname())
|
|
.isAdmin(imGroupMember.getIsAdmin())
|
|
.isAdmin(imGroupMember.getIsAdmin())
|
|
|
|
+ .groupRoleType(imGroupMember.getGroupRoleType())
|
|
.roleType(imGroupMember.getRoleType())
|
|
.roleType(imGroupMember.getRoleType())
|
|
|
|
+ .type(imGroupMember.getType())
|
|
.avatar(sysUserService.getImAvatar(user))
|
|
.avatar(sysUserService.getImAvatar(user))
|
|
.build());
|
|
.build());
|
|
// 腾讯云IM用户加群
|
|
// 腾讯云IM用户加群
|
|
@@ -299,11 +435,12 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
|
|
if(StringUtils.isEmpty(entry.getValue())){
|
|
if(StringUtils.isEmpty(entry.getValue())){
|
|
usernameIds.add(entry.getKey());
|
|
usernameIds.add(entry.getKey());
|
|
}else {
|
|
}else {
|
|
|
|
+ imGroupMember.setType(EFriendRoleType.getByName(entry.getValue()).name());
|
|
realNameIds.add(entry.getKey());
|
|
realNameIds.add(entry.getKey());
|
|
}
|
|
}
|
|
imGroupMember.setUpdateTime(date);
|
|
imGroupMember.setUpdateTime(date);
|
|
imGroupMember.setUserId(entry.getKey());
|
|
imGroupMember.setUserId(entry.getKey());
|
|
-// imGroupMember.setNickname(nameIdMap.get(imGroupMember.getUserId()));
|
|
|
|
|
|
+ this.initImGroupMember(imGroupMember,imGroup.getGroupType());
|
|
imGroupMemberList.add(imGroupMember);
|
|
imGroupMemberList.add(imGroupMember);
|
|
groupMemberList.add(new GroupMember(imGroupMember.getUserId().toString(), groupId));
|
|
groupMemberList.add(new GroupMember(imGroupMember.getUserId().toString(), groupId));
|
|
|
|
|
|
@@ -313,20 +450,23 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
|
|
.userId(imGroupMember.getUserId().longValue())
|
|
.userId(imGroupMember.getUserId().longValue())
|
|
.imUserId(imGroupMember.getUserId().toString())
|
|
.imUserId(imGroupMember.getUserId().toString())
|
|
.isAdmin(imGroupMember.getIsAdmin())
|
|
.isAdmin(imGroupMember.getIsAdmin())
|
|
|
|
+ .nickname(imGroupMember.getNickname())
|
|
|
|
+ .groupRoleType(imGroupMember.getGroupRoleType())
|
|
.roleType(imGroupMember.getRoleType())
|
|
.roleType(imGroupMember.getRoleType())
|
|
|
|
+ .type(imGroupMember.getType())
|
|
.updateTime(imGroupMember.getUpdateTime())
|
|
.updateTime(imGroupMember.getUpdateTime())
|
|
.createTime(imGroupMember.getCreateTime())
|
|
.createTime(imGroupMember.getCreateTime())
|
|
.build());
|
|
.build());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- if (imGroupMemberList.size() > 0) {
|
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(imGroupMemberList)) {
|
|
Map<Integer, String> usernameMap = new HashMap<>();
|
|
Map<Integer, String> usernameMap = new HashMap<>();
|
|
Map<Integer, String> realNameMap = new HashMap<>();
|
|
Map<Integer, String> realNameMap = new HashMap<>();
|
|
- if(usernameIds.size() > 0){
|
|
|
|
|
|
+ if(CollectionUtils.isNotEmpty(usernameIds)){
|
|
usernameMap = MapUtil.convertIntegerMap(teacherDao.queryUserNameByIdList(usernameIds));
|
|
usernameMap = MapUtil.convertIntegerMap(teacherDao.queryUserNameByIdList(usernameIds));
|
|
}
|
|
}
|
|
- if(realNameIds.size() > 0){
|
|
|
|
|
|
+ if(CollectionUtils.isNotEmpty(realNameIds)){
|
|
realNameMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(realNameIds));
|
|
realNameMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(realNameIds));
|
|
}
|
|
}
|
|
for (ImGroupMember imGroupMember : imGroupMemberList) {
|
|
for (ImGroupMember imGroupMember : imGroupMemberList) {
|
|
@@ -336,6 +476,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
|
|
imGroupMember.setNickname(realNameMap.get(imGroupMember.getUserId()));
|
|
imGroupMember.setNickname(realNameMap.get(imGroupMember.getUserId()));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ this.initImGroupMembers(imGroupMemberList,imGroup.getGroupType());
|
|
imGroupMemberDao.batchInsert(imGroupMemberList);
|
|
imGroupMemberDao.batchInsert(imGroupMemberList);
|
|
imGroup.setMemberNum(imGroupMemberList.size());
|
|
imGroup.setMemberNum(imGroupMemberList.size());
|
|
imGroup.setUpdateTime(date);
|
|
imGroup.setUpdateTime(date);
|
|
@@ -346,19 +487,19 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
|
|
imFeignService.groupJoin(new GroupModel(groupId, groupMemberList.stream().toArray(GroupMember[]::new), imGroup.getName()));
|
|
imFeignService.groupJoin(new GroupModel(groupId, groupMemberList.stream().toArray(GroupMember[]::new), imGroup.getName()));
|
|
} else {
|
|
} else {
|
|
try {
|
|
try {
|
|
|
|
+ List<SysUser> userList = teacherDao.getUserList(groupMembers.stream().map(e -> e.getUserId()).collect(Collectors.toList()));
|
|
|
|
+ Map<Integer,SysUser> userMap = userList.stream().collect(Collectors.toMap(SysUser::getId, e -> e));
|
|
for (ImGroupMemberWrapper.ImGroupMember item : groupMembers) {
|
|
for (ImGroupMemberWrapper.ImGroupMember item : groupMembers) {
|
|
- // 用户昵称
|
|
|
|
-// if (StringUtils.isBlank(item.getRoleType())) {
|
|
|
|
-// item.setNickname(usernameMap.get(item.getUserId().intValue()));
|
|
|
|
-// } else {
|
|
|
|
-// item.setNickname(realNameMap.get(item.getUserId().intValue()));
|
|
|
|
-// }
|
|
|
|
-// item.setImUserId(item.getUserId().toString());
|
|
|
|
- SysUser user = teacherDao.getUser(item.getUserId().intValue());
|
|
|
|
-
|
|
|
|
- // 用户头像
|
|
|
|
- item.setAvatar(sysUserService.getImAvatar(user));
|
|
|
|
- item.setNickname(sysUserService.getImName(user));
|
|
|
|
|
|
+ SysUser user = userMap.get(item.getUserId().intValue());
|
|
|
|
+ if (user != null) {
|
|
|
|
+ // 用户头像
|
|
|
|
+ item.setAvatar(sysUserService.getImAvatar(user));
|
|
|
|
+ if(StringUtils.isNotEmpty(item.getRoleType())){
|
|
|
|
+ item.setNickname(StringUtils.isEmpty(user.getRealName())?user.getUsername():user.getRealName());
|
|
|
|
+ }else {
|
|
|
|
+ item.setNickname(StringUtils.isEmpty(user.getUsername())?user.getRealName():user.getUsername());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
// 腾讯云IM用户加群
|
|
// 腾讯云IM用户加群
|
|
imGroupCoreService.groupMemberJoin(groupId, groupMembers);
|
|
imGroupCoreService.groupMemberJoin(groupId, groupMembers);
|
|
@@ -382,15 +523,6 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
- public boolean quit(List<String> imGroupIdList, Integer userId) {
|
|
|
|
- for (String imGroupId : imGroupIdList) {
|
|
|
|
- quit(imGroupId, userId);
|
|
|
|
- }
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
public boolean quit(String imGroupId, List<Integer> userIdList) {
|
|
public boolean quit(String imGroupId, List<Integer> userIdList) {
|
|
|
|
|
|
ImGroup imGroup = imGroupDao.getLocked(imGroupId);
|
|
ImGroup imGroup = imGroupDao.getLocked(imGroupId);
|
|
@@ -446,20 +578,31 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
|
|
public boolean updateRoleType(String imGroupId, Integer userId, String roleType) {
|
|
public boolean updateRoleType(String imGroupId, Integer userId, String roleType) {
|
|
List<Integer> userIdList = new ArrayList<Integer>();
|
|
List<Integer> userIdList = new ArrayList<Integer>();
|
|
userIdList.add(userId);
|
|
userIdList.add(userId);
|
|
- List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userIdList.stream().map(Objects::toString)
|
|
|
|
|
|
+ List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId, userIdList.stream().map(Objects::toString)
|
|
.collect(Collectors.joining(",")));
|
|
.collect(Collectors.joining(",")));
|
|
|
|
|
|
- if (imGroupMemberList == null || imGroupMemberList.size() == 0) {
|
|
|
|
|
|
+ if (CollectionUtils.isEmpty(imGroupMemberList)) {
|
|
throw new BizException("更新失败:找不到用户信息");
|
|
throw new BizException("更新失败:找不到用户信息");
|
|
}
|
|
}
|
|
-
|
|
|
|
Date date = new Date();
|
|
Date date = new Date();
|
|
- for (ImGroupMember imGroupMember : imGroupMemberList) {
|
|
|
|
- imGroupMember.setRoleType(roleType);
|
|
|
|
- imGroupMember.setUpdateTime(date);
|
|
|
|
|
|
+ ImGroupMember imGroupMember = imGroupMemberList.get(0);
|
|
|
|
+ imGroupMember.setGroupRoleType(null);
|
|
|
|
+ imGroupMember.setRoleType(roleType);
|
|
|
|
+ imGroupMember.setType(EFriendRoleType.getByName(roleType).name());
|
|
|
|
+ imGroupMember.setUpdateTime(date);
|
|
|
|
+ ImGroup group = imGroupDao.get(imGroupId);
|
|
|
|
+ if(!imGroupMember.getIsAdmin()){
|
|
|
|
+ this.initImGroupMembers(imGroupMemberList,group.getGroupType());
|
|
|
|
+ if(imGroupMember.getIsAdmin()){
|
|
|
|
+ try {
|
|
|
|
+ imPluginContext.getPluginService().changeGroupOwner(imGroupId,imGroupMember.getUserId().toString(),null);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error(e.getMessage());
|
|
|
|
+ throw new BizException("更新失败:设置群主异常");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- imGroupMemberDao.batchUpdate(imGroupMemberList);
|
|
|
|
-
|
|
|
|
|
|
+ imGroupMemberDao.update(imGroupMember);
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -468,33 +611,23 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
|
|
imGroupMemberDao.batchInsert(imGroupMemberList);
|
|
imGroupMemberDao.batchInsert(imGroupMemberList);
|
|
}
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
|
- public void batchDelete(List<ImGroupMember> imGroupMemberList) {
|
|
|
|
- imGroupMemberDao.batchDelete(imGroupMemberList);
|
|
|
|
- }
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void batchDeleteByGroupIdAndUserId(List<ImGroupMember> imGroupMemberList) {
|
|
public void batchDeleteByGroupIdAndUserId(List<ImGroupMember> imGroupMemberList) {
|
|
imGroupMemberDao.batchDeleteByGroupIdAndUserId(imGroupMemberList);
|
|
imGroupMemberDao.batchDeleteByGroupIdAndUserId(imGroupMemberList);
|
|
}
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
|
- public boolean isExit(String groupId, String userId) {
|
|
|
|
- return imGroupMemberDao.isExit(groupId,userId);
|
|
|
|
- }
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void delRepeat() {
|
|
public void delRepeat() {
|
|
imGroupMemberDao.delRepeat();
|
|
imGroupMemberDao.delRepeat();
|
|
}
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
|
- public List<ImGroupMember> queryMembers(String groupId, List<String> userIdList, Integer tenantId) {
|
|
|
|
- return imGroupMemberDao.queryMembers(groupId, userIdList, tenantId);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public PageInfo<ImGroupMemberDto> queryGroupMemberPage(GroupMemberQueryInfo queryInfo) {
|
|
public PageInfo<ImGroupMemberDto> queryGroupMemberPage(GroupMemberQueryInfo queryInfo) {
|
|
|
|
+ if(StringUtils.isEmpty(queryInfo.getImGroupId())){
|
|
|
|
+ throw new BizException("参数校验失败");
|
|
|
|
+ }
|
|
PageInfo<ImGroupMemberDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|
|
PageInfo<ImGroupMemberDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|
|
Map<String, Object> params = new HashMap<String, Object>();
|
|
Map<String, Object> params = new HashMap<String, Object>();
|
|
MapUtil.populateMap(params, queryInfo);
|
|
MapUtil.populateMap(params, queryInfo);
|
|
@@ -520,4 +653,95 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
|
|
userIds.stream().forEach(e->userRoleMap.put(e,roleType));
|
|
userIds.stream().forEach(e->userRoleMap.put(e,roleType));
|
|
this.join(imGroupId,userRoleMap);
|
|
this.join(imGroupId,userRoleMap);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void groupMemberMute(ImGroupMemberWrapper.GroupMemberMute member) {
|
|
|
|
+ try {
|
|
|
|
+ // 更新群成员禁言状态
|
|
|
|
+ imGroupMemberDao.updateGroupMemberMute(member.getGroupId(), member.getUserIds(), member.getGroupMute());
|
|
|
|
+ ImPluginService pluginService = imPluginContext.getPluginService();
|
|
|
|
+ if (member.getGroupMute()) {
|
|
|
|
+ // 群成员禁言
|
|
|
|
+ pluginService.groupUserGagCreate(member.getUserIds(), member.getGroupId(), -1L);
|
|
|
|
+ } else {
|
|
|
|
+ // 群成员解除禁言
|
|
|
|
+ pluginService.groupUserGagRemove(member.getUserIds(), member.getGroupId());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("群成员禁言失败", e);
|
|
|
|
+ throw com.microsvc.toolkit.common.webportal.exception.BizException.from("群成员禁言失败,请联系管理员!");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void groupMemberRole(ImGroupMemberWrapper.GroupMemberRole member) {
|
|
|
|
+ try {
|
|
|
|
+ // 更新群成员角色
|
|
|
|
+ imGroupMemberDao.batchUpdateGroupMemberRole(member.getGroupId(), member.getUserIds(), member.getGroupRoleType().getCode());
|
|
|
|
+
|
|
|
|
+ for (List<String> items : Lists.partition(member.getUserIds(), 50)) {
|
|
|
|
+
|
|
|
|
+ items.parallelStream().forEach(item -> {
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ ImPluginService pluginService = imPluginContext.getPluginService();
|
|
|
|
+ switch (member.getGroupRoleType()) {
|
|
|
|
+ case Owner:
|
|
|
|
+ // 设置群主
|
|
|
|
+ pluginService.changeGroupOwner(member.getGroupId(), item,null);
|
|
|
|
+ break;
|
|
|
|
+ case Admin:
|
|
|
|
+ // 设置管理员
|
|
|
|
+ pluginService.groupAdminCreate(member.getGroupId(), item);
|
|
|
|
+ break;
|
|
|
|
+ case Member:
|
|
|
|
+ // 取消管理员
|
|
|
|
+ pluginService.groupAdminRemove(member.getGroupId(), item);
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("群成员身份更新异常", e);
|
|
|
|
+ throw com.microsvc.toolkit.common.webportal.exception.BizException.from("群成员身份更新异常,请联系管理员!");
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("群成员身份更新异常", e);
|
|
|
|
+ throw com.microsvc.toolkit.common.webportal.exception.BizException.from("群成员身份更新异常,请联系管理员!");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void groupMemberRole1(ImGroupMemberWrapper.GroupMemberRole member) {
|
|
|
|
+ ImPluginService pluginService = imPluginContext.getPluginService();
|
|
|
|
+ try {
|
|
|
|
+ for (String userId : member.getUserIds()) {
|
|
|
|
+ switch (member.getGroupRoleType()) {
|
|
|
|
+ case Owner:
|
|
|
|
+ // 设置群主
|
|
|
|
+ pluginService.changeGroupOwner(member.getGroupId(), userId,null);
|
|
|
|
+ break;
|
|
|
|
+ case Admin:
|
|
|
|
+ // 设置管理员
|
|
|
|
+ pluginService.groupAdminCreate(member.getGroupId(), userId);
|
|
|
|
+ break;
|
|
|
|
+ case Member:
|
|
|
|
+ // 取消管理员
|
|
|
|
+ pluginService.groupAdminRemove(member.getGroupId(), userId);
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ imGroupMemberDao.batchUpdateGroupMemberRole(member.getGroupId(), member.getUserIds(), member.getGroupRoleType().getCode());
|
|
|
|
+ }catch (Exception e) {
|
|
|
|
+ log.error("群成员身份更新异常", e);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|