|  | @@ -6,6 +6,7 @@ import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  import com.google.common.collect.Lists;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dao.*;
 | 
	
		
			
				|  |  |  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.school.ESchoolStaffType;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.mapper.SchoolStaffMapper;
 | 
	
	
		
			
				|  | @@ -212,10 +213,24 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 | 
	
		
			
				|  |  |                  List<ImGroupMember> memberList = imGroupMemberDao.getByGroupId(imGroupIds);
 | 
	
		
			
				|  |  |                  if (CollectionUtils.isNotEmpty(memberList)) {
 | 
	
		
			
				|  |  |                      Long staffUserId = schoolStaff.getUserId();
 | 
	
		
			
				|  |  | +                    // 设置角色
 | 
	
		
			
				|  |  | +                    memberList = memberList.stream().map(o -> {
 | 
	
		
			
				|  |  | +                        if (StringUtils.isBlank(o.getRoleType())) {
 | 
	
		
			
				|  |  | +                            o.setRoleType(EFriendRoleType.STUDENT.name());
 | 
	
		
			
				|  |  | +                        } else {
 | 
	
		
			
				|  |  | +                            o.setRoleType(EFriendRoleType.getByName(o.getRoleType()).name());
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        return o;
 | 
	
		
			
				|  |  | +                    }).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    // ID toMap roleType
 | 
	
		
			
				|  |  | +                    Map<Integer, String> roleTypeMap = memberList.stream().collect(Collectors.toMap(ImGroupMember::getUserId, ImGroupMember::getRoleType,(k1,k2) -> k2));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      Set<Integer> userIds = memberList.stream().map(ImGroupMember::getUserId)
 | 
	
		
			
				|  |  |                              .collect(Collectors.toSet());
 | 
	
		
			
				|  |  | -                    userFriends(imUserFriends, musicGroup.getName(), staffUserId, userIds);
 | 
	
		
			
				|  |  | +                    userFriends(imUserFriends, musicGroup, staffUserId, userIds,roleTypeMap);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              // 更新学校端好友列表
 | 
	
	
		
			
				|  | @@ -356,10 +371,16 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 | 
	
		
			
				|  |  |                      .collect(Collectors.toSet());
 | 
	
		
			
				|  |  |              usernameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(userIds)));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            // ID toMap userType
 | 
	
		
			
				|  |  | +            Map<Integer, String> roleTypeMap = schoolStaffs.stream()
 | 
	
		
			
				|  |  | +                    .collect(Collectors.toMap(o -> o.getUserId().intValue(), o -> EFriendRoleType.getByName(o.getUserType().getCode()).name(),(k1,k2) -> k2));
 | 
	
		
			
				|  |  |              // 设置好友关系
 | 
	
		
			
				|  |  |              for (Integer userId : userIds) {
 | 
	
		
			
				|  |  |                  this.addImUserFriend(userIds, null, usernameMap, null, userId, imUserFriends);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            for (ImUserFriend imUserFriend : imUserFriends) {
 | 
	
		
			
				|  |  | +                imUserFriend.setRoleType(roleTypeMap.get(imUserFriend.getFriendId()));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return imUserFriends;
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -380,23 +401,52 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    private void userFriends(List<ImUserFriend> imUserFriends, String musicGroupName, Long userId, Set<Integer> userIds) {
 | 
	
		
			
				|  |  | +    private void userFriends(List<ImUserFriend> imUserFriends, MusicGroup musicGroup, Long userId, Set<Integer> userIds,Map<Integer, String> roleTypeMap) {
 | 
	
		
			
				|  |  |          Map<Integer, String> usernameMap;
 | 
	
		
			
				|  |  |          if (CollectionUtils.isNotEmpty(userIds)) {
 | 
	
		
			
				|  |  |              usernameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(userIds)));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            //获取当前学员声部
 | 
	
		
			
				|  |  | +            Map<Integer,String> studentSubjectName = new HashMap<>();
 | 
	
		
			
				|  |  | +            Map<Integer, String> teacherSubjectNameMap = new HashMap<>();
 | 
	
		
			
				|  |  | +            List<Integer> studentIds = new ArrayList<>();
 | 
	
		
			
				|  |  | +            List<Integer> teacherIds = new ArrayList<>();
 | 
	
		
			
				|  |  | +            for (Integer id : userIds) {
 | 
	
		
			
				|  |  | +                if( EFriendRoleType.STUDENT.name().equals(roleTypeMap.get(id))){
 | 
	
		
			
				|  |  | +                    studentIds.add(id);
 | 
	
		
			
				|  |  | +                }else if (EFriendRoleType.ORCHESTRA_TEACHER.name().equals(roleTypeMap.get(id))){
 | 
	
		
			
				|  |  | +                    teacherIds.add(id);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if(studentIds.size() > 0){
 | 
	
		
			
				|  |  | +                studentSubjectName = MapUtil.convertMybatisMap(studentRegistrationDao.getStudentSubjectNameByStuIds(musicGroup.getId(),studentIds));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if(teacherIds.size() > 0){
 | 
	
		
			
				|  |  | +                teacherSubjectNameMap = MapUtil.convertIntegerMap(teacherDao.querySubjectNameByIdList(new ArrayList<>(teacherIds)));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            studentSubjectName.putAll(teacherSubjectNameMap);
 | 
	
		
			
				|  |  |              // 设置好友关系
 | 
	
		
			
				|  |  | -            this.addImUserFriend(userIds,null,usernameMap, musicGroupName, userId.intValue(), imUserFriends);
 | 
	
		
			
				|  |  | +            this.addImUserFriend(userIds,studentSubjectName,usernameMap, musicGroup.getName(), userId.intValue(), imUserFriends);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              for (Integer user : userIds) {
 | 
	
		
			
				|  |  |                  // 设置好友关系
 | 
	
		
			
				|  |  |                  this.addImUserFriend(new HashSet<>(Lists.newArrayList(
 | 
	
		
			
				|  |  | -                        userId.intValue())),null,usernameMap, musicGroupName,user, imUserFriends);
 | 
	
		
			
				|  |  | +                        userId.intValue())),null,usernameMap, musicGroup.getName(),user, imUserFriends,roleTypeMap);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void addImUserFriend(Set<Integer> friendUserIds,Map<Integer,String> tagsMap,
 | 
	
		
			
				|  |  | +                                Map<Integer,String> nameMap,String memo,Integer userId,List<ImUserFriend> imUserFriends,Map<Integer,String> roleTypeMap) {
 | 
	
		
			
				|  |  | +        addImUserFriend(friendUserIds,tagsMap,nameMap,memo,userId,imUserFriends);
 | 
	
		
			
				|  |  | +        for (ImUserFriend imUserFriend : imUserFriends) {
 | 
	
		
			
				|  |  | +            imUserFriend.setRoleType(roleTypeMap.get(imUserFriend.getFriendId()));
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public void addImUserFriend(Set<Integer> friendUserIds,Map<Integer,String> tagsMap,
 | 
	
		
			
				|  |  |                                  Map<Integer,String> nameMap,String memo,Integer userId,List<ImUserFriend> imUserFriends){
 | 
	
		
			
				|  |  |          if(friendUserIds != null && friendUserIds.size() > 0){
 | 
	
		
			
				|  |  |              for (Integer friendId : friendUserIds) {
 |