From 595b7935a30e84fba1bc3561d05f9d19d3e32e1f Mon Sep 17 00:00:00 2001 From: Administrator <1101184511@qq.com> Date: 星期三, 23 四月 2025 00:45:48 +0800 Subject: [PATCH] 后台管理页面完成 --- src/main/java/com/taoke/autopay/manager/UserCreditExchangeManager.java | 51 +++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 41 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..293d64d 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(); } /** @@ -100,6 +115,10 @@ CreditExchangeRecord exchangeRecord = userCreditExchangeRecordService.getExchangeRecordByIdForUpdate(exchangeRecordId); if (exchangeRecord == null) { throw new UserCreditExchangeException(UserCreditExchangeException.CODE_NOT_BIND_ALIPAY_ACCOUNT, "鍏戞崲璁板綍涓嶅瓨鍦�"); + } + + if(exchangeRecord.getExchangeStatus() != CreditExchangeRecord.STATUS_NOT_VERIFY){ + throw new UserCreditExchangeException(UserCreditExchangeException.CODE_COMMON, "鍏戞崲宸插鐞�"); } // 濡傛灉鏄孩鍖呭厬鎹紝璋冪敤閫氳繃鍏戞崲閫昏緫锛圱ODO锛� @@ -127,6 +146,11 @@ if (exchangeRecord == null) { throw new UserCreditExchangeException(UserCreditExchangeException.CODE_NOT_BIND_ALIPAY_ACCOUNT, "鍏戞崲璁板綍涓嶅瓨鍦�"); } + + if(exchangeRecord.getExchangeStatus() != CreditExchangeRecord.STATUS_NOT_VERIFY){ + throw new UserCreditExchangeException(UserCreditExchangeException.CODE_COMMON, "鍏戞崲宸插鐞�"); + } + // 閫�鍥炵敤鎴风Н鍒嗕綑棰� userCreditBalanceService.increaseCreditBalance(exchangeRecord.getUid(), exchangeRecord.getConsumedCredits()); @@ -177,7 +201,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 +210,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 +222,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