From 31796f3854bb0f89793d5122a2e1ab231aa44331 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 22 Mar 2021 14:53:07 +0800 Subject: [PATCH] 20210319 平仓加载中 --- src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java | 34 +++++++++++++++++++++++++++++++++- 1 files changed, 33 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java b/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java index 0d25b6e..ae89ee6 100644 --- a/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java @@ -57,6 +57,7 @@ private final ContractOrderMapper contractHoldOrderMapper; + private final AgentReturnMapper agentReturnMapper; private final MemberAuthenticationMapper memberAuthenticationMapper; @@ -1183,8 +1184,39 @@ if(records != null && records.size() > 0) { for(PositionSettingVo positionSettingVo : records) { Long memberId = positionSettingVo.getId(); + MemberEntity selectById = memberMapper.selectById(memberId); //当前持仓总盈亏 - BigDecimal sumRewardAmount = contractHoldOrderMapper.selectRewardAmountBymemberId(memberId); + Map<String, Object> columnMap = new HashMap<>(); + columnMap.put("member_id", memberId); + BigDecimal sumRewardAmount = BigDecimal.ZERO; + List<ContractHoldOrderEntity> contractHoldOrderEntitys = contractHoldOrderEntityMapper.selectByMap(columnMap ); + for(ContractHoldOrderEntity holdOrderEntity : contractHoldOrderEntitys) { + // 获取最新价 + BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol()))); + BigDecimal lotNumber = holdOrderEntity.getSymbolSku(); + // 盈亏 + BigDecimal rewardRatio = BigDecimal.ZERO; + // 开多 + if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) { + // (最新价-开仓价)*规格*张数 + rewardRatio = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(lotNumber).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt())); + // 开空 + } else { + // (开仓价-最新价)*规格*张数 + rewardRatio = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(lotNumber).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt())); + } + + if (selectById.getIsProfit() == MemberEntity.IS_PROFIT_Y) { + String selectTradeSetting = memberMapper.selectTradeSetting(); + BigDecimal profitParam=new BigDecimal(selectTradeSetting); + if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) { + rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(profitParam)); + } else { + rewardRatio = rewardRatio.multiply(BigDecimal.ONE.add(profitParam)); + } + } + sumRewardAmount = sumRewardAmount.add(rewardRatio); + } positionSettingVo.setSumRewardAmount(sumRewardAmount); } } -- Gitblit v1.9.1