记得上下班打卡 | git大法好,push需谨慎

Commit 8fc91746 authored by wangyifan's avatar wangyifan

增加partner 退款分布式锁

parent 8d6488fa
...@@ -455,6 +455,12 @@ public class GoblinRedisConst { ...@@ -455,6 +455,12 @@ public class GoblinRedisConst {
*/ */
public static final String SQB_GOBLIN_ORDER_SN_KEY = PREFIX.concat("sqb:orderSn:"); public static final String SQB_GOBLIN_ORDER_SN_KEY = PREFIX.concat("sqb:orderSn:");
/**
* 订单退款分布式锁
* {goblin:refund:lock:${orderId}, 1}
*/
public static final String REFUND_ORDER_LOCK = PREFIX.concat("refund:lock:");
/** /**
* 收钱吧 用户订单列表 * 收钱吧 用户订单列表
*/ */
......
...@@ -8,6 +8,7 @@ import com.liquidnet.service.base.constant.MQConst; ...@@ -8,6 +8,7 @@ import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.candy.constant.CandyRedisConst; import com.liquidnet.service.candy.constant.CandyRedisConst;
import com.liquidnet.service.candy.dto.CandyUserCouponBasicDto; import com.liquidnet.service.candy.dto.CandyUserCouponBasicDto;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import com.liquidnet.service.goblin.constant.GoblinStatusConst; import com.liquidnet.service.goblin.constant.GoblinStatusConst;
import com.liquidnet.service.goblin.dto.vo.*; import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.entity.GoblinBackOrder; import com.liquidnet.service.goblin.entity.GoblinBackOrder;
...@@ -291,6 +292,13 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer ...@@ -291,6 +292,13 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
if (!orderVo.getMixId().isEmpty()) { if (!orderVo.getMixId().isEmpty()) {
return ResponseDto.failure("组合购商品暂不支持退款"); return ResponseDto.failure("组合购商品暂不支持退款");
} }
// 分布式锁防并发重复退款
String lockKey = GoblinRedisConst.REFUND_ORDER_LOCK + param.getOrderId();
if (!redisUtils.redisUtil.lock(lockKey, 1, 30)) {
return ResponseDto.failure("退款处理中,请勿重复操作");
}
try {
if (hasProcessingBackOrder(orderVo.getOrderId())) { if (hasProcessingBackOrder(orderVo.getOrderId())) {
return ResponseDto.failure("已有退款处理中"); return ResponseDto.failure("已有退款处理中");
} }
...@@ -312,6 +320,9 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer ...@@ -312,6 +320,9 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
return ResponseDto.failure("请选择退款商品"); return ResponseDto.failure("请选择退款商品");
} }
return createStoreRefundOrder(orderVo, refundSkuVos, beforeShip, param, uid, now, nowStr); return createStoreRefundOrder(orderVo, refundSkuVos, beforeShip, param, uid, now, nowStr);
} finally {
redisUtils.redisUtil.uLock(lockKey);
}
} }
@Override @Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment