Просмотр исходного кода

更新bug

release_toaliyun_real
xiaohanzi 6 лет назад
Родитель
Сommit
a9cffedcc4
4 измененных файлов: 10 добавлений и 6 удалений
  1. +1
    -1
      mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java
  2. +5
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java
  3. +2
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java
  4. +2
    -0
      mallinkService/src/main/java/com/iformall/utils/RedisLock.java

+ 1
- 1
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); 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);


+ 5
- 3
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) { 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);
} }


// 更新订单信息 // 更新订单信息


+ 2
- 2
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java Просмотреть файл

@@ -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)) {


+ 2
- 0
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 TIMEOUT = 10*1000;//超时时间 10s
public static final int LONG_TIMEOUT = 3600*1000;//超长超时时间,关键业务点失败不能再进行下去的时间点
/** /**
* 加锁 * 加锁
* @param key productId - 商品的唯一标志 * @param key productId - 商品的唯一标志


Загрузка…
Отмена
Сохранить