From 320e9165ac6cc6d90978fbef3074a8ed9add1790 Mon Sep 17 00:00:00 2001
From: Administrator <1101184511@qq.com>
Date: 星期五, 09 五月 2025 01:21:32 +0800
Subject: [PATCH] 后台管理页面完成

---
 src/main/java/com/taoke/autopay/manager/UserCreditExchangeManager.java |  101 ++++++++++++++++++++++++++------------------------
 1 files changed, 52 insertions(+), 49 deletions(-)

diff --git a/src/main/java/com/taoke/autopay/manager/UserCreditExchangeManager.java b/src/main/java/com/taoke/autopay/manager/UserCreditExchangeManager.java
index a4580d3..b858542 100644
--- a/src/main/java/com/taoke/autopay/manager/UserCreditExchangeManager.java
+++ b/src/main/java/com/taoke/autopay/manager/UserCreditExchangeManager.java
@@ -51,16 +51,15 @@
     public Long exchangeCredit(CreditExchangeRecord request) throws UserCreditExchangeException {
         Long userId = request.getUid();
         CreditExchangeRecord.ExchangeType exchangeType = request.getExchangeType();
-        if(exchangeType!=CreditExchangeRecord.ExchangeType.FUND_EXCHANGE){
-            throw  new UserCreditExchangeException(UserCreditExchangeException.CODE_COMMON,"鍙敮鎸佺孩鍖呭厬鎹�");
+        if (exchangeType != CreditExchangeRecord.ExchangeType.FUND_EXCHANGE) {
+            throw new UserCreditExchangeException(UserCreditExchangeException.CODE_COMMON, "鍙敮鎸佺孩鍖呭厬鎹�");
         }
 
         // 妫�鏌ョ敤鎴风Н鍒嗕綑棰濇槸鍚﹁冻澶�
         UserCreditBalance balance = userCreditBalanceService.getCreditBalanceByUserId(userId);
-        if (balance == null || balance.getCreditBalance() <request.getConsumedCredits()) {
+        if (balance == null || balance.getCreditBalance() < request.getConsumedCredits()) {
             throw new UserCreditExchangeException(UserCreditExchangeException.CODE_BALANCE_NOT_ENOUGH, "鐢ㄦ埛绉垎涓嶈冻");
         }
-
 
 
         // 濡傛灉鏄孩鍖呭厬鎹紝鍒ゆ柇鐢ㄦ埛鍏戞崲棰戠巼
@@ -70,7 +69,7 @@
 
         // 鏌ヨ鐢ㄦ埛缁戝畾鐨勬敮浠樺疂璐︽埛
         List<UserAlipayBinding> alipayBindings = userAlipayBindingService.getBindingsByUid(userId);
-        if (alipayBindings == null|| alipayBindings.isEmpty()) {
+        if (alipayBindings == null || alipayBindings.isEmpty()) {
             throw new UserCreditExchangeException(UserCreditExchangeException.CODE_NOT_BIND_ALIPAY_ACCOUNT, "鐢ㄦ埛鏈粦瀹氭敮浠樺疂璐︽埛");
         }
 
@@ -78,7 +77,7 @@
 
         if (exchangeType == CreditExchangeRecord.ExchangeType.FUND_EXCHANGE) {
             // 璁$畻鍙厬鎹㈤噾棰濓紙濡傛灉鏄孩鍖呭厬鎹級
-            BigDecimal exchangeAmount = calculateExchangeAmount(request.getUid(), request.getConsumedCredits());
+            BigDecimal exchangeAmount = calculateExchangeAmount(request.getUid(), request.getConsumedCredits(), true);
             exchangeRecord.setExchangeValue(exchangeAmount);
         }
 
@@ -86,7 +85,7 @@
         exchangeRecord.setUid(userId);
         exchangeRecord.setExchangeType(exchangeType);
         exchangeRecord.setConsumedCredits(request.getConsumedCredits());
-        exchangeRecord.setCreditBalance(balance.getCreditBalance()-request.getConsumedCredits());
+        exchangeRecord.setCreditBalance(balance.getCreditBalance() - request.getConsumedCredits());
         exchangeRecord.setExchangeStatus(CreditExchangeRecord.STATUS_NOT_VERIFY);
         exchangeRecord.setExchangeStatusDescription("鏈鏍�");
         exchangeRecord.setExchangeInfo1(alipayBindings.get(0).getAlipayName()); // 璁剧疆鏀粯瀹濊处鎴�
@@ -100,7 +99,7 @@
                 .creditAmount(request.getConsumedCredits())
                 .consumptionMethod(UserCreditRecord.ConsumptionMethod.EXCHANGE_RED_PACKET)
                 .direction(UserCreditRecord.DIRECTION_CONSUME)
-                .identifierId(exchangeRecord.getId()+"")
+                .identifierId(exchangeRecord.getId() + "")
                 .uid(exchangeRecord.getUid())
                 .description("绾㈠寘鍏戞崲")
                 .build());
@@ -113,22 +112,23 @@
      * @param exchangeRecordId 鍏戞崲璁板綍ID
      */
     @Transactional(rollbackFor = Exception.class)
-    public void approveExchange(Long exchangeRecordId) throws UserCreditExchangeException{
+    public void approveExchange(Long exchangeRecordId) throws UserCreditExchangeException {
         CreditExchangeRecord exchangeRecord = userCreditExchangeRecordService.getExchangeRecordByIdForUpdate(exchangeRecordId);
         if (exchangeRecord == null) {
             throw new UserCreditExchangeException(UserCreditExchangeException.CODE_NOT_BIND_ALIPAY_ACCOUNT, "鍏戞崲璁板綍涓嶅瓨鍦�");
         }
 
-        if(exchangeRecord.getExchangeStatus() != CreditExchangeRecord.STATUS_NOT_VERIFY){
+        if (exchangeRecord.getExchangeStatus() != CreditExchangeRecord.STATUS_NOT_VERIFY) {
             throw new UserCreditExchangeException(UserCreditExchangeException.CODE_COMMON, "鍏戞崲宸插鐞�");
         }
+
 
         // 濡傛灉鏄孩鍖呭厬鎹紝璋冪敤閫氳繃鍏戞崲閫昏緫锛圱ODO锛�
         if (exchangeRecord.getExchangeType() == CreditExchangeRecord.ExchangeType.FUND_EXCHANGE) {
             try {
-                AlipayUtil.transfer("credit_exchange_"+exchangeRecordId, exchangeRecord.getExchangeInfo2(), exchangeRecord.getExchangeInfo1(), exchangeRecord.getExchangeValue(), "绾㈠寘鍏戞崲", "绾㈠寘鍏戞崲");
+                AlipayUtil.transfer("credit_exchange_" + exchangeRecordId, exchangeRecord.getExchangeInfo2(), exchangeRecord.getExchangeInfo1(), exchangeRecord.getExchangeValue(), "绾㈠寘鍏戞崲", "绾㈠寘鍏戞崲");
             } catch (AlipayApiException e) {
-                throw new UserCreditExchangeException(UserCreditExchangeException.CODE_ALIPAY_TRANSFER_FAILED, e.getErrCode()+ ":"+ e.getErrMsg());
+                throw new UserCreditExchangeException(UserCreditExchangeException.CODE_ALIPAY_TRANSFER_FAILED, e.getErrCode() + ":" + e.getErrMsg());
             } catch (AlipayUtil.AlipayTransferException e) {
                 throw new UserCreditExchangeException(UserCreditExchangeException.CODE_ALIPAY_TRANSFER_FAILED, e.getMessage());
             }
@@ -136,11 +136,12 @@
 
         // 鏀瑰彉鍏戞崲璁板綍鐘舵��
         userCreditExchangeRecordService.updateExchangeRecord(CreditExchangeRecord.builder()
-                        .id(exchangeRecordId)
-                        .exchangeStatus(CreditExchangeRecord.STATUS_PASSED)
-                        .exchangeStatusDescription("鍏戞崲宸查�氳繃")
-                        .updateTime(new Date())
+                .id(exchangeRecordId)
+                .exchangeStatus(CreditExchangeRecord.STATUS_PASSED)
+                .exchangeStatusDescription("鍏戞崲宸查�氳繃")
+                .updateTime(new Date())
                 .build());
+
     }
 
     /**
@@ -149,13 +150,13 @@
      * @param exchangeRecordId 鍏戞崲璁板綍ID
      */
     @Transactional(rollbackFor = Exception.class)
-    public void rejectExchange(Long exchangeRecordId) throws UserCreditExchangeException{
+    public void rejectExchange(Long exchangeRecordId) throws UserCreditExchangeException {
         CreditExchangeRecord exchangeRecord = userCreditExchangeRecordService.getExchangeRecordByIdForUpdate(exchangeRecordId);
         if (exchangeRecord == null) {
             throw new UserCreditExchangeException(UserCreditExchangeException.CODE_NOT_BIND_ALIPAY_ACCOUNT, "鍏戞崲璁板綍涓嶅瓨鍦�");
         }
 
-        if(exchangeRecord.getExchangeStatus() != CreditExchangeRecord.STATUS_NOT_VERIFY){
+        if (exchangeRecord.getExchangeStatus() != CreditExchangeRecord.STATUS_NOT_VERIFY) {
             throw new UserCreditExchangeException(UserCreditExchangeException.CODE_COMMON, "鍏戞崲宸插鐞�");
         }
 
@@ -170,7 +171,7 @@
                 .identifierId(exchangeRecord.getId().toString())
                 .acquisitionMethod(UserCreditRecord.AcquisitionMethod.EXCHANGE_RETURN)
                 .description("鍏戞崲閫�鍥�")
-               .createTime(new Date())
+                .createTime(new Date())
                 .updateTime(new Date()).build());
         userCreditExchangeRecordService.updateExchangeRecord(CreditExchangeRecord.builder()
                 .id(exchangeRecordId)
@@ -185,65 +186,67 @@
      *
      * @param userId 鐢ㄦ埛ID
      */
-    private void checkRedPacketExchangeFrequency(Long userId) throws UserCreditExchangeException{
+    private void checkRedPacketExchangeFrequency(Long userId) throws UserCreditExchangeException {
         //瀹炵幇绾㈠寘鍏戞崲棰戠巼妫�鏌ラ�昏緫
         // 鑾峰彇浠婃棩鍏戞崲鐨勬鏁�
-        long nowTimeStamp=System.currentTimeMillis();
-        long count =  userCreditExchangeRecordService.countExchangeRecords(CreditExchangeRecordMapper.DaoQuery.builder()
-                        .uid(userId)
-                        .minCreateTime(new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(nowTimeStamp,"yyyyMMdd"),"yyyyMMdd")))
-                        .maxCreateTime(new Date(nowTimeStamp))
+        long nowTimeStamp = System.currentTimeMillis();
+        long count = userCreditExchangeRecordService.countExchangeRecords(CreditExchangeRecordMapper.DaoQuery.builder()
+                .uid(userId)
+                .minCreateTime(new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(nowTimeStamp, "yyyyMMdd"), "yyyyMMdd")))
+                .maxCreateTime(new Date(nowTimeStamp))
                 .build());
-        CreditSetting setting =  creditSettingService.getSettingCacheByType(CreditSetting.CreditSettingType.DAILY_EXCHANGE_LIMIT, new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(nowTimeStamp,"yyyyMMddHHmm"),"yyyyMMddHHmm")));
-        if(setting==null){
-            throw new UserCreditExchangeException(UserCreditExchangeException.CODE_EXCHANGE_FREQUENCY_LIMIT,"鍏戞崲棰戠巼鏈缃�");
+        CreditSetting setting = creditSettingService.getSettingCacheByType(CreditSetting.CreditSettingType.DAILY_EXCHANGE_LIMIT, new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(nowTimeStamp, "yyyyMMddHHmm"), "yyyyMMddHHmm")));
+        if (setting == null) {
+            throw new UserCreditExchangeException(UserCreditExchangeException.CODE_EXCHANGE_FREQUENCY_LIMIT, "鍏戞崲棰戠巼鏈缃�");
         }
-        if(count>=Integer.parseInt(setting.getValue())){
+        if (count >= Integer.parseInt(setting.getValue())) {
             throw new UserCreditExchangeException(UserCreditExchangeException.CODE_EXCHANGE_FREQUENCY_LIMIT, String.format("姣忓ぉ鍙兘鍏戞崲%s娆�", setting.getValue()));
         }
     }
 
     /**
      * 璁$畻鍏戞崲閲戦
+     *
      * @param uid
      * @param credit
      * @return
      */
-    public BigDecimal calculateExchangeAmount(Long uid, int credit) throws UserCreditExchangeException{
-        long count =  userCreditExchangeRecordService.countExchangeRecords(CreditExchangeRecordMapper.DaoQuery.builder()
+    public BigDecimal calculateExchangeAmount(Long uid, int credit, boolean forExchange) throws UserCreditExchangeException {
+        long count = userCreditExchangeRecordService.countExchangeRecords(CreditExchangeRecordMapper.DaoQuery.builder()
                 .uid(uid).build());
-        Date nowDate =  new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(System.currentTimeMillis(),"yyyyMMddHHmm"),"yyyyMMddHHmm"));
+        Date nowDate = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMddHHmm"), "yyyyMMddHHmm"));
 
-        BigDecimal money =null;
-        if(count<=0){
+        BigDecimal money = null;
+        if (count <= 0) {
             // 鏂颁汉鍏戞崲
-            List<ExchangeRate>  rates =  exchangeRateService.listExchangeRates(ExchangeRateMapper.DaoQuery.builder()
-                            .exchangeType(ExchangeRate.ExchangeRateType.NEW_USER_EXCHANGE)
-                            .maxStartTime(nowDate)
-                            .minEndTime(nowDate)
-                            .count(Integer.MAX_VALUE)
+            List<ExchangeRate> rates = exchangeRateService.listExchangeRates(ExchangeRateMapper.DaoQuery.builder()
+                    .exchangeType(ExchangeRate.ExchangeRateType.NEW_USER_EXCHANGE)
+                    .maxStartTime(nowDate)
+                    .minEndTime(nowDate)
+                    .count(Integer.MAX_VALUE)
                     .build());
-            if(rates.isEmpty()) {
-                throw new UserCreditExchangeException(UserCreditExchangeException.CODE_COMMON,"鏂颁汉鍏戞崲姹囩巼鏈缃�");
+            if (rates.isEmpty()) {
+                throw new UserCreditExchangeException(UserCreditExchangeException.CODE_COMMON, "鏂颁汉鍏戞崲姹囩巼鏈缃�");
             }
             money = new BigDecimal(credit).multiply(rates.get(0).getRate()).setScale(2, RoundingMode.HALF_UP);
-        }else{
+        } else {
             // 鑰佺敤鎴峰厬鎹�
-            List<ExchangeRate>  rates =  exchangeRateService.listExchangeRates(ExchangeRateMapper.DaoQuery.builder()
+            List<ExchangeRate> rates = exchangeRateService.listExchangeRates(ExchangeRateMapper.DaoQuery.builder()
                     .exchangeType(ExchangeRate.ExchangeRateType.GENERAL_EXCHANGE)
                     .maxStartTime(nowDate)
                     .minEndTime(nowDate)
                     .count(Integer.MAX_VALUE)
                     .build());
-            if(rates.isEmpty()) {
-                throw new UserCreditExchangeException(UserCreditExchangeException.CODE_COMMON,"鑰佺敤鎴峰厬鎹㈡眹鐜囨湭璁剧疆");
+            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()));
+        if (forExchange) {
+            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;
     }

--
Gitblit v1.8.0