zyy
2025-11-20 4e5138fdfd60edf0d67787582905dfcc0801d667
trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/internal/LoanServiceImpl.java
@@ -2,6 +2,7 @@
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.sql.Timestamp;
import java.util.*;
import java.util.regex.Pattern;
@@ -15,12 +16,15 @@
import com.yami.trading.bean.model.MoneyLog;
import com.yami.trading.bean.model.User;
import com.yami.trading.bean.model.Wallet;
import com.yami.trading.bean.rate.domain.ExchangeRate;
import com.yami.trading.common.constants.Constants;
import com.yami.trading.common.domain.Result;
import com.yami.trading.common.exception.BusinessException;
import com.yami.trading.common.exception.YamiShopBindException;
import com.yami.trading.dao.loan.LoanParamMapper;
import com.yami.trading.service.MoneyLogService;
import com.yami.trading.service.WalletService;
import com.yami.trading.service.rate.ExchangeRateService;
import com.yami.trading.service.user.UserService;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
@@ -58,6 +62,9 @@
   @Autowired
   LoanParamMapper loanParamMapper;
   @Autowired
   ExchangeRateService exchangeRateService;
   @Getter
   HashMap<String,Object> paramMap = new HashMap<>();
@@ -433,10 +440,19 @@
         }
         //到账金额
         double amt = loanOrder.getQuota().doubleValue();
         if (!loanOrder.getSymbol().equalsIgnoreCase("usdt")) {
            ExchangeRate exchangeRate = exchangeRateService.findBy(ExchangeRate.IN, loanOrder.getSymbol().toUpperCase());
            if (exchangeRate == null) {
               throw new YamiShopBindException("汇率未设置!");
            }
            BigDecimal money = BigDecimal.valueOf(amt).divide(exchangeRate.getRata(), 8, RoundingMode.HALF_UP);
            amt = money.doubleValue();
         }
         User user = userService.getById(loanOrder.getPartyId());
         double remainLoanLimit  = user.getLoanLimit() - amt;
         user.setLoanLimit(remainLoanLimit < 0 ? 0 : remainLoanLimit);
         double remainLoanLimit  = user.getLoanLimit() - amt  < 0 ? 0 : user.getLoanLimit() - amt;
         BigDecimal loanLimit =  BigDecimal.valueOf(remainLoanLimit).setScale(2, RoundingMode.HALF_UP);
         user.setLoanLimit(loanLimit.doubleValue());
         userService.updateById(user);
         //通过
@@ -446,11 +462,11 @@
         MoneyLog log = new MoneyLog();
         log.setCategory(Constants.MONEYLOG_CATEGORY_LOAN);
         log.setAmountBefore(new BigDecimal(amountBefore));
         log.setAmount(new BigDecimal(amt));
         log.setAmountAfter(wallet.getMoney().add(BigDecimal.valueOf(amt)));
         log.setAmount(loanOrder.getQuota());
         log.setAmountAfter(BigDecimal.valueOf(amountBefore + amt));
         log.setLog("借贷放款,订单号[" + loanOrder.getUuid() + "]");
         log.setUserId(loanOrder.getPartyId());
         log.setWalletType(Constants.WALLET);
         log.setWalletType(loanOrder.getSymbol().toUpperCase());
         log.setContentType(Constants.MONEYLOG_CONTENT_LOAN_ADD);
         moneyLogService.save(log);
      }