|  | @@ -16,6 +16,8 @@ import com.yonge.cooleshow.common.entity.HttpResponseResult;
 | 
	
		
			
				|  |  |  import com.yonge.toolset.base.exception.BizException;
 | 
	
		
			
				|  |  |  import com.yonge.toolset.utils.date.DateUtil;
 | 
	
		
			
				|  |  |  import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | +import org.redisson.api.RBucket;
 | 
	
		
			
				|  |  | +import org.redisson.api.RLock;
 | 
	
		
			
				|  |  |  import org.redisson.api.RedissonClient;
 | 
	
		
			
				|  |  |  import org.slf4j.Logger;
 | 
	
		
			
				|  |  |  import org.slf4j.LoggerFactory;
 | 
	
	
		
			
				|  | @@ -190,9 +192,17 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
 | 
	
		
			
				|  |  |          log.info("quitRoomSuccess: roomId={}, userId={}", roomId, userId);
 | 
	
		
			
				|  |  |          //防止幂等
 | 
	
		
			
				|  |  |          StringBuffer sb  = new StringBuffer(QUIT_ROOM_SUCCESS).append(roomId).append(userId);
 | 
	
		
			
				|  |  | -        if (!redissonClient.getBucket(sb.toString()).setIfExists(userId,1, TimeUnit.SECONDS)){
 | 
	
		
			
				|  |  | -            log.info("quitRoomSuccess break: roomId={}, userId={}", roomId, userId);
 | 
	
		
			
				|  |  | -            return;
 | 
	
		
			
				|  |  | +        RLock lock = redissonClient.getLock(sb.toString());
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            lock.tryLock(2,TimeUnit.SECONDS);
 | 
	
		
			
				|  |  | +            RBucket<Long> bucket = redissonClient.getBucket(sb.toString());
 | 
	
		
			
				|  |  | +            if (redissonClient.getBucket(sb.toString()).isExists()){
 | 
	
		
			
				|  |  | +                log.info("quitRoomSuccess break: roomId={}, userId={}", roomId, userId);
 | 
	
		
			
				|  |  | +                return;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            bucket.set(userId,1, TimeUnit.SECONDS);
 | 
	
		
			
				|  |  | +        }finally {
 | 
	
		
			
				|  |  | +            lock.unlock();
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          ImNetworkRoomMember roomMember = imNetworkRoomMemberService.getDao().findByRidAndUid(roomId, userId);
 | 
	
		
			
				|  |  |          if(Objects.isNull(roomMember)){
 |