| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -48,34 +48,30 @@ public class NoRepeatSubmitAop { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        Object result = null; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        RLock lock = null; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        try { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            //key 为空则直接跳过 不加锁
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if (key != null){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                long leaseTime = noRepeatSubmit.leaseTime(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                //如果获取不到锁等待0秒直接返回 持锁时间为leaseTime
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                lock = distributedLock.getLock(RedisKeys.getNoRepeatSubmitKey(key), leaseTime, NumConstant.ZERO_L, TimeUnit.MILLISECONDS); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                //因为getLock如果获取失败抛异常 所以不做锁状态的判断
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            try { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                //key 为空则直接跳过 不加锁
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                if (key != null) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    long leaseTime = noRepeatSubmit.leaseTime(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    //如果获取不到锁等待0秒直接返回 持锁时间为leaseTime
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    lock = distributedLock.getLock(RedisKeys.getNoRepeatSubmitKey(key), leaseTime, NumConstant.ZERO_L, TimeUnit.MILLISECONDS); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    //因为getLock如果获取失败抛异常 所以不做锁状态的判断
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } catch (Exception e) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                log.warn("noRepeatSubmit key:{},msg:{}", key, e.getMessage()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                //"未获取到锁,重复提交了
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                throw new RenException(EpmetErrorCode.REPEAT_SUBMIT.getCode()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } catch (Exception e) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            log.warn("noRepeatSubmit key:{},msg:{}", key, e.getMessage()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            //"未获取到锁,重复提交了
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            throw new RenException(EpmetErrorCode.REPEAT_SUBMIT.getCode()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } finally { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            distributedLock.unLock(lock); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        try { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            //因为getLock如果获取失败抛异常 所以不做锁状态的判断
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            //执行业务代码
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            result = pjp.proceed(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } finally { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            distributedLock.unLock(lock); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return result; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    private String getKey(String keyExpress, String token) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        log.debug("getKey param keyExpress:{},token:{}",keyExpress,token); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        log.debug("getKey param keyExpress:{},token:{}", keyExpress, token); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if (StringUtils.isBlank(token)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            return null; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |