Ver código fonte

fix: 重复支付

xdd 4 dias atrás
pai
commit
f791c52110

+ 0 - 5
fs-service-system/src/main/java/com/fs/store/service/impl/FsStoreOrderServiceImpl.java

@@ -412,10 +412,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
         if(!Objects.equals(order.getStatus(), OrderInfoEnum.STATUS_0.getValue())){
             return R.error("订单状态不正确");
         }
-        String orderId=redisCache.getCacheObject("isPaying:"+order.getId());
-        if(StringUtils.isNotEmpty(orderId)&&orderId.equals(order.getId().toString())){
-            return R.error("正在支付中...");
-        }
 
         FsUser user=userService.selectFsUserById(order.getUserId());
         if(user!=null&& StringUtils.isNotEmpty(user.getMaOpenId())){
@@ -502,7 +498,6 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
                 }
                 R process = payment.createOrder(processContext);
                 if("200".equals(String.valueOf(process.get("code")))){
-                    redisCache.setCacheObject("isPaying:"+order.getId(),order.getId().toString(),1, TimeUnit.MINUTES);
                     return process;
                 }
             }

+ 2 - 2
fs-user-app/src/main/java/com/fs/app/controller/StoreOrderController.java

@@ -139,7 +139,7 @@ public class StoreOrderController extends  AppBaseController {
 
         try {
             // 尝试获取锁,最多等待500ms,锁定30秒
-            boolean locked = lock.tryLock(3000, 30000, TimeUnit.MILLISECONDS);
+            boolean locked = lock.tryLock(100, 30000, TimeUnit.MILLISECONDS);
 
             if (!locked) {
                 logger.warn("订单正在处理中,获取锁失败, 订单号: {}", orderId);
@@ -206,7 +206,7 @@ public class StoreOrderController extends  AppBaseController {
 
         try {
             // 尝试获取锁,最多等待500ms,锁定30秒
-            boolean locked = lock.tryLock(3000, 30000, TimeUnit.MILLISECONDS);
+            boolean locked = lock.tryLock(100, 30000, TimeUnit.MILLISECONDS);
 
             if (!locked) {
                 logger.warn("亲友支付订单正在处理中,获取锁失败, 订单号: {}", orderId);