From c437f665487c44650597d260ffe3ed79b4585c13 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Sun, 11 Oct 2020 16:02:24 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java | 46 ++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 40 insertions(+), 6 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..13f7a05 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) { @@ -494,7 +494,7 @@ memberAccountMoneyChangeDao.insert(memberAccountRecord); //添加资金划转历史记录 - memberAccountRecord.setContent("由合约"+symbol+"账户转入"); + memberAccountRecord.setContent("合约"+symbol+"账户转入"); memberAccountRecord.setSymbol(walletCode); memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); memberAccountRecord.setAmount(balance); @@ -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 @@ -931,7 +965,7 @@ memberAccountMoneyChangeDao.insert(memberAccountRecord); //添加合约资金划转历史记录 - memberAccountRecord.setContent("由合约"+symbolOut+"账户转入至合约"+symbolIn+"账户"); + memberAccountRecord.setContent("合约"+symbolOut+"账户转入至合约"+symbolIn+"账户"); memberAccountRecord.setAmount(balance); memberAccountMoneyChangeDao.insert(memberAccountRecord); -- Gitblit v1.9.1