Kaynağa Gözat

创客账户表操作加锁

mac 2 yıl önce
ebeveyn
işleme
e96f792d70

+ 0 - 6
kxs-transfer/src/main/java/com/kxs/transfer/api/service/stat/KxsUserActTradeService.java

@@ -36,12 +36,6 @@ public class KxsUserActTradeService extends ServiceImpl<KxsUserActTradeMapper, K
 
         KxsUserActTrade userActTrade = new KxsUserActTrade();
 
-        OperationType operation = dmlData.getOperation();
-
-        if(operation.equals(OperationType.DELETE)){
-            baseMapper.deleteById(id);
-            return;
-        }
         if (fieldDataMap.get("UserId").getValue() != null) {
             userActTrade.setUserId(Integer.valueOf(fieldDataMap.get("UserId").getValue().toString()));
         }

+ 2 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserAdvanceServiceImpl.java

@@ -17,6 +17,7 @@ import com.kxs.user.biz.service.KxsUserAmountLogService;
 import com.kxs.user.biz.service.KxsUserAmountService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 
@@ -35,6 +36,7 @@ public class KxsUserAdvanceServiceImpl extends ServiceImpl<KxsUserAdvanceMapper,
     private final KxsUserAmountService kxsUserAmountService;
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public R returnAdvance(Integer advanceId) {
 
         KxsUserAdvance advance = baseMapper.selectById(advanceId);

+ 3 - 2
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserAmountServiceImpl.java

@@ -22,6 +22,7 @@ import lombok.RequiredArgsConstructor;
 import lombok.Synchronized;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.Objects;
@@ -60,7 +61,7 @@ public class KxsUserAmountServiceImpl extends ServiceImpl<KxsUserAmountMapper, K
     public R userAmountChange(KxsUserAmountLog userAmountLog) {
 
         KxsUserAmount userAmount = this.getOne(Wrappers.<KxsUserAmount>lambdaQuery()
-                .eq(KxsUserAmount::getUserId, userAmountLog.getUserId()));
+                .eq(KxsUserAmount::getUserId, userAmountLog.getUserId()).last("FOR UPDATE"));
 
         userAmountLog.setBeforeAmount(userAmount.getAmount());
         BigDecimal afterAmount;
@@ -85,7 +86,7 @@ public class KxsUserAmountServiceImpl extends ServiceImpl<KxsUserAmountMapper, K
     }
 
     @Override
-    @Synchronized
+    @Transactional(rollbackFor = Exception.class)
     public R yuePay(PayRequestDTO payReq) {
 
         Long userId = SecurityUtils.getUser().getId();

+ 1 - 1
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserWithdrawalServiceImpl.java

@@ -90,7 +90,7 @@ public class KxsUserWithdrawalServiceImpl extends ServiceImpl<KxsUserWithdrawalM
         }
 
         //查询余额
-        KxsUserAmount userAmount = userAmountMapper.selectOne(Wrappers.<KxsUserAmount>lambdaQuery().eq(KxsUserAmount::getUserId, userId));
+        KxsUserAmount userAmount = userAmountMapper.selectOne(Wrappers.<KxsUserAmount>lambdaQuery().eq(KxsUserAmount::getUserId, userId).last("FOR UPDATE"));
         //余额减去预扣款金额
         BigDecimal amount = NumberUtil.sub(userAmount.getAmount(), userAmount.getAdvanceAmount());
         //验证余额