| 
					
				 | 
			
			
				@@ -2,7 +2,6 @@ package com.tzld.piaoquan.api.job.wecom.thirdpart; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.google.common.util.concurrent.ThreadFactoryBuilder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.api.component.WeComThirdPartyApiClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.tzld.piaoquan.api.controller.GetRoomUserListResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.api.dao.mapper.wecom.thirdpart.ThirdPartWeComRoomMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.api.dao.mapper.wecom.thirdpart.ext.ThirdPartWeComMapperExt; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.api.model.param.wecom.thirdpart.*; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -11,6 +10,8 @@ import com.tzld.piaoquan.api.model.po.wecom.thirdpart.ThirdPartWeComRoomUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.api.model.po.wecom.thirdpart.ThirdPartWeComStaff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.api.model.po.wecom.thirdpart.ThirdPartWeComStaffUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.piaoquan.api.service.WeComThirdPartyService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.tzld.piaoquan.growth.common.utils.DateUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.tzld.piaoquan.growth.common.utils.RedisUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xxl.job.core.biz.model.ReturnT; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xxl.job.core.handler.annotation.XxlJob; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import lombok.extern.slf4j.Slf4j; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -38,21 +39,19 @@ public class WeComCreateRoomJob { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ThirdPartWeComMapperExt thirdPartWeComMapperExt; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Value("${create.room.send.msg.status.nums:20}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private Integer sendMsgStatusNums; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private RedisUtils redisUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Value("${create.room.member.max.nums:40}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Value("${create.room.member.max.nums:39}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private Integer memberMaxNums; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Value("${create.room.auto.send.msg:false}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private Boolean autoSendMsg; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Value("${create.room.daily.max.num:50}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Value("${create.room.daily.max.num:5}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private Integer dailyMaxNum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Value("${create.room.daily.max.add.user.times:5}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private Integer dailyMaxAddUserTimes; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private final static ExecutorService pool = new ThreadPoolExecutor(5, 5, 0L, TimeUnit.SECONDS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             new LinkedBlockingQueue<>(1000), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            new ThreadFactoryBuilder().setNameFormat("AutoCreateRoomJob-%d").build(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            new ThreadFactoryBuilder().setNameFormat("WeComCreateRoomJob-%d").build(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             new ThreadPoolExecutor.AbortPolicy()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @XxlJob("autoCreateRoom") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -89,7 +88,7 @@ public class WeComCreateRoomJob { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 已创建群添加群成员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<ThirdPartWeComRoom> roomList = weComThirdPartyService.getStaffRoomList(staff.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<ThirdPartWeComRoom> roomList = weComThirdPartyService.getAllStaffRoomList(staff.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<Integer> roomNums = roomList.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .map(o -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     try { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -106,23 +105,6 @@ public class WeComCreateRoomJob { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .sorted(Comparator.comparing(Integer::intValue).reversed()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Integer maxRoomNum = CollectionUtils.isNotEmpty(roomNums) ? roomNums.get(0) : 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (ThirdPartWeComRoom room : roomList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (room.getAddUserStatus() != 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<Long> vids = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<ThirdPartWeComStaffUser> addUserList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Iterator<ThirdPartWeComStaffUser> iterator = staffUserList.iterator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            int size = memberMaxNums - room.getMemberCount(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            while (iterator.hasNext() && size > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ThirdPartWeComStaffUser item = iterator.next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                vids.add(item.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                size--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                iterator.remove(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                addUserList.add(item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            addRoomUser(staff, room, vids, room, addUserList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 获取当日新创建群 达到上限 不创建 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Long roomCount = weComThirdPartyService.getTodayCreateRoomCount(staff.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (roomCount >= dailyMaxNum) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -132,17 +114,22 @@ public class WeComCreateRoomJob { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (CollectionUtils.isNotEmpty(staffUserList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             createNewRoom(staff, staffUserList, maxRoomNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        userDetailJob.syncRoomList(staff.getThirdUuid(), staff); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userDetailJob.syncRoomList(staff); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private CommonResponse<String> addRoomUser(ThirdPartWeComStaff staff, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                ThirdPartWeComRoom room, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                List<Long> vids, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                               ThirdPartWeComRoom roomDetail, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                List<ThirdPartWeComStaffUser> addUserList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (room.getAddUserStatus() != 1 || room.getMemberCount() >= memberMaxNums) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String dateStr = DateUtil.getCurrentDateStr("yyyyMMdd"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String key = "addRoomUserTimes:" + dateStr + ":" + staff.getThirdStaffId() + ":" + room.getThirdRoomId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int addRoomUserTimes = redisUtils.getInteger(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (addRoomUserTimes >= dailyMaxAddUserTimes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         InvitationToRoomRequest request = new InvitationToRoomRequest(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         request.setUuid(staff.getThirdUuid()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         request.setRoomid(Long.parseLong(room.getThirdRoomId())); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -150,8 +137,9 @@ public class WeComCreateRoomJob { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         CommonResponse<String> commonResponse = weComThirdPartyService.invitationToRoom(request); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (Objects.nonNull(commonResponse)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 群成员添加存储 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            saveRoomUser(roomDetail, addUserList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            saveRoomUser(room, addUserList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        redisUtils.setIncrementValue(key, 1, 24 * 60 * 60L); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return commonResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -195,31 +183,6 @@ public class WeComCreateRoomJob { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         roomMapper.insertSelective(roomDetail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 群成员添加存储 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         saveRoomUser(roomDetail, addUserList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 循环添加群成员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        while (true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            GetRoomUserListRequest roomUserListRequest = new GetRoomUserListRequest(staff.getThirdUuid(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    Long.valueOf(createRoomWxResponse.getRoomid())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<GetRoomUserListResponse.Member> userList = weComThirdPartyService.getRoomUserList(roomUserListRequest); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            roomDetail.setMemberCount(userList.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            roomDetail.setAddUserStatus(userList.size() == memberMaxNums ? 0 : 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            roomDetail.setSendStatus(userList.size() > sendMsgStatusNums && autoSendMsg ? 1 : 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            roomMapper.updateByPrimaryKeySelective(roomDetail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!iterator.hasNext() || userList.size() == memberMaxNums) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            vids = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            size = Math.min(staffUserList.size(), memberMaxNums - userList.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            while (iterator.hasNext() && size > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ThirdPartWeComStaffUser item = iterator.next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                vids.add(item.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                size--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                iterator.remove(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CommonResponse<String> commonResponse = addRoomUser(staff, roomDetail, vids, roomDetail, addUserList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (Objects.isNull(commonResponse)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -245,7 +208,7 @@ public class WeComCreateRoomJob { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //apiClient.addRoomAdmins(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void saveRoomUser(ThirdPartWeComRoom roomDetail, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void saveRoomUser(ThirdPartWeComRoom room, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                               List<ThirdPartWeComStaffUser> addUserList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (CollectionUtils.isEmpty(addUserList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -253,7 +216,7 @@ public class WeComCreateRoomJob { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<ThirdPartWeComRoomUser> saveList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (ThirdPartWeComStaffUser staffUser : addUserList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ThirdPartWeComRoomUser roomUser = new ThirdPartWeComRoomUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            roomUser.setThirdRoomId(roomDetail.getThirdRoomId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            roomUser.setThirdRoomId(room.getThirdRoomId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             roomUser.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             roomUser.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             roomUser.setUin(staffUser.getUserId()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -264,4 +227,58 @@ public class WeComCreateRoomJob { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @XxlJob("autoAddRoomUser") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public ReturnT<String> autoAddRoomUserJob(String param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<ThirdPartWeComStaff> activeStaffList = weComThirdPartyService.getActiveStaffList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        CountDownLatch cdl = new CountDownLatch(activeStaffList.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (ThirdPartWeComStaff staff : activeStaffList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (staff.getAutoCreateRoom() != 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                cdl.countDown(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pool.execute(() -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    addStaffRoomUser(staff); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    log.error("addStaffRoomUser error", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cdl.countDown(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cdl.await(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (InterruptedException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.error("autoAddRoomUserJob error", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return ReturnT.SUCCESS; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void addStaffRoomUser(ThirdPartWeComStaff staff) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 获取所有未加群客户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<ThirdPartWeComStaffUser> staffUserList = thirdPartWeComMapperExt.getNoGroupStaffUserList(staff.getThirdStaffId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (CollectionUtils.isEmpty(staffUserList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<ThirdPartWeComRoom> roomList = weComThirdPartyService.getStaffRoomList(staff.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (ThirdPartWeComRoom room : roomList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (room.getAddUserStatus() != 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<Long> vids = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<ThirdPartWeComStaffUser> addUserList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Iterator<ThirdPartWeComStaffUser> iterator = staffUserList.iterator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int size = memberMaxNums - room.getMemberCount(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            while (iterator.hasNext() && size > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ThirdPartWeComStaffUser item = iterator.next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                vids.add(item.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                size--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                iterator.remove(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                addUserList.add(item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            addRoomUser(staff, room, vids, addUserList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userDetailJob.syncRoomList(staff); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |