1
zyy
2026-02-12 e89e71158de719c70c487110a0f8d00d4a30d30b
src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -68,7 +68,7 @@
    @Override
    public ServerResponse updateUserAssets(Integer id, String amt,String type) {
        UserAssets userAssets = userAssetsMapper.selectById(id);
        UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
        //UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
        //  0 入款  1是扣钱  2 是充值  3 是提币
        BigDecimal bigAmt = new BigDecimal(amt);
        if(type.equals("0") || type.equals("1")){
@@ -99,10 +99,10 @@
                }else{
                    userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(bigAmt));
                }
                if(null != userPosition){
                /*if(null != userPosition){
                    userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered().add(userAssets.getHandlingChargeWritten()));
                    userPositionMapper.updateById(userPosition);
                }
                }*/
            }else{
                if(userAssets.getAvailableBalance().compareTo(BigDecimal.ZERO) <= 0){
                    return ServerResponse.createByErrorMsg("客户账户余额为0");
@@ -111,9 +111,9 @@
                }
                userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(bigAmt));
            }
            if(null != userPosition){
            /*if(null != userPosition){
                userPositionMapper.updateById(userPosition);
            }
            }*/
            if( userAssetsMapper.updateById(userAssets)>0){
//                saveUserRecharge(userAssets.getUserId(),bigAmt);
                return ServerResponse.createBySuccess();
@@ -169,7 +169,7 @@
    public Boolean availablebalanceChange(String accetType, Integer userId, EUserAssets eUserAssets, BigDecimal amount, String desc, String descType) {
        UserAssets userAssets =   assetsByTypeAndUserId(accetType,userId);
        UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
//        UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
        String type = eUserAssets.getDesc();
        String before = userAssets.getAvailableBalance().toString();
        String accectType = userAssets.getAccectType();
@@ -184,10 +184,15 @@
               BigDecimal availableBalance = amount.subtract(userAssets.getAmountToBeCovered());
               availableBalance = availableBalance.subtract(userAssets.getHandlingChargeWritten());
               if(availableBalance.compareTo(BigDecimal.ZERO) >= 0){
                   //冻结 扣除的已补金额
                   userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(userAssets.getAmountToBeCovered()));
                   userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(availableBalance));
                   userAssets.setAmountToBeCovered(BigDecimal.ZERO);
                   userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
               }else{
                   userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount));
                   BigDecimal amountToBeCovered = userAssets.getAmountToBeCovered().subtract(amount);
                   userAssets.setAmountToBeCovered(amountToBeCovered);
               }
@@ -246,10 +251,60 @@
           extracted(userAssets);
       }
        if(null != userPosition){
            userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered().add(userAssets.getHandlingChargeWritten()));
            userPositionMapper.updateById(userPosition);
//        if(null != userPosition){
//            userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered().add(userAssets.getHandlingChargeWritten()));
//            userPositionMapper.updateById(userPosition);
//        }
        String  after =  userAssets.getAvailableBalance().toString();
        MoneyLog moneyLog = new MoneyLog();
        moneyLog.setDescs(eUserAssets.getDesc());
        moneyLog.setBeFore(before);
        moneyLog.setAfter(after);
        moneyLog.setAmount(amount.toString());
        moneyLog.setAccectType(accectType);
        moneyLog.setType(eUserAssets.getCode());
        moneyLog.setUserId(userId+"");
        moneyLog.setSymbol(EStockType.getEStockTypeByCode(accetType).getSymbol());
        moneyLog.setCreateTime(new Date());
        moneyLogMapper.insert(moneyLog);
        return userAssetsMapper.updateById(userAssets)>1;
    }
    //平仓返回保证金
    @Override
    public Boolean availablebalanceSell(String accetType, Integer userId, EUserAssets eUserAssets, BigDecimal amount, BigDecimal fzAmount) {
        UserAssets userAssets =   assetsByTypeAndUserId(accetType,userId);
//        UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
        String before = userAssets.getAvailableBalance().toString();
        String accectType = userAssets.getAccectType();
        if(Objects.equals(eUserAssets.getCode(), EUserAssets.CLOSE_POSITION_RETURN_SECURITY_DEPOSIT.getCode())){
            userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(fzAmount));
            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.setFreezeMoney(userAssets.getFreezeMoney().add(userAssets.getAmountToBeCovered()));
                    userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(availableBalance));
                    userAssets.setAmountToBeCovered(BigDecimal.ZERO);
                    userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
                }else{
                    userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount));
                    BigDecimal amountToBeCovered = userAssets.getAmountToBeCovered().subtract(amount);
                    userAssets.setAmountToBeCovered(amountToBeCovered);
                }
            }else{
                userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
            }
        }
//        if(null != userPosition){
//            userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered().add(userAssets.getHandlingChargeWritten()));
//            userPositionMapper.updateById(userPosition);
//        }
        String  after =  userAssets.getAvailableBalance().toString();
        MoneyLog moneyLog = new MoneyLog();
        moneyLog.setDescs(eUserAssets.getDesc());