ソースを参照

refactor(trade): 优化用户积分更新逻辑

- 使用数据库原子操作更新积分,避免重复插入记录
- 添加查询最新积分值的逻辑
- 在积分记录中添加当前积分数量字段
- 优化代码结构提高可读性
fcw 3 ヶ月 前
コミット
03f4e4111a

+ 17 - 5
alien-second/src/main/java/shop/alien/second/service/impl/SecondTradeRecordServiceImpl.java

@@ -607,16 +607,28 @@ public class SecondTradeRecordServiceImpl extends ServiceImpl<SecondTradeRecordM
         wrapper.eq(SecondUserCreditRecord::getPointsType, 3);
         List<SecondUserCreditRecord> records = secondUserCreditRecordMapper.selectList(wrapper);
         int userPoints = records.stream().mapToInt(SecondUserCreditRecord::getPoints).sum();
+
         if (userPoints < 500) {
-            SecondUserCreditRecord record = new SecondUserCreditRecord();
-            record.setUserId(userId);
-            record.setPoints(10);
-            record.setPointsType(3);
-            secondUserCreditRecordMapper.insert(record);
+            // 使用数据库原子操作更新积分
             secondUserCreditMapper.updatePointsByUserId(userId, 10);
+
+            // 查询最新的积分值
+            LambdaQueryWrapper<SecondUserCredit> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(SecondUserCredit::getUserId, userId);
+            SecondUserCredit userCredit = secondUserCreditMapper.selectOne(queryWrapper);
+
+            if (userCredit != null) {
+                SecondUserCreditRecord record = new SecondUserCreditRecord();
+                record.setUserId(userId);
+                record.setPoints(10);
+                record.setPointsType(3);
+                record.setCurrentScoreCount(userCredit.getUserPoints()); // 注意:这里应该是更新后的积分
+                secondUserCreditRecordMapper.insert(record);
+            }
         }
     }
 
+
     @Override
     public List<SecondTradeRecordVo> getTradeRecord(int sideId) throws Exception {
         try {