diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java index 50661e33b..9abf71790 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java @@ -147,7 +147,7 @@ public class WxPressOrderController extends BaseController { return new ResultData(ErrorCode.COUPON_PRESS_HAD_FINISHED); } - long time = System.currentTimeMillis() + RedisLock.TIMEOUT; + long time = System.currentTimeMillis() + RedisLock.LONG_TIMEOUT; String timeStr = String.valueOf(time); if (!redisLock.lock(orderIdStr, timeStr)) { logger.error("此砍价订单被锁定, orderId: " + orderIdStr); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java index eb4e5047f..6ad332fd4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java @@ -88,7 +88,9 @@ public class WxOrderGroupServiceImpl implements WxOrderGroupService { } //锁住人数 - boolean grouppeopleLock = redisLock.lock("grouppeopleLock_"+orderGroupId, String.valueOf(orderGroupId)); + long time = System.currentTimeMillis() + RedisLock.LONG_TIMEOUT; + String timeStr = String.valueOf(time); + boolean grouppeopleLock = redisLock.lock("grouppeopleLock_"+orderGroupId, timeStr); if (!grouppeopleLock) { throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"参团锁定失败,请稍后再试。"); } @@ -105,10 +107,10 @@ public class WxOrderGroupServiceImpl implements WxOrderGroupService { //错误,更新状态,定时任务会发起退款,回滚库存 order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode()); wxOrderMapper.updateById(order); - redisLock.unlock("grouppeopleLock_"+orderGroupId, String.valueOf(orderGroupId)); + redisLock.unlock("grouppeopleLock_"+orderGroupId, timeStr); throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"参团失败,将稍后退款."); }else { - redisLock.unlock("grouppeopleLock_"+orderGroupId, String.valueOf(orderGroupId)); + redisLock.unlock("grouppeopleLock_"+orderGroupId, timeStr); } // 更新订单信息 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index cf4019517..15e848ebe 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -506,7 +506,7 @@ public class WxOrderServiceImpl implements WxOrderService { * @param wxCouponSendVo */ private void stockMerchantReduce(WxCUser user, WxCoupon coupon, String couponIdStr, WxCouponSendVo wxCouponSendVo) { - long time = System.currentTimeMillis() + RedisLock.TIMEOUT; + long time = System.currentTimeMillis() + RedisLock.LONG_TIMEOUT; String timeStr = String.valueOf(time); // 库存加锁 if (!redisLock.lock(couponIdStr, timeStr)) { @@ -738,7 +738,7 @@ public class WxOrderServiceImpl implements WxOrderService { Long couponId = updateOrder.getProductId(); String couponIdStr = "" + couponId; //加锁 - long time = System.currentTimeMillis() + 300*RedisLock.TIMEOUT; + long time = System.currentTimeMillis() + RedisLock.LONG_TIMEOUT; String timeStr = String.valueOf(time); if (!redisLock.lock(couponIdStr, timeStr)) { diff --git a/mallinkService/src/main/java/com/iformall/utils/RedisLock.java b/mallinkService/src/main/java/com/iformall/utils/RedisLock.java index 72da0e735..de4241e03 100644 --- a/mallinkService/src/main/java/com/iformall/utils/RedisLock.java +++ b/mallinkService/src/main/java/com/iformall/utils/RedisLock.java @@ -27,6 +27,8 @@ public class RedisLock { public static final int TIMEOUT = 10*1000;//超时时间 10s + public static final int LONG_TIMEOUT = 3600*1000;//超长超时时间,关键业务点失败不能再进行下去的时间点 + /** * 加锁 * @param key productId - 商品的唯一标志