| | |
| | | } |
| | | |
| | | |
| | | |
| | | // 如果是红包兑换,判断用户兑换频率 |
| | | if (exchangeType == CreditExchangeRecord.ExchangeType.FUND_EXCHANGE) { |
| | | checkRedPacketExchangeFrequency(userId); |
| | |
| | | |
| | | if (exchangeType == CreditExchangeRecord.ExchangeType.FUND_EXCHANGE) { |
| | | // 计算可兑换金额(如果是红包兑换) |
| | | BigDecimal exchangeAmount = calculateExchangeAmount(request.getUid(), request.getConsumedCredits()); |
| | | BigDecimal exchangeAmount = calculateExchangeAmount(request.getUid(), request.getConsumedCredits(), true); |
| | | exchangeRecord.setExchangeValue(exchangeAmount); |
| | | } |
| | | |
| | |
| | | throw new UserCreditExchangeException(UserCreditExchangeException.CODE_COMMON, "兑换已处理"); |
| | | } |
| | | |
| | | |
| | | // 如果是红包兑换,调用通过兑换逻辑(TODO) |
| | | if (exchangeRecord.getExchangeType() == CreditExchangeRecord.ExchangeType.FUND_EXCHANGE) { |
| | | try { |
| | |
| | | .exchangeStatusDescription("兑换已通过") |
| | | .updateTime(new Date()) |
| | | .build()); |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | /** |
| | | * 计算兑换金额 |
| | | * |
| | | * @param uid |
| | | * @param credit |
| | | * @return |
| | | */ |
| | | public BigDecimal calculateExchangeAmount(Long uid, int credit) throws UserCreditExchangeException{ |
| | | 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")); |
| | |
| | | } |
| | | money = new BigDecimal(credit).multiply(rates.get(0).getRate()).setScale(2, RoundingMode.HALF_UP); |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | } |