1
dd
2026-01-27 0ebdfd97b5400c864584147bd72a0de768172d6e
src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -632,34 +632,31 @@
    }
    @Override
    public ServerResponse transfer(String fromType, String toType, String amt,HttpServletRequest request) {
        try {
            User user =  userService.getCurrentUser(request);
            UserAssets formAssets = userAssetsServices.assetsByTypeAndUserId(fromType,user.getId());
            BigDecimal amtBig = new BigDecimal(amt).abs();
    @Transactional
    public ServerResponse transfer(String fromType, String toType, String amt,HttpServletRequest request) throws Exception {
        User user =  userService.getCurrentUser(request);
        UserAssets formAssets = userAssetsServices.assetsByTypeAndUserId(fromType,user.getId());
        BigDecimal amtBig = new BigDecimal(amt).abs();
            // 转换手续费率
            BigDecimal siteSettingBuyFee = new BigDecimal(iStockConfigServices.queryByKey(EConfigKey.EXCHANGE_HANDLING_CHARGE.getCode()).getCValue()) ;
            BigDecimal orderFree = siteSettingBuyFee.multiply(amtBig);
            //资金校验
            BigDecimal needAmt = amtBig.add(orderFree);
            if(formAssets.getAvailableBalance().compareTo(needAmt)<0){
                return ServerResponse.createByErrorMsg("余额不足", request);
            }
            if (orderFree.compareTo(BigDecimal.ZERO) > 0) {
                userAssetsServices.availablebalanceChange(fromType, user.getId(), EUserAssets.HANDLING_CHARGE, orderFree, "", "");
            }
            userAssetsServices.availablebalanceChange(fromType, user.getId(), EUserAssets.TRANSFER, amtBig.negate(),fromType+"/"+toType,"");
            //转换金额
            amtBig = userAssetsServices.exchangeAmountByRate(fromType, toType, amtBig);
            userAssetsServices.availablebalanceChange(toType,user.getId(), EUserAssets.TRANSFER, amtBig.setScale(5,RoundingMode.HALF_DOWN),fromType+"/"+toType,"");
            return ServerResponse.createBySuccess("操作成功", request);
        } catch (Exception e) {
            return ServerResponse.createByErrorMsg(e.getMessage());
        // 转换手续费率
        BigDecimal siteSettingBuyFee = new BigDecimal(iStockConfigServices.queryByKey(EConfigKey.EXCHANGE_HANDLING_CHARGE.getCode()).getCValue()) ;
        BigDecimal orderFree = siteSettingBuyFee.multiply(amtBig);
        //资金校验
        BigDecimal needAmt = amtBig.add(orderFree);
        if(formAssets.getAvailableBalance().compareTo(needAmt)<0){
            return ServerResponse.createByErrorMsg("余额不足", request);
        }
        if (orderFree.compareTo(BigDecimal.ZERO) > 0) {
            userAssetsServices.availablebalanceChange(fromType, user.getId(), EUserAssets.HANDLING_CHARGE, orderFree, "", "");
        }
        userAssetsServices.availablebalanceChange(fromType, user.getId(), EUserAssets.TRANSFER, amtBig.negate(),fromType+"/"+toType,"");
        //转换金额
        amtBig = userAssetsServices.exchangeAmountByRate(fromType, toType, amtBig);
        userAssetsServices.availablebalanceChange(toType,user.getId(), EUserAssets.TRANSFER, amtBig.setScale(5,RoundingMode.HALF_DOWN),fromType+"/"+toType,"");
        return ServerResponse.createBySuccess("操作成功", request);
    }
@@ -1203,5 +1200,12 @@
        return  ServerResponse.createBySuccess(mapper.selectList(queryWrapper));
    }
    @Override
    public int countPendingAuth() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("is_active", 1);
        return this.userMapper.selectCount(queryWrapper).intValue();
    }
}