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