|
|
@@ -105,31 +105,31 @@ public class SoraCodeServiceImpl implements SoraCodeService {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- // 查找一个未使用的sora邀请码
|
|
|
- SoraCode availableCode = soraCodeMapper.selectOne(
|
|
|
- new LambdaQueryWrapper<SoraCode>()
|
|
|
- .eq(SoraCode::getStatus, false)
|
|
|
- .isNull(SoraCode::getUserId)
|
|
|
- .isNull(SoraCode::getOrderId)
|
|
|
- .last("limit 1")
|
|
|
- );
|
|
|
+ while (true) {
|
|
|
+ // 查找一个未使用的sora邀请码
|
|
|
+ SoraCode availableCode = soraCodeMapper.selectOne(
|
|
|
+ new LambdaQueryWrapper<SoraCode>()
|
|
|
+ .eq(SoraCode::getStatus, false)
|
|
|
+ .isNull(SoraCode::getUserId)
|
|
|
+ .isNull(SoraCode::getOrderId)
|
|
|
+ .last("limit 1")
|
|
|
+ );
|
|
|
|
|
|
- if (availableCode == null) {
|
|
|
- log.error("没有可用的sora邀请码赠送给用户{},订单{}", userId, orderId);
|
|
|
- throw new BusinessRuntimeException("暂无可用的sora邀请码");
|
|
|
- }
|
|
|
+ if (availableCode == null) {
|
|
|
+ log.error("没有可用的sora邀请码赠送给用户{},订单{}", userId, orderId);
|
|
|
+ throw new BusinessRuntimeException("暂无可用的sora邀请码");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将邀请码绑定给用户和订单
|
|
|
+ availableCode.setUserId(userId);
|
|
|
+ availableCode.setOrderId(orderId);
|
|
|
+ availableCode.setStatus(Boolean.TRUE);
|
|
|
|
|
|
- // 将邀请码绑定给用户和订单
|
|
|
- availableCode.setUserId(userId);
|
|
|
- availableCode.setOrderId(orderId);
|
|
|
- availableCode.setStatus(Boolean.TRUE);
|
|
|
-
|
|
|
- int updateResult = soraCodeMapper.update(availableCode, Wrappers.lambdaUpdate(SoraCode.class).eq(SoraCode::getId, availableCode.getId()).eq(SoraCode::getStatus, Boolean.FALSE));
|
|
|
- if (updateResult > 0) {
|
|
|
- log.info("成功为用户{}订单{}赠送sora邀请码:{}", userId, orderId, availableCode.getCode());
|
|
|
- } else {
|
|
|
- log.error("为用户{}订单{}赠送sora邀请码失败", userId, orderId);
|
|
|
- throw new BusinessRuntimeException("赠送sora邀请码失败");
|
|
|
+ int updateResult = soraCodeMapper.update(availableCode, Wrappers.lambdaUpdate(SoraCode.class).eq(SoraCode::getId, availableCode.getId()).eq(SoraCode::getStatus, Boolean.FALSE));
|
|
|
+ if (updateResult > 0) {
|
|
|
+ log.info("成功为用户{}订单{}赠送sora邀请码:{}", userId, orderId, availableCode.getCode());
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|