背景 在开发过程中,遇到这样一段代码,业务逻辑是:先获取分布式锁,然后再进行事务处理,代码逻辑如下:
@Transactional(rollbackFor = Exception.class)
public int save(String xxx, Object obj) {
RLock lock = null;
try {
String key = CommonConst.XXX_PRE_STR + name + ":" + phone;
lock = redisson.getLock(key);
boolean lockFlag = lock.tryLock(3, 20, TimeUnit.SECONDS);
log.info("请求key:{}获取锁状态:{}", key, lockFlag);
if(!lockFlag) {
return 0;
}
// 查询去重
User user = userService.getByParams(name, phone);
if(user != null) {
......
userService.update(user);
} else {
user = new User();
// 用户信息保存
userService.save(user);
}
Order order = new Order();
order.setUserId(user.ge