From c95812b953a54e60c916c8ca375101376f58de57 Mon Sep 17 00:00:00 2001
From: Administrator <1101184511@qq.com>
Date: 星期日, 20 四月 2025 17:24:09 +0800
Subject: [PATCH] 基础功能的单元测试完成

---
 src/main/java/com/taoke/autopay/manager/UserCreditExchangeManager.java |   42 ++++++++++++++++++++++++++++++++----------
 1 files changed, 32 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/taoke/autopay/manager/UserCreditExchangeManager.java b/src/main/java/com/taoke/autopay/manager/UserCreditExchangeManager.java
index 5aa7675..9124118 100644
--- a/src/main/java/com/taoke/autopay/manager/UserCreditExchangeManager.java
+++ b/src/main/java/com/taoke/autopay/manager/UserCreditExchangeManager.java
@@ -36,6 +36,9 @@
     @Resource
     private UserCreditRecordService userCreditRecordService;
 
+    @Resource
+    private UserCreditManager userCreditManager;
+
     /**
      * 鐢ㄦ埛绉垎鍏戞崲
      *
@@ -56,6 +59,8 @@
             throw new UserCreditExchangeException(UserCreditExchangeException.CODE_BALANCE_NOT_ENOUGH, "鐢ㄦ埛绉垎涓嶈冻");
         }
 
+
+
         // 濡傛灉鏄孩鍖呭厬鎹紝鍒ゆ柇鐢ㄦ埛鍏戞崲棰戠巼
         if (exchangeType == CreditExchangeRecord.ExchangeType.FUND_EXCHANGE) {
             checkRedPacketExchangeFrequency(userId);
@@ -74,8 +79,7 @@
             BigDecimal exchangeAmount = calculateExchangeAmount(request.getUid(), request.getConsumedCredits());
             exchangeRecord.setExchangeValue(exchangeAmount);
         }
-        // 鎵e噺鐢ㄦ埛绉垎
-        userCreditBalanceService.decreaseCreditBalance(userId, request.getConsumedCredits());
+
         // 璁板綍鍏戞崲璁板綍
         exchangeRecord.setUid(userId);
         exchangeRecord.setExchangeType(exchangeType);
@@ -87,7 +91,18 @@
         exchangeRecord.setExchangeInfo2(alipayBindings.get(0).getAlipayAccount());
         exchangeRecord.setCreateTime(new Date());
         exchangeRecord.setUpdateTime(new Date());
-        return userCreditExchangeRecordService.addExchangeRecord(exchangeRecord);
+        userCreditExchangeRecordService.addExchangeRecord(exchangeRecord);
+
+        // 鎵e噺鐢ㄦ埛绉垎
+        userCreditManager.decreaseCredit(UserCreditRecord.builder()
+                .creditAmount(request.getConsumedCredits())
+                .consumptionMethod(UserCreditRecord.ConsumptionMethod.EXCHANGE_RED_PACKET)
+                .direction(UserCreditRecord.DIRECTION_CONSUME)
+                .identifierId(exchangeRecord.getId()+"")
+                .uid(exchangeRecord.getUid())
+                .description("绾㈠寘鍏戞崲")
+                .build());
+        return exchangeRecord.getId();
     }
 
     /**
@@ -177,7 +192,7 @@
      * @param credit
      * @return
      */
-    private BigDecimal calculateExchangeAmount(Long uid, int credit) throws UserCreditExchangeException{
+    public BigDecimal calculateExchangeAmount(Long uid, int credit) throws UserCreditExchangeException{
         long count =  userCreditExchangeRecordService.countExchangeRecords(CreditExchangeRecordMapper.DaoQuery.builder()
                 .uid(uid).build());
         Date nowDate =  new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(System.currentTimeMillis(),"yyyyMMddHHmm"),"yyyyMMddHHmm"));
@@ -186,9 +201,10 @@
         if(count<=0){
             // 鏂颁汉鍏戞崲
             List<ExchangeRate>  rates =  exchangeRateService.listExchangeRates(ExchangeRateMapper.DaoQuery.builder()
-                            .exchangeType(ExchangeRate.ExchangeType.NEW_USER_EXCHANGE)
-                            .minStartTime(nowDate)
-                            .maxEndTime(nowDate)
+                            .exchangeType(ExchangeRate.ExchangeRateType.NEW_USER_EXCHANGE)
+                            .maxStartTime(nowDate)
+                            .minEndTime(nowDate)
+                            .count(Integer.MAX_VALUE)
                     .build());
             if(rates.isEmpty()) {
                 throw new UserCreditExchangeException(UserCreditExchangeException.CODE_COMMON,"鏂颁汉鍏戞崲姹囩巼鏈缃�");
@@ -197,15 +213,21 @@
         }else{
             // 鑰佺敤鎴峰厬鎹�
             List<ExchangeRate>  rates =  exchangeRateService.listExchangeRates(ExchangeRateMapper.DaoQuery.builder()
-                    .exchangeType(ExchangeRate.ExchangeType.GENERAL_EXCHANGE)
-                    .minStartTime(nowDate)
-                    .maxEndTime(nowDate)
+                    .exchangeType(ExchangeRate.ExchangeRateType.GENERAL_EXCHANGE)
+                    .maxStartTime(nowDate)
+                    .minEndTime(nowDate)
+                    .count(Integer.MAX_VALUE)
                     .build());
             if(rates.isEmpty()) {
                 throw new UserCreditExchangeException(UserCreditExchangeException.CODE_COMMON,"鑰佺敤鎴峰厬鎹㈡眹鐜囨湭璁剧疆");
             }
             money = new BigDecimal(credit).multiply(rates.get(0).getRate()).setScale(2, RoundingMode.HALF_UP);
         }
+
+        CreditSetting setting =  creditSettingService.getSettingCacheByType(CreditSetting.CreditSettingType.MINIMUM_EXCHANGE_AMOUNT, nowDate);
+        if(setting!=null&& new BigDecimal(setting.getValue()).compareTo(money)>0){
+            throw new UserCreditExchangeException(UserCreditExchangeException.CODE_COMMON,String.format("鍏戞崲閲戦涓嶈兘浣庝簬%s鍏�",setting.getValue()));
+        }
         return money;
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0