| 
					
				 | 
			
			
				@@ -18,6 +18,7 @@ import java.text.ParseException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.text.SimpleDateFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.time.Instant; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Slf4j 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Service 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -72,12 +73,22 @@ public class RiskRuleConfigService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         long roomUpdateTime =  roomInfo.getUpdateTime().getTime()/1000; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         log.info("getFixedRulesForThisChat, roomId: {}, roomUpdateTime: {}", roomId, roomUpdateTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<UserListFromAdPlatformModel.ChatMember> memberList = getUserListFromAdPlatform(chatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (memberList == null || memberList.isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<UserListFromAdPlatformModel.ChatMember> distinctMembers = memberList.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .collect(Collectors.toMap( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        UserListFromAdPlatformModel.ChatMember::getExternalId,  // key: externalId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        member -> member,                                       // value: ChatMember 对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        (existing, replacement) ->                              // 合并策略:取 joinTime 更大的那条 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                existing.getJoinTime() > replacement.getJoinTime() ? existing : replacement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                )) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .values()  // 获取去重后的成员列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (distinctMembers == null || distinctMembers.isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             log.error("checkIfOpenedForFixedRules, memberList is empty for chatId: {}", chatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return ruleResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 打印所有成员的joinTime和roomUpdateTime用于调试 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            memberList.forEach(member -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            distinctMembers.forEach(member -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (member.getJoinTime() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     log.info( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             "Member ID: " + member.getNickName() + 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -90,11 +101,11 @@ public class RiskRuleConfigService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //开关开启后的加入的数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            int size = (int) memberList.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int size = (int) distinctMembers.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .filter(member -> member.getJoinTime() != null && member.getJoinTime() > roomUpdateTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .count();;//群总数,包括异常和正常 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //memberList中isAbnormal是0代表正常用户,判断joinTime是否大于updateTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            int normalSize = (int) memberList.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int normalSize = (int) distinctMembers.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .filter(member -> member.getIsAbnormal() == 0).filter( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             member -> member.getJoinTime() != null && member.getJoinTime() > roomUpdateTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .count(); 
			 |