From 5cf08fb67c6491eac16ce986306108c4fce77ed9 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Tue, 29 Sep 2020 18:18:28 +0800 Subject: [PATCH] Merge branch 'whole' of https://gitee.com/chonggaoxiao/new_excoin into whole --- src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java | 42 ++++++++++++++++++++++++++++++++++++++---- 1 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java index bda46fc..89de828 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java @@ -211,7 +211,7 @@ memberWalletContractInfoVo.setFrozenBalance(memberWalletContractEntity.getFrozenBalance().setScale(4, BigDecimal.ROUND_DOWN)); memberWalletContractInfoVo.setAvailableBalance(memberWalletContractEntity.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN)); memberWalletContractInfoVo.setTotalBalance(memberWalletContractEntity.getTotalBalance().setScale(4, BigDecimal.ROUND_DOWN)); - memberWalletContractInfoVo.setTotalRMBBalance(memberWalletContractEntity.getTotalBalance().multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); + memberWalletContractInfoVo.setTotalRMBBalance(memberWalletContractEntity.getAvailableBalance().multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); memberWalletContractInfoVo.setWalletCode(memberWalletContractEntity.getWalletCode()+"/USDT"); list.add(memberWalletContractInfoVo); totalCoin = totalCoin.add(memberWalletContractEntity.getTotalBalance()); @@ -416,7 +416,7 @@ Long memberId = LoginUserUtils.getAppLoginUser().getId(); MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); - List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbol, 1); + List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbol+"/USDT", 1); BigDecimal totalProfitOrLoss = BigDecimal.ZERO; if (CollUtil.isNotEmpty(list)) { for (ContractHoldOrderEntity holdOrderEntity : list) { @@ -507,8 +507,42 @@ //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, symbol); - BigDecimal availableBalance = walletContract.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN); - return Result.ok(availableBalance); + + MemberEntity memberEntity = memberDao.selectById(memberId); + List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbol+"/USDT", 1); + BigDecimal totalProfitOrLoss = BigDecimal.ZERO; + if (CollUtil.isNotEmpty(list)) { + for (ContractHoldOrderEntity holdOrderEntity : list) { + // 获取最新价 + BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol()))); + BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(holdOrderEntity.getSymbol()); + // 盈亏 + BigDecimal rewardRatio = BigDecimal.ZERO; + // 开多 + if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) { + // (最新价-开仓价)*规格*张数 + rewardRatio = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(lotNumber).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())); + // 开空 + } else { + // (开仓价-最新价)*规格*张数 + rewardRatio = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(lotNumber).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())); + } + + if (memberEntity.getIsProfit() == MemberEntity.IS_PROFIT_Y) { + PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting(); + if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) { + rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(tradeSettingEntity.getProfitParam())); + } + } + totalProfitOrLoss = totalProfitOrLoss.add(rewardRatio); + } + } + BigDecimal availableBalance = walletContract.getAvailableBalance(); + if(totalProfitOrLoss.compareTo(BigDecimal.ZERO) < 0) { + availableBalance = availableBalance.add(totalProfitOrLoss); + } + + return Result.ok(availableBalance.setScale(4, BigDecimal.ROUND_DOWN)); } @Override -- Gitblit v1.9.1