xiaoyong931011
2021-03-29 2159ddb3466f66711bb3031314aace36fa187838
20210329  全仓模式下资金划转,需要减去亏损
1 files modified
12 ■■■■ changed files
src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java 12 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java
@@ -416,20 +416,20 @@
        if (balance.compareTo(BigDecimal.ZERO) <= 0) {
            return Result.fail(MessageSourceUtils.getString("member_service_0004"));
        }
        //获取合约当前持仓类型
        Integer contractPositionType = memberEntity.getContractPositionType();
        // 总盈利
        BigDecimal totalProfitOrLess = BigDecimal.ZERO;
        if(contractPositionType == 2){
        //获取全仓模式下的所有持仓信息
        PlatformTradeSettingEntity tradeSetting = cacheSettingUtils.getTradeSetting();
        BigDecimal newPriceSymbol = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol)));
        List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListForWholeByMemberIdAndSymbol(memberEntity.getId(),"");
        // 总盈利
        BigDecimal totalProfitOrLess = BigDecimal.ZERO;
        if (CollUtil.isNotEmpty(holdOrderEntities)) {
            for (ContractHoldOrderEntity holdOrderEntity : holdOrderEntities) {
                // 获取最新价
                BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol())));
                BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(holdOrderEntity.getSymbol());
                // 单个订单盈利
                BigDecimal profitOrLess = BigDecimal.ZERO;
                // 开多
@@ -439,7 +439,6 @@
                } else {
                    profitOrLess = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())).multiply(lotNumber);
                }
                if (MemberEntity.IS_PROFIT_Y == memberEntity.getIsProfit()) {
                    if (profitOrLess.compareTo(BigDecimal.ZERO) > 0) {
                        profitOrLess = profitOrLess.multiply(BigDecimal.ONE.subtract(tradeSetting.getForceParam()));
@@ -450,6 +449,7 @@
                totalProfitOrLess = totalProfitOrLess.add(profitOrLess);
            }
        }
        }
        
        String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue();
        MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, symbol);