|  | @@ -16,21 +16,16 @@ 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;
 | 
	
		
			
				|  |  |  import org.springframework.beans.BeanUtils;
 | 
	
		
			
				|  |  | +import org.springframework.data.redis.core.RedisTemplate;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  import org.springframework.util.CollectionUtils;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import javax.annotation.Resource;
 | 
	
		
			
				|  |  |  import java.util.*;
 | 
	
		
			
				|  |  | -import java.util.concurrent.TimeUnit;
 | 
	
		
			
				|  |  | -import java.util.function.BiConsumer;
 | 
	
		
			
				|  |  | -import java.util.function.Consumer;
 | 
	
		
			
				|  |  |  import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
	
		
			
				|  | @@ -63,7 +58,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
 | 
	
		
			
				|  |  |      @Resource
 | 
	
		
			
				|  |  |      private MusicSheetAccompanimentService musicSheetAccompanimentService;
 | 
	
		
			
				|  |  |      @Resource
 | 
	
		
			
				|  |  | -    private RedissonClient redissonClient;
 | 
	
		
			
				|  |  | +    private RedisTemplate<String,Object> redisTemplate;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private String QUIT_ROOM_SUCCESS = "quitRoomSuccess:";
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -192,17 +187,9 @@ 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);
 | 
	
		
			
				|  |  | -        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();
 | 
	
		
			
				|  |  | +        if (!redisTemplate.opsForValue().setIfAbsent(sb.toString(),userId)){
 | 
	
		
			
				|  |  | +            log.info("quitRoomSuccess break: roomId={}, userId={}", roomId, userId);
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          ImNetworkRoomMember roomMember = imNetworkRoomMemberService.getDao().findByRidAndUid(roomId, userId);
 | 
	
		
			
				|  |  |          if(Objects.isNull(roomMember)){
 |