Selaa lähdekoodia

fix: 基础平台服务
1.充值或退款成功后更新对应钱包的缓存数据

luoyb 8 kuukautta sitten
vanhempi
commit
418e99e0b3

+ 15 - 3
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/payments/PayOrderBusiness.java

@@ -21,7 +21,7 @@ import org.dromara.common.core.constant.CacheNames;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.enums.*;
 import org.dromara.common.core.exception.consume.ConsumeException;
-import org.dromara.common.redis.utils.RedisUtils;
+import org.dromara.common.redis.utils.CacheUtils;
 import org.dromara.consume.api.RemoteConsumeService;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
@@ -198,7 +198,7 @@ public class PayOrderBusiness {
             R<PurseInOutBo> result = createNormalOrder(bo);
             if (result.getCode() == R.SUCCESS) {
                 // 如果充值成功,更新缓存中的余额
-                updateCacheBalanceByUserId(bo.getUserId(), bo.getReceiptMoney());
+                updateCacheBalanceByUserId(bo.getUserId(), bo.getReceiptMoney(), bo.getBagCode());
                 return R.ok(result.getData());
             } else {
                 return R.fail(result.getMsg());
@@ -228,7 +228,7 @@ public class PayOrderBusiness {
             R<PurseInOutBo> result = createNormalOrder(boCopy);
             if (result.getCode() == R.SUCCESS) {
                 // 如果退款成功,更新缓存中的余额
-                updateCacheBalanceByUserId(bo.getUserId(), boCopy.getReceiptMoney());
+                updateCacheBalanceByUserId(bo.getUserId(), boCopy.getReceiptMoney(),bo.getBagCode());
                 return R.ok(result.getData());
             } else {
                 return R.fail(result.getMsg(), boCopy);
@@ -296,4 +296,16 @@ public class PayOrderBusiness {
         balance = balance.add(dealMoney);
         remoteConsumeService.cacheUserTotalBalance(id, balance);
     }
+
+    private void updateCacheBalanceByUserId(Long id, BigDecimal dealMoney, String bagCode) {
+        String key = String.format("%s_%s", id, bagCode);
+        BigDecimal balance = CacheUtils.get(CacheNames.USER_BAG_BALANCE, key);
+        if (balance == null) {
+            balance = dealMoney;
+        } else {
+            balance = balance.add(dealMoney);
+        }
+        CacheUtils.put(CacheNames.USER_BAG_BALANCE, key, balance);
+    }
+
 }

+ 1 - 0
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/ConsumeBusiness.java

@@ -223,6 +223,7 @@ public class ConsumeBusiness {
             if (R.isSuccess(result)) {
                 break;
             }
+
         }
         if (R.isError(result)) {
             log.info("[上传交易异步处理尝试3次失败,需要手工处理]-[{}]-[{}]", JSONUtil.toJsonStr(bo), JSONUtil.toJsonStr(result.getData()));

+ 2 - 0
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/service/IConsumeDetailOriginalService.java

@@ -106,4 +106,6 @@ public interface IConsumeDetailOriginalService {
      * @return 如果删除成功返回true,否则返回false
      */
     boolean deleteByTermNoAndTermRecordId(Long termNo, Integer termRecordId);
+
+    XfConsumeDetailOriginalVo queryByTermNoAndTermRecordId(Long termNo, Integer termRecordId);
 }

+ 23 - 11
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/service/impl/ConsumeDetailOriginalServiceImpl.java

@@ -151,9 +151,9 @@ public class ConsumeDetailOriginalServiceImpl implements IConsumeDetailOriginalS
     @Override
     public XfConsumeDetailOriginalVo queryByConsumeMoney(Long cardNo, Long termNo, Long termRecordId, BigDecimal consumeMoney) {
         return baseMapper.selectVoOne(new LambdaQueryWrapper<XfConsumeDetailOriginal>().eq(XfConsumeDetailOriginal::getCardNo, cardNo)
-                                          .eq(XfConsumeDetailOriginal::getTermNo, termNo)
-                                          .eq(XfConsumeDetailOriginal::getTermRecordId, termRecordId)
-                                          .eq(XfConsumeDetailOriginal::getConsumeMoney, consumeMoney));
+            .eq(XfConsumeDetailOriginal::getTermNo, termNo)
+            .eq(XfConsumeDetailOriginal::getTermRecordId, termRecordId)
+            .eq(XfConsumeDetailOriginal::getConsumeMoney, consumeMoney));
     }
 
     /**
@@ -166,9 +166,9 @@ public class ConsumeDetailOriginalServiceImpl implements IConsumeDetailOriginalS
     @Override
     public Integer updateRecordStatusByOrginId(Integer dataFlag, String originId) {
         LambdaUpdateWrapper<XfConsumeDetailOriginal> luw = new LambdaUpdateWrapper<XfConsumeDetailOriginal>()
-                                                               .set(XfConsumeDetailOriginal::getDataFlag, dataFlag)
-                                                               .eq(XfConsumeDetailOriginal::getOriginalId, originId)
-                                                               .eq(XfConsumeDetailOriginal::getDataFlag, 0);
+            .set(XfConsumeDetailOriginal::getDataFlag, dataFlag)
+            .eq(XfConsumeDetailOriginal::getOriginalId, originId)
+            .eq(XfConsumeDetailOriginal::getDataFlag, 0);
         return baseMapper.update(null, luw);
     }
 
@@ -184,9 +184,9 @@ public class ConsumeDetailOriginalServiceImpl implements IConsumeDetailOriginalS
     @Override
     public XfConsumeDetailOriginalVo queryByConsumeDate(Long cardNo, Long termNo, Long termRecordId, Date consumeDate) {
         return baseMapper.selectVoOne(new LambdaQueryWrapper<XfConsumeDetailOriginal>().eq(XfConsumeDetailOriginal::getCardNo, cardNo)
-                                          .eq(XfConsumeDetailOriginal::getTermNo, termNo)
-                                          .eq(XfConsumeDetailOriginal::getTermRecordId, termRecordId)
-                                          .eq(XfConsumeDetailOriginal::getConsumeDate, consumeDate));
+            .eq(XfConsumeDetailOriginal::getTermNo, termNo)
+            .eq(XfConsumeDetailOriginal::getTermRecordId, termRecordId)
+            .eq(XfConsumeDetailOriginal::getConsumeDate, consumeDate));
     }
 
     @Override
@@ -206,7 +206,7 @@ public class ConsumeDetailOriginalServiceImpl implements IConsumeDetailOriginalS
     public List<XfConsumeDetailOriginalVo> queryListByConsumeDate(Date beginDate, Date endDate) {
         return baseMapper.selectVoList(new LambdaQueryWrapper<XfConsumeDetailOriginal>()
             .gt(XfConsumeDetailOriginal::getConsumeDate, beginDate)
-            .le(XfConsumeDetailOriginal::getConsumeDate,endDate));
+            .le(XfConsumeDetailOriginal::getConsumeDate, endDate));
     }
 
     /**
@@ -219,6 +219,18 @@ public class ConsumeDetailOriginalServiceImpl implements IConsumeDetailOriginalS
     @Override
     public boolean deleteByTermNoAndTermRecordId(Long termNo, Integer termRecordId) {
         return baseMapper.delete(new LambdaQueryWrapper<XfConsumeDetailOriginal>().eq(XfConsumeDetailOriginal::getTermNo, termNo)
-                                      .eq(XfConsumeDetailOriginal::getTermRecordId, termRecordId)) > 0;
+            .eq(XfConsumeDetailOriginal::getTermRecordId, termRecordId)) > 0;
+    }
+
+    @Override
+    public XfConsumeDetailOriginalVo queryByTermNoAndTermRecordId(Long termNo, Integer termRecordId) {
+        List<XfConsumeDetailOriginalVo> list = baseMapper.selectVoList(new LambdaQueryWrapper<XfConsumeDetailOriginal>()
+            .eq(XfConsumeDetailOriginal::getTermNo, termNo)
+            .eq(XfConsumeDetailOriginal::getTermRecordId, termRecordId));
+
+        if (!list.isEmpty()) {
+            return list.get(0);
+        }
+        return null;
     }
 }