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

Commit bdbcf1f6 authored by wangyifan's avatar wangyifan

增加用户 退款分布式锁

parent 8fc91746
...@@ -10,6 +10,7 @@ import com.liquidnet.service.base.constant.MQConst; ...@@ -10,6 +10,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;
...@@ -269,6 +270,13 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService { ...@@ -269,6 +270,13 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
// 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 {
List<String> backOrderIds = redisUtils.getBackOrderByOrderId(param.getOrderId()); List<String> backOrderIds = redisUtils.getBackOrderByOrderId(param.getOrderId());
for (String backOrderId : backOrderIds) { for (String backOrderId : backOrderIds) {
GoblinBackOrderVo backOrderVo = redisUtils.getBackOrderVo(backOrderId); GoblinBackOrderVo backOrderVo = redisUtils.getBackOrderVo(backOrderId);
...@@ -570,6 +578,9 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService { ...@@ -570,6 +578,9 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
} }
} }
return ResponseDto.success(); return ResponseDto.success();
} 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