|  | @@ -3,13 +3,14 @@ package com.ym.mec.biz.service.impl;
 | 
	
		
			
				|  |  |  import com.alibaba.fastjson.JSON;
 | 
	
		
			
				|  |  |  import com.google.common.collect.Lists;
 | 
	
		
			
				|  |  |  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.message.GroupMemberWrapper;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dao.*;
 | 
	
		
			
				|  |  |  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.enums.EFriendRoleType;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.enums.GroupType;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.page.GroupMemberQueryInfo;
 | 
	
		
			
				|  |  |  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.util.collection.MapUtil;
 | 
	
		
			
				|  |  |  import lombok.extern.slf4j.Slf4j;
 | 
	
		
			
				|  |  | +import org.apache.commons.collections.CollectionUtils;
 | 
	
		
			
				|  |  |  import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.joda.time.DateTime;
 | 
	
		
			
				|  |  | -import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import javax.annotation.Resource;
 | 
	
		
			
				|  |  |  import java.util.*;
 | 
	
		
			
				|  |  |  import java.util.Map.Entry;
 | 
	
		
			
				|  |  |  import java.util.stream.Collectors;
 | 
	
	
		
			
				|  | @@ -39,41 +41,40 @@ import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  @Slf4j
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMember> implements ImGroupMemberService {
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | +	@Resource
 | 
	
		
			
				|  |  |  	private ImGroupMemberDao imGroupMemberDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | +	@Resource
 | 
	
		
			
				|  |  |  	private ImGroupDao imGroupDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | +	@Resource
 | 
	
		
			
				|  |  |  	private ImGroupService imGroupService;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | +	@Resource
 | 
	
		
			
				|  |  |  	private TeacherDao teacherDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | +	@Resource
 | 
	
		
			
				|  |  |  	private ClassGroupDao classGroupDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | +	@Resource
 | 
	
		
			
				|  |  |  	private MusicGroupDao musicGroupDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | +	@Resource
 | 
	
		
			
				|  |  |  	private PracticeGroupDao practiceGroupDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | +	@Resource
 | 
	
		
			
				|  |  |  	private VipGroupDao vipGroupDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | +	@Resource
 | 
	
		
			
				|  |  |  	private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | +	@Resource
 | 
	
		
			
				|  |  |  	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | +	@Resource
 | 
	
		
			
				|  |  |  	private ImFeignService imFeignService;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | +	@Resource
 | 
	
		
			
				|  |  |  	private ImGroupCoreService imGroupCoreService;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | +	@Resource
 | 
	
		
			
				|  |  |  	private ImPluginContext imPluginContext;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    @Autowired
 | 
	
		
			
				|  |  | +    @Resource
 | 
	
		
			
				|  |  |      private SysUserService sysUserService;
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	public BaseDAO<Long, ImGroupMember> getDAO() {
 | 
	
		
			
				|  |  |  		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);
 | 
	
		
			
				|  |  |  		ClassGroup classGroup = classGroupDao.get(groupId);
 | 
	
		
			
				|  |  |  		String tags = classGroup.getName();
 | 
	
	
		
			
				|  | @@ -119,13 +120,17 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  			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()));
 | 
	
		
			
				|  |  |  		if(userId != null){
 | 
	
		
			
				|  |  |  			join(imGroupId,userId,roleType,isAdmin);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		join(imGroupId,userRoleMap);
 | 
	
		
			
				|  |  | -		return imGroup;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	@Override
 | 
	
		
			
				|  |  | +	public ImGroupMemberDao getDao() {
 | 
	
		
			
				|  |  | +		return imGroupMemberDao;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
	
		
			
				|  | @@ -137,27 +142,28 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 | 
	
		
			
				|  |  |  			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;
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  		ImGroupMember imGroupMember = new ImGroupMember();
 | 
	
		
			
				|  |  |  		Date date = new Date();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +		imGroupMember.setGroupType(imGroup.getGroupType());
 | 
	
		
			
				|  |  |  		imGroupMember.setCreateTime(date);
 | 
	
		
			
				|  |  |  		imGroupMember.setImGroupId(imGroupId);
 | 
	
		
			
				|  |  |  		imGroupMember.setIsAdmin(isAdmin);
 | 
	
		
			
				|  |  | +		SysUser user = teacherDao.getUser(userId);
 | 
	
		
			
				|  |  |  		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.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);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -177,11 +183,13 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  				groupMembers.add(ImGroupMemberWrapper.ImGroupMember.builder()
 | 
	
		
			
				|  |  |  						.groupId(groupId)
 | 
	
		
			
				|  |  | -						.isAdmin(isAdmin)
 | 
	
		
			
				|  |  | -						.roleType(roleType)
 | 
	
		
			
				|  |  | +						.isAdmin(imGroupMember.getIsAdmin())
 | 
	
		
			
				|  |  | +						.roleType(imGroupMember.getRoleType())
 | 
	
		
			
				|  |  | +						.type(imGroupMember.getType())
 | 
	
		
			
				|  |  |  						.nickname(imGroupMember.getNickname())
 | 
	
		
			
				|  |  |  						.userId(userId.longValue())
 | 
	
		
			
				|  |  |  						.imUserId(userId.toString())
 | 
	
		
			
				|  |  | +						.groupRoleType(imGroupMember.getGroupRoleType())
 | 
	
		
			
				|  |  |  						.avatar(sysUserService.getImAvatar(user))
 | 
	
		
			
				|  |  |  						.updateTime(DateTime.now().toDate())
 | 
	
		
			
				|  |  |  						.createTime(DateTime.now().toDate())
 | 
	
	
		
			
				|  | @@ -196,6 +204,133 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@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)
 | 
	
		
			
				|  |  |  	public boolean join(String imGroupId,String roleType, boolean isAdmin,ImGroup imGroup,SysUser user) {
 | 
	
		
			
				|  |  |  		if (imGroup == null) {
 | 
	
	
		
			
				|  | @@ -206,8 +341,8 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 | 
	
		
			
				|  |  |  			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;
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -218,23 +353,22 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 | 
	
		
			
				|  |  |  		imGroupMember.setImGroupId(imGroupId);
 | 
	
		
			
				|  |  |  		imGroupMember.setIsAdmin(isAdmin);
 | 
	
		
			
				|  |  |  		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.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);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		imGroup.setMemberNum(1);
 | 
	
		
			
				|  |  |  		imGroup.setUpdateTime(date);
 | 
	
		
			
				|  |  |  		imGroupDao.update(imGroup);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		String groupId = imGroup.getId().toString();
 | 
	
		
			
				|  |  | +		String groupId = imGroup.getId();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
 | 
	
		
			
				|  |  |  			// 融云IM用户加群
 | 
	
	
		
			
				|  | @@ -251,7 +385,9 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 | 
	
		
			
				|  |  |  						.imUserId(imGroupMember.getUserId().toString())
 | 
	
		
			
				|  |  |  						.nickname(imGroupMember.getNickname())
 | 
	
		
			
				|  |  |  						.isAdmin(imGroupMember.getIsAdmin())
 | 
	
		
			
				|  |  | +						.groupRoleType(imGroupMember.getGroupRoleType())
 | 
	
		
			
				|  |  |  						.roleType(imGroupMember.getRoleType())
 | 
	
		
			
				|  |  | +						.type(imGroupMember.getType())
 | 
	
		
			
				|  |  |  						.avatar(sysUserService.getImAvatar(user))
 | 
	
		
			
				|  |  |  					.build());
 | 
	
		
			
				|  |  |  				// 腾讯云IM用户加群
 | 
	
	
		
			
				|  | @@ -299,11 +435,12 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 | 
	
		
			
				|  |  |  			if(StringUtils.isEmpty(entry.getValue())){
 | 
	
		
			
				|  |  |  				usernameIds.add(entry.getKey());
 | 
	
		
			
				|  |  |  			}else {
 | 
	
		
			
				|  |  | +				imGroupMember.setType(EFriendRoleType.getByName(entry.getValue()).name());
 | 
	
		
			
				|  |  |  				realNameIds.add(entry.getKey());
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  			imGroupMember.setUpdateTime(date);
 | 
	
		
			
				|  |  |  			imGroupMember.setUserId(entry.getKey());
 | 
	
		
			
				|  |  | -//			imGroupMember.setNickname(nameIdMap.get(imGroupMember.getUserId()));
 | 
	
		
			
				|  |  | +			this.initImGroupMember(imGroupMember,imGroup.getGroupType());
 | 
	
		
			
				|  |  |  			imGroupMemberList.add(imGroupMember);
 | 
	
		
			
				|  |  |  			groupMemberList.add(new GroupMember(imGroupMember.getUserId().toString(), groupId));
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -313,20 +450,23 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 | 
	
		
			
				|  |  |  					.userId(imGroupMember.getUserId().longValue())
 | 
	
		
			
				|  |  |  					.imUserId(imGroupMember.getUserId().toString())
 | 
	
		
			
				|  |  |  					.isAdmin(imGroupMember.getIsAdmin())
 | 
	
		
			
				|  |  | +					.nickname(imGroupMember.getNickname())
 | 
	
		
			
				|  |  | +					.groupRoleType(imGroupMember.getGroupRoleType())
 | 
	
		
			
				|  |  |  					.roleType(imGroupMember.getRoleType())
 | 
	
		
			
				|  |  | +					.type(imGroupMember.getType())
 | 
	
		
			
				|  |  |  					.updateTime(imGroupMember.getUpdateTime())
 | 
	
		
			
				|  |  |  					.createTime(imGroupMember.getCreateTime())
 | 
	
		
			
				|  |  |  				.build());
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		if (imGroupMemberList.size() > 0) {
 | 
	
		
			
				|  |  | +		if (CollectionUtils.isNotEmpty(imGroupMemberList)) {
 | 
	
		
			
				|  |  |  			Map<Integer, String> usernameMap = new HashMap<>();
 | 
	
		
			
				|  |  |  			Map<Integer, String> realNameMap = new HashMap<>();
 | 
	
		
			
				|  |  | -			if(usernameIds.size() > 0){
 | 
	
		
			
				|  |  | +			if(CollectionUtils.isNotEmpty(usernameIds)){
 | 
	
		
			
				|  |  |  				usernameMap = MapUtil.convertIntegerMap(teacherDao.queryUserNameByIdList(usernameIds));
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | -			if(realNameIds.size() > 0){
 | 
	
		
			
				|  |  | +			if(CollectionUtils.isNotEmpty(realNameIds)){
 | 
	
		
			
				|  |  |  				realNameMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(realNameIds));
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  			for (ImGroupMember imGroupMember : imGroupMemberList) {
 | 
	
	
		
			
				|  | @@ -336,6 +476,7 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 | 
	
		
			
				|  |  |  					imGroupMember.setNickname(realNameMap.get(imGroupMember.getUserId()));
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | +			this.initImGroupMembers(imGroupMemberList,imGroup.getGroupType());
 | 
	
		
			
				|  |  |  			imGroupMemberDao.batchInsert(imGroupMemberList);
 | 
	
		
			
				|  |  |  			imGroup.setMemberNum(imGroupMemberList.size());
 | 
	
		
			
				|  |  |  			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()));
 | 
	
		
			
				|  |  |  			} else {
 | 
	
		
			
				|  |  |  				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) {
 | 
	
		
			
				|  |  | -						// 用户昵称
 | 
	
		
			
				|  |  | -//						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用户加群
 | 
	
		
			
				|  |  |  					imGroupCoreService.groupMemberJoin(groupId, groupMembers);
 | 
	
	
		
			
				|  | @@ -382,15 +523,6 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	@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) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		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) {
 | 
	
		
			
				|  |  |  		List<Integer> userIdList = new ArrayList<Integer>();
 | 
	
		
			
				|  |  |  		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(",")));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		if (imGroupMemberList == null || imGroupMemberList.size() == 0) {
 | 
	
		
			
				|  |  | +		if (CollectionUtils.isEmpty(imGroupMemberList)) {
 | 
	
		
			
				|  |  |  			throw new BizException("更新失败:找不到用户信息");
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  		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;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -468,33 +611,23 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 | 
	
		
			
				|  |  |  		imGroupMemberDao.batchInsert(imGroupMemberList);
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	public void batchDelete(List<ImGroupMember> imGroupMemberList) {
 | 
	
		
			
				|  |  | -		imGroupMemberDao.batchDelete(imGroupMemberList);
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	public void batchDeleteByGroupIdAndUserId(List<ImGroupMember> imGroupMemberList) {
 | 
	
		
			
				|  |  |  		imGroupMemberDao.batchDeleteByGroupIdAndUserId(imGroupMemberList);
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	public boolean isExit(String groupId, String userId) {
 | 
	
		
			
				|  |  | -		return imGroupMemberDao.isExit(groupId,userId);
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	public void delRepeat() {
 | 
	
		
			
				|  |  |  		imGroupMemberDao.delRepeat();
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	public List<ImGroupMember> queryMembers(String groupId, List<String> userIdList, Integer tenantId) {
 | 
	
		
			
				|  |  | -		return imGroupMemberDao.queryMembers(groupId, userIdList, tenantId);
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public PageInfo<ImGroupMemberDto> queryGroupMemberPage(GroupMemberQueryInfo queryInfo) {
 | 
	
		
			
				|  |  | +		if(StringUtils.isEmpty(queryInfo.getImGroupId())){
 | 
	
		
			
				|  |  | +			throw new BizException("参数校验失败");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  		PageInfo<ImGroupMemberDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 | 
	
		
			
				|  |  |  		Map<String, Object> params = new HashMap<String, Object>();
 | 
	
		
			
				|  |  |  		MapUtil.populateMap(params, queryInfo);
 | 
	
	
		
			
				|  | @@ -520,4 +653,95 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 | 
	
		
			
				|  |  |  		userIds.stream().forEach(e->userRoleMap.put(e,roleType));
 | 
	
		
			
				|  |  |  		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);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  }
 |