| @@ -147,7 +147,7 @@ public class WxPressOrderController extends BaseController { | |||||
| return new ResultData(ErrorCode.COUPON_PRESS_HAD_FINISHED); | 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); | String timeStr = String.valueOf(time); | ||||
| if (!redisLock.lock(orderIdStr, timeStr)) { | if (!redisLock.lock(orderIdStr, timeStr)) { | ||||
| logger.error("此砍价订单被锁定, orderId: " + orderIdStr); | logger.error("此砍价订单被锁定, orderId: " + orderIdStr); | ||||
| @@ -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) { | if (!grouppeopleLock) { | ||||
| throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"参团锁定失败,请稍后再试。"); | 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()); | order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode()); | ||||
| wxOrderMapper.updateById(order); | wxOrderMapper.updateById(order); | ||||
| redisLock.unlock("grouppeopleLock_"+orderGroupId, String.valueOf(orderGroupId)); | |||||
| redisLock.unlock("grouppeopleLock_"+orderGroupId, timeStr); | |||||
| throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"参团失败,将稍后退款."); | throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"参团失败,将稍后退款."); | ||||
| }else { | }else { | ||||
| redisLock.unlock("grouppeopleLock_"+orderGroupId, String.valueOf(orderGroupId)); | |||||
| redisLock.unlock("grouppeopleLock_"+orderGroupId, timeStr); | |||||
| } | } | ||||
| // 更新订单信息 | // 更新订单信息 | ||||
| @@ -506,7 +506,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| * @param wxCouponSendVo | * @param wxCouponSendVo | ||||
| */ | */ | ||||
| private void stockMerchantReduce(WxCUser user, WxCoupon coupon, String couponIdStr, WxCouponSendVo 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); | String timeStr = String.valueOf(time); | ||||
| // 库存加锁 | // 库存加锁 | ||||
| if (!redisLock.lock(couponIdStr, timeStr)) { | if (!redisLock.lock(couponIdStr, timeStr)) { | ||||
| @@ -738,7 +738,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| Long couponId = updateOrder.getProductId(); | Long couponId = updateOrder.getProductId(); | ||||
| String couponIdStr = "" + couponId; | String couponIdStr = "" + couponId; | ||||
| //加锁 | //加锁 | ||||
| long time = System.currentTimeMillis() + 300*RedisLock.TIMEOUT; | |||||
| long time = System.currentTimeMillis() + RedisLock.LONG_TIMEOUT; | |||||
| String timeStr = String.valueOf(time); | String timeStr = String.valueOf(time); | ||||
| if (!redisLock.lock(couponIdStr, timeStr)) { | if (!redisLock.lock(couponIdStr, timeStr)) { | ||||
| @@ -27,6 +27,8 @@ public class RedisLock { | |||||
| public static final int TIMEOUT = 10*1000;//超时时间 10s | public static final int TIMEOUT = 10*1000;//超时时间 10s | ||||
| public static final int LONG_TIMEOUT = 3600*1000;//超长超时时间,关键业务点失败不能再进行下去的时间点 | |||||
| /** | /** | ||||
| * 加锁 | * 加锁 | ||||
| * @param key productId - 商品的唯一标志 | * @param key productId - 商品的唯一标志 | ||||