1
zj
2025-05-07 ad35d23bdd072d7179eb4bfcb588975f37a68f53
src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -7,8 +7,10 @@
import com.nq.dao.*;
import com.nq.enums.EStockType;
import com.nq.enums.EUserAssets;
import com.nq.enums.TradeType;
import com.nq.pojo.*;
import com.nq.service.IUserAssetsServices;
import com.nq.service.TransactionLogService;
import com.nq.utils.KeyUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -51,6 +53,8 @@
    @Autowired
    StockConfigMapper stockConfigMapper;
    @Autowired
    TransactionLogService transactionLogService;
    @Override
    public UserAssets assetsByTypeAndUserId(String accetType, Integer userId) {
        if(accetType.equals("SZHB")){
@@ -179,7 +183,23 @@
               userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
           }
            userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(amount));
        }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.CALCULATE_PROFIT_AND_LOSS.getCode())){
       }else  if(Objects.equals(eUserAssets.getCode(), EUserAssets.THE_DEPOSIT_WILL_BE_RETURNED_IF_THE_ORDER_IS_CANCELLED.getCode())){
           if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
               BigDecimal availableBalance = amount.subtract(userAssets.getAmountToBeCovered());
               availableBalance = availableBalance.subtract(userAssets.getHandlingChargeWritten());
               if(availableBalance.compareTo(BigDecimal.ZERO) >= 0){
                   userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(availableBalance));
                   userAssets.setAmountToBeCovered(BigDecimal.ZERO);
                   userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
               }else{
                   BigDecimal amountToBeCovered = userAssets.getAmountToBeCovered().subtract(amount);
                   userAssets.setAmountToBeCovered(amountToBeCovered);
               }
           }else{
               userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
           }
           userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(amount));
       }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.CALCULATE_PROFIT_AND_LOSS.getCode())){
           extracted(amount, userAssets);
       }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.TRANSFER.getCode())){
            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
@@ -221,6 +241,9 @@
               userAssets.setCumulativeProfitAndLoss(userAssets.getCumulativeProfitAndLoss().add(amount));
           }
           extracted(userAssets);
       }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.CALL.getCode())){
           userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(amount));
           extracted(amount, userAssets);
       }
        if(null != userPosition){
@@ -239,7 +262,15 @@
        moneyLog.setSymbol(EStockType.getEStockTypeByCode(accetType).getSymbol());
        moneyLog.setCreateTime(new Date());
        moneyLogMapper.insert(moneyLog);
        return userAssetsMapper.updateById(userAssets)>1;
        int update = userAssetsMapper.updateById(userAssets);
        if(update > 0){
            if(Objects.equals(eUserAssets.getCode(), EUserAssets.HANDLING_CHARGE.getCode())){
                amount = amount.negate();
            }
            transactionLogService.add(userId, eUserAssets.getDesc(),amount.toString(),eUserAssets.getDesc());
            return true;
        }
        return false;
    }
    @Override
@@ -323,7 +354,7 @@
    // 执行转账操作
    private void performTransfer(String disbursementAccount,UserAssets disbursement, UserAssets deposit, BigDecimal transferAmount) {
        StockConfig stockConfig = stockConfigMapper.selectOne(new LambdaQueryWrapper<StockConfig>().eq(StockConfig::getCKey, "usdt_parities"));
        if(disbursementAccount.equals("USDT")){
        if(disbursementAccount.equals("USD")){
            // 更新转入账户余额
            deposit.setAvailableBalance(deposit.getAvailableBalance().add(transferAmount.multiply(new BigDecimal(stockConfig.getCValue()))));
            userAssetsMapper.updateById(deposit);