|  | @@ -17,6 +17,7 @@ import com.yonge.toolset.base.exception.BizException;
 | 
	
		
			
				|  |  |  import com.yonge.toolset.utils.web.WebUtil;
 | 
	
		
			
				|  |  |  import io.swagger.annotations.Api;
 | 
	
		
			
				|  |  |  import io.swagger.annotations.ApiOperation;
 | 
	
		
			
				|  |  | +import org.redisson.api.RLock;
 | 
	
		
			
				|  |  |  import org.redisson.api.RedissonClient;
 | 
	
		
			
				|  |  |  import org.slf4j.Logger;
 | 
	
		
			
				|  |  |  import org.slf4j.LoggerFactory;
 | 
	
	
		
			
				|  | @@ -112,22 +113,25 @@ public class PaymentController extends BaseController {
 | 
	
		
			
				|  |  |          payReq.setUserId(user.getId());
 | 
	
		
			
				|  |  |          payReq.setIpAddress(WebUtil.getRemoteIp(request));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        Future<OrderPayRes> orderPayResFuture = DistributedLock.of(redissonClient)
 | 
	
		
			
				|  |  | -              .callIfLockCanGet(OrdeerCacherEnmu.LOCK_PAY_ORDER.getRedisKey(user.getId()),
 | 
	
		
			
				|  |  | -                                () -> portalOrderService.orderPay(payReq), 60L, TimeUnit.SECONDS);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        RLock lock = redissonClient.getLock(OrdeerCacherEnmu.LOCK_PAY_ORDER.getRedisKey(user.getId()));
 | 
	
		
			
				|  |  |          try {
 | 
	
		
			
				|  |  | -            OrderPayRes orderPayRes = orderPayResFuture.get();
 | 
	
		
			
				|  |  | -            if (orderPayRes.isStatus()) {
 | 
	
		
			
				|  |  | -                return succeed(orderPayRes);
 | 
	
		
			
				|  |  | -            }  else {
 | 
	
		
			
				|  |  | -                return failed(orderPayRes.getMessage());
 | 
	
		
			
				|  |  | +            boolean b = lock.tryLock(60, TimeUnit.SECONDS);
 | 
	
		
			
				|  |  | +            if (b) {
 | 
	
		
			
				|  |  | +                OrderPayRes orderPayRes = portalOrderService.orderPay(payReq);
 | 
	
		
			
				|  |  | +                if (orderPayRes.isStatus()) {
 | 
	
		
			
				|  |  | +                    return succeed(orderPayRes);
 | 
	
		
			
				|  |  | +                }  else {
 | 
	
		
			
				|  |  | +                    return failed(orderPayRes.getMessage());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            return failed("请求超时");
 | 
	
		
			
				|  |  |          }catch (BizException e) {
 | 
	
		
			
				|  |  |              return failed(e.getMessage());
 | 
	
		
			
				|  |  | -        }catch (Exception e) {
 | 
	
		
			
				|  |  | +        } catch (Exception e) {
 | 
	
		
			
				|  |  |              e.printStackTrace();
 | 
	
		
			
				|  |  |              return HttpResponseResult.failed("付款失败");
 | 
	
		
			
				|  |  | +        }finally {
 | 
	
		
			
				|  |  | +            lock.unlock();
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |