From cf200a1f92c01ba22c326c49391f748ffb006910 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 05 Jul 2021 17:28:35 +0800 Subject: [PATCH] 20210617 开售开关 --- src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java | 73 ++++++++++++++++++++++++++++++++++-- 1 files changed, 69 insertions(+), 4 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..2d949d6 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 @@ -2,6 +2,8 @@ import java.math.BigDecimal; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -11,7 +13,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -20,6 +21,8 @@ import com.xcong.excoin.common.entity.QueryRequest; import com.xcong.excoin.common.utils.CoinTypeConvert; import com.xcong.excoin.common.utils.RedisUtils; +import com.xcong.excoin.modules.documentary.entity.FollowFollowerProfitEntity; +import com.xcong.excoin.modules.documentary.mapper.FollowFollowerProfitMapper; import com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity; import com.xcong.excoin.modules.member.entity.MemberAuthenticationEntity; import com.xcong.excoin.modules.member.entity.MemberEntity; @@ -57,9 +60,12 @@ private final ContractOrderMapper contractHoldOrderMapper; + private final AgentReturnMapper agentReturnMapper; private final MemberAuthenticationMapper memberAuthenticationMapper; + + private final FollowFollowerProfitMapper followFollowerProfitMapper; private final RedisUtils redisUtils; @@ -85,8 +91,23 @@ String realName = firstName + secondName; holdOrderEntity.setRealName(realName); } - - + //如果是跟单合约,显示他的交易员的邀请码 + int contractType = holdOrderEntity.getContractType(); + Long holdOrderEntityMemberId = holdOrderEntity.getMemberId(); + MemberEntity holdOrderEntityMember = memberMapper.selectById(holdOrderEntityMemberId); + Integer isTrader = holdOrderEntityMember.getIsTrader(); + if(MemberEntity.ISTRADER_N == isTrader) { + if(ContractHoldOrderEntity.CONTRACTTYPE_FOLLOW == contractType) { + //获取对应的【follow_follower_profit】跟随者收益关系表 + QueryWrapper<FollowFollowerProfitEntity> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("member_id",holdOrderEntity.getMemberId()); + FollowFollowerProfitEntity followFollowerProfitEntity = followFollowerProfitMapper.selectOne(queryWrapper); + Long tradeMemberId = followFollowerProfitEntity.getTradeMemberId(); + MemberEntity selectByIdTrader = memberMapper.selectById(tradeMemberId); + String inviteId = selectByIdTrader.getInviteId(); + holdOrderEntity.setInviteIdTrader(inviteId); + } + } // 获取最新价 BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol()))); BigDecimal lotNumber = holdOrderEntity.getSymbolSku(); @@ -1183,11 +1204,55 @@ 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); } + //降序 +// Collections.sort(records, new Comparator<PositionSettingVo>() {//调用sort()方法,并实现Comparator接口中的compare()方法 +// @Override +// public int compare(PositionSettingVo lhs, PositionSettingVo rhs) { +// int value = Integer.valueOf(rhs.getSumRewardAmount().intValue()) +// - Integer.valueOf(lhs.getSumRewardAmount().intValue()); +// return value; +// } +// }); + //升序 + CollUtil.sortByProperty(records, "sumRewardAmount"); + //CollUtil.sortByProperty(records, "accountType"); } +// positionSettingVoIPage.setRecords(records); return positionSettingVoIPage; } -- Gitblit v1.9.1