|  | @@ -316,6 +316,12 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public String create(ImGroupWrapper.ImGroup imGroup) throws Exception {
 | 
	
		
			
				|  |  | +        // 群成员数量限制校验
 | 
	
		
			
				|  |  | +        SysConfig config = sysConfigService.findByParamName(SysConfigConstant.GROUP_MEMBER_LIMIT);
 | 
	
		
			
				|  |  | +        if (config != null && Integer.parseInt(config.getParamValue()) < imGroup.getStudentIdList().size()) {
 | 
	
		
			
				|  |  | +            throw new BizException("群成员人数上限为:" + config.getParamValue() + "人");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          Date now = new Date();
 | 
	
		
			
				|  |  |          if (imGroup.getType() == null) {
 | 
	
		
			
				|  |  |              imGroup.setType(ImGroupType.FAN.getCode());
 | 
	
	
		
			
				|  | @@ -431,13 +437,14 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
 | 
	
		
			
				|  |  |              SysConfig config = sysConfigService.findByParamName(SysConfigConstant.GROUP_MEMBER_LIMIT);
 | 
	
		
			
				|  |  |              if (Objects.nonNull(config) && Integer.parseInt(config.getParamValue()) > 0) {
 | 
	
		
			
				|  |  |                  int groupMemberLimit = Integer.parseInt(config.getParamValue());
 | 
	
		
			
				|  |  | -                if (CollectionUtils.size(studentIds) > groupMemberLimit) {
 | 
	
		
			
				|  |  | +                if ((CollectionUtils.size(studentIds) + 1) > groupMemberLimit) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      // 已加入群组用户标记
 | 
	
		
			
				|  |  |                      List<Long> userIds = Lists.newArrayList(studentIds);
 | 
	
		
			
				|  |  | -                    studentIds = Sets.newHashSet(userIds.subList(0, groupMemberLimit));
 | 
	
		
			
				|  |  | +                    studentIds = Sets.newHashSet(userIds.subList(0, groupMemberLimit - 1));
 | 
	
		
			
				|  |  |                      // 未加入群组用户标记
 | 
	
		
			
				|  |  | -                    noGroupJoinUserIds.addAll(userIds.subList(groupMemberLimit, userIds.size()));
 | 
	
		
			
				|  |  | +                    Set<Long> addStudentIds = studentIds;
 | 
	
		
			
				|  |  | +                    noGroupJoinUserIds.addAll(userIds.stream().filter(n->!addStudentIds.contains(n)).collect(Collectors.toList()));
 | 
	
		
			
				|  |  |                      // 重置用户入群加入标记
 | 
	
		
			
				|  |  |                      courseScheduleStudentPaymentDao.updateGroupJoinStatus(courseGroupId, courseGroupType, false,
 | 
	
		
			
				|  |  |                          noGroupJoinUserIds);
 | 
	
	
		
			
				|  | @@ -445,22 +452,24 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        // 添加学生
 | 
	
		
			
				|  |  | -        List<ImGroupMember> groupMembers = imGroupMemberService.initGroupMembers(groupId, studentIds, ImGroupMemberRoleType.STUDENT);
 | 
	
		
			
				|  |  | -        List<com.yonge.cooleshow.biz.dal.wrapper.im.ImGroupMemberWrapper.ImGroupMember> groupMemberList = Lists.newArrayList();
 | 
	
		
			
				|  |  | -        for (ImGroupMember groupMember : groupMembers) {
 | 
	
		
			
				|  |  | -            groupMemberList.add(com.yonge.cooleshow.biz.dal.wrapper.im.ImGroupMemberWrapper.ImGroupMember.builder()
 | 
	
		
			
				|  |  | -                    .groupId(groupMember.getGroupId())
 | 
	
		
			
				|  |  | -                    .userId(groupMember.getUserId())
 | 
	
		
			
				|  |  | -                    .clientType(groupMember.getRoleType().getCode())
 | 
	
		
			
				|  |  | -                    .avatar(groupMember.getAvatar())
 | 
	
		
			
				|  |  | -                    .nickname(groupMember.getNickname())
 | 
	
		
			
				|  |  | -                    .isAdmin(groupMember.getIsAdmin())
 | 
	
		
			
				|  |  | -                    .imUserId(getImUserId(groupMember.getUserId().toString(), groupMember.getRoleType().getCode()))
 | 
	
		
			
				|  |  | -                    .roleType(groupMember.getRoleType().getCode())
 | 
	
		
			
				|  |  | -                    .build());
 | 
	
		
			
				|  |  | +        if (!studentIds.isEmpty()) {
 | 
	
		
			
				|  |  | +            // 添加学生
 | 
	
		
			
				|  |  | +            List<ImGroupMember> groupMembers = imGroupMemberService.initGroupMembers(groupId, studentIds, ImGroupMemberRoleType.STUDENT);
 | 
	
		
			
				|  |  | +            List<com.yonge.cooleshow.biz.dal.wrapper.im.ImGroupMemberWrapper.ImGroupMember> groupMemberList = Lists.newArrayList();
 | 
	
		
			
				|  |  | +            for (ImGroupMember groupMember : groupMembers) {
 | 
	
		
			
				|  |  | +                groupMemberList.add(com.yonge.cooleshow.biz.dal.wrapper.im.ImGroupMemberWrapper.ImGroupMember.builder()
 | 
	
		
			
				|  |  | +                        .groupId(groupMember.getGroupId())
 | 
	
		
			
				|  |  | +                        .userId(groupMember.getUserId())
 | 
	
		
			
				|  |  | +                        .clientType(groupMember.getRoleType().getCode())
 | 
	
		
			
				|  |  | +                        .avatar(groupMember.getAvatar())
 | 
	
		
			
				|  |  | +                        .nickname(groupMember.getNickname())
 | 
	
		
			
				|  |  | +                        .isAdmin(groupMember.getIsAdmin())
 | 
	
		
			
				|  |  | +                        .imUserId(getImUserId(groupMember.getUserId().toString(), groupMember.getRoleType().getCode()))
 | 
	
		
			
				|  |  | +                        .roleType(groupMember.getRoleType().getCode())
 | 
	
		
			
				|  |  | +                        .build());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            imGroupCoreService.saveImGroupMemberList(groupId, groupMemberList);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        imGroupCoreService.saveImGroupMemberList(groupId, groupMemberList);
 | 
	
		
			
				|  |  |          //处理本地群成员列表
 | 
	
		
			
				|  |  |          // 添加老师
 | 
	
		
			
				|  |  |  //        List<ImGroupMember> groupMembers = imGroupMemberService.initGroupMember(imGroupId, imGroup.getCreateBy(),
 |