xiaoyong931011
2021-03-22 31796f3854bb0f89793d5122a2e1ab231aa44331
20210319  平仓加载中
1 files modified
34 ■■■■■ changed files
src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java 34 ●●●●● patch | view | raw | blame | history
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);
            }
        }