| 
					
				 | 
			
			
				@@ -24,6 +24,7 @@ import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.time.LocalDate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.time.LocalDateTime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Slf4j 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Service 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -63,24 +64,28 @@ implements IGameOceanengineAppCallbackService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public GameOceanengineAppCallback getUserCallback(Long gameId, String imei, String oaid, String android, String idfa, String caid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public GameOceanengineAppCallback getUserCallback(Long gameId, String oaid, String mac, String idfa, String caid, String ip, LocalDateTime regTime) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         LambdaQueryWrapper<GameOceanengineAppCallback> qw = new LambdaQueryWrapper<GameOceanengineAppCallback>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .lt(GameOceanengineAppCallback::getTs, DateUtil.localDateTimeToMilli(regTime)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .eq(GameOceanengineAppCallback::getGameId, gameId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .orderByDesc(GameOceanengineAppCallback::getTs) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .last("limit 1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (StringUtils.isNoneBlank(imei) || StringUtils.isNoneBlank(android) || StringUtils.isNoneBlank(oaid)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            qw.and(and -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                and.eq(StringUtils.isNoneBlank(imei), GameOceanengineAppCallback::getImei, StringUtils.isBlank(imei) ? null : Md5Util.encrypt32(imei).toLowerCase()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .or().eq(StringUtils.isNoneBlank(android), GameOceanengineAppCallback::getAndroidid, StringUtils.isBlank(android) ? null : Md5Util.encrypt32(android).toLowerCase()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        .or().eq(StringUtils.isNoneBlank(oaid), GameOceanengineAppCallback::getOaid, oaid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        qw.and(and -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(StringUtils.isNoneBlank(oaid)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                and.eq(StringUtils.isNoneBlank(oaid), GameOceanengineAppCallback::getOaid, oaid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         .or().eq(StringUtils.isNoneBlank(oaid), GameOceanengineAppCallback::getOaidMd5, StringUtils.isBlank(oaid) ? null : Md5Util.encrypt32(oaid).toLowerCase()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (StringUtils.isNoneBlank(idfa)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            qw.and(and -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (StringUtils.isNoneBlank(idfa)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 and.eq(GameOceanengineAppCallback::getIdfaMd5, StringUtils.isBlank(idfa) ? null : Md5Util.encrypt32(idfa).toLowerCase()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         .or().eq(GameOceanengineAppCallback::getIdfa, idfa); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            and.or().eq(StringUtils.isNoneBlank(mac), GameOceanengineAppCallback::getMac, StringUtils.isBlank(oaid) ? null : Md5Util.encrypt32(mac.replaceAll(":","").toUpperCase()).toLowerCase()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .or().and(StringUtils.isNoneBlank(ip), tmp -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        tmp.ge(GameOceanengineAppCallback::getTs, DateUtil.localDateTimeToMilli(regTime.plusDays(2))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                .eq(GameOceanengineAppCallback::getIp, ip); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return getOne(qw); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |