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