|  |  | 
 |  |  | package com.xcong.excoin.modules.documentary.service.impl;
 | 
 |  |  | 
 | 
 |  |  | import java.math.BigDecimal;
 | 
 |  |  | import java.util.Date;
 | 
 |  |  | import java.util.HashMap;
 | 
 |  |  | import java.util.List;
 | 
 |  |  | import java.util.Map;
 | 
 |  |  | 
 | 
 |  |  | import javax.annotation.Resource;
 | 
 |  |  | import javax.validation.Valid;
 | 
 |  |  | 
 |  |  | import com.xcong.excoin.common.response.Result;
 | 
 |  |  | import com.xcong.excoin.modules.coin.dao.OrderCoinsDao;
 | 
 |  |  | import com.xcong.excoin.modules.coin.parameter.dto.RecordsPageDto;
 | 
 |  |  | import com.xcong.excoin.modules.contract.dao.ContractHoldOrderDao;
 | 
 |  |  | import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity;
 | 
 |  |  | import com.xcong.excoin.modules.contract.entity.ContractOrderEntity;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.dao.FollowFollowerProfitDao;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.dao.FollowTraderInfoDao;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.dao.FollowTraderProfitDetailDao;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.dao.FollowTraderProfitInfoDao;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.dto.FollowRecordsDto;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.dto.HistoryOrderRecordsDto;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.dto.MyFollowOrderDto;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.dto.MyFollowTraderInfoDto;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.entity.FollowFollowerProfitEntity;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.entity.FollowTraderInfoEntity;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.entity.FollowTraderProfitInfoEntity;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.service.DocumentaryService;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.vo.FollowInfoVo;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.vo.FollowRecordsVo;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.vo.FollowTraderProfitInfoVo;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.vo.HistoryOrderRecordsVo;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.vo.MemberIsTradeVo;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.vo.MyFollowOrderVo;
 | 
 |  |  | import com.xcong.excoin.modules.documentary.vo.MyFollowTraderInfoVo;
 | 
 |  |  | import com.xcong.excoin.modules.member.dao.MemberDao;
 | 
 |  |  | import com.xcong.excoin.modules.member.entity.MemberEntity;
 | 
 |  |  | import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
 | 
 |  |  | import com.xcong.excoin.utils.CacheSettingUtils;
 | 
 |  |  | import com.xcong.excoin.utils.CoinTypeConvert;
 | 
 |  |  | import com.xcong.excoin.utils.RedisUtils;
 | 
 |  |  | 
 | 
 |  |  | import cn.hutool.core.collection.CollUtil;
 | 
 |  |  | import cn.hutool.core.util.StrUtil;
 | 
 |  |  | import lombok.extern.slf4j.Slf4j;
 | 
 |  |  | 
 | 
 |  |  | @Slf4j
 | 
 |  |  | 
 |  |  |     private FollowFollowerProfitDao followFollowerProfitDao;
 | 
 |  |  |     @Resource
 | 
 |  |  |     private OrderCoinsDao orderCoinsDao;
 | 
 |  |  |     @Resource
 | 
 |  |  |     private RedisUtils redisUtils;
 | 
 |  |  |     @Resource
 | 
 |  |  |     private CacheSettingUtils cacheSettingUtils;
 | 
 |  |  |     @Resource
 | 
 |  |  |     private ContractHoldOrderDao contractHoldOrderDao;
 | 
 |  |  |     
 | 
 |  |  |     @Override
 | 
 |  |  |     public Result getMemberIsTradeInfo() {
 | 
 |  |  | 
 |  |  |         
 | 
 |  |  |         Page<FollowRecordsVo> page = new Page<>(followRecordsDto.getPageNum(), followRecordsDto.getPageSize());
 | 
 |  |  |         IPage<FollowRecordsVo> historyOrderRecordsVoList = followFollowerProfitDao.selectFollowRecords(page, followRecordsDto.getTradeMemberId());
 | 
 |  |  | 		 | 
 |  |  |         List<FollowRecordsVo> records = historyOrderRecordsVoList.getRecords();
 | 
 |  |  |         if(CollUtil.isNotEmpty(records)) {
 | 
 |  |  |             for(FollowRecordsVo followRecordsVo : records) {
 | 
 |  |  |                 Long memberId =followRecordsVo.getMemberId();
 | 
 |  |  |                 MemberEntity member = memberDao.selectById(memberId);
 | 
 |  |  |                 String email = member.getEmail();
 | 
 |  |  |                 String phone = member.getPhone();
 | 
 |  |  |                 if(StrUtil.isNotEmpty(email)) {
 | 
 |  |  |                     followRecordsVo.setAccount(email);
 | 
 |  |  |                 }else {
 | 
 |  |  |                     followRecordsVo.setAccount(phone);
 | 
 |  |  |                 }
 | 
 |  |  |             }
 | 
 |  |  |         }
 | 
 |  |  |         return Result.ok(historyOrderRecordsVoList);
 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  |     @Override
 | 
 |  |  |     public Result getFollowInfo() {
 | 
 |  |  |         //获取用户ID
 | 
 |  |  |         Long memberId = LoginUserUtils.getAppLoginUser().getId();
 | 
 |  |  |         MemberEntity member = memberDao.selectById(memberId);
 | 
 |  |  |          | 
 |  |  |         FollowInfoVo followInfoVo = new FollowInfoVo();
 | 
 |  |  |         followInfoVo.setMemberId(memberId);
 | 
 |  |  |         String email = member.getEmail();
 | 
 |  |  |         String phone = member.getPhone();
 | 
 |  |  |         if(StrUtil.isNotEmpty(email)) {
 | 
 |  |  |             followInfoVo.setNickname(email);
 | 
 |  |  |         }else {
 | 
 |  |  |             followInfoVo.setNickname(phone);
 | 
 |  |  |         }
 | 
 |  |  | 		 | 
 |  |  |         BigDecimal totalPrincipals =  BigDecimal.ZERO;
 | 
 |  |  |         BigDecimal totalProfits =  BigDecimal.ZERO;
 | 
 |  |  |         Map<String, Object> columnMap = new HashMap<>();
 | 
 |  |  |         columnMap.put("member_id", memberId);
 | 
 |  |  |         List<FollowFollowerProfitEntity> selectByMap = followFollowerProfitDao.selectByMap(columnMap);
 | 
 |  |  |         if(CollUtil.isNotEmpty(selectByMap)) {
 | 
 |  |  |             for(FollowFollowerProfitEntity followFollowerProfitEntity : selectByMap) {
 | 
 |  |  |                 BigDecimal totalPrincipal = followFollowerProfitEntity.getTotalPrincipal();
 | 
 |  |  |                 totalPrincipals = totalPrincipals.add(totalPrincipal);
 | 
 |  |  |                 BigDecimal totalProfit = followFollowerProfitEntity.getTotalProfit();
 | 
 |  |  |                 totalProfits = totalProfits.add(totalProfit);
 | 
 |  |  | 				 | 
 |  |  |                 //当前跟单	 | 
 |  |  |                 List<ContractHoldOrderEntity> contractHoldOrderEntitys = followFollowerProfitDao.getFollowOrderNowRecords(memberId);
 | 
 |  |  |                 if(CollUtil.isNotEmpty(contractHoldOrderEntitys)) {
 | 
 |  |  |                     for(ContractHoldOrderEntity contractHoldOrderEntity : contractHoldOrderEntitys) {
 | 
 |  |  |                         // 获取最新价
 | 
 |  |  |                         BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(contractHoldOrderEntity.getSymbol())));
 | 
 |  |  |                         BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(contractHoldOrderEntity.getSymbol());
 | 
 |  |  |                         // 盈亏
 | 
 |  |  |                         BigDecimal rewardRatio = BigDecimal.ZERO;
 | 
 |  |  |                         // 开多
 | 
 |  |  |                         if (contractHoldOrderEntity.OPENING_TYPE_MORE == contractHoldOrderEntity.getOpeningType()) {
 | 
 |  |  |                             // (最新价-开仓价)*规格*张数
 | 
 |  |  |                             rewardRatio = newPrice.subtract(contractHoldOrderEntity.getOpeningPrice()).multiply(lotNumber).multiply(new BigDecimal(contractHoldOrderEntity.getSymbolCnt()));
 | 
 |  |  |                             // 开空
 | 
 |  |  |                         } else {
 | 
 |  |  |                             // (开仓价-最新价)*规格*张数
 | 
 |  |  |                             rewardRatio = contractHoldOrderEntity.getOpeningPrice().subtract(newPrice).multiply(lotNumber).multiply(new BigDecimal(contractHoldOrderEntity.getSymbolCnt()));
 | 
 |  |  |                         }
 | 
 |  |  | 
 | 
 |  |  |                         if (member.getIsProfit() == MemberEntity.IS_PROFIT_Y) {
 | 
 |  |  |                             PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
 | 
 |  |  |                             if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) {
 | 
 |  |  |                                 rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(tradeSettingEntity.getProfitParam()));
 | 
 |  |  |                             }
 | 
 |  |  |                         }
 | 
 |  |  |                         totalProfits = totalProfits.add(rewardRatio);
 | 
 |  |  |                     }
 | 
 |  |  |                 }
 | 
 |  |  |             }
 | 
 |  |  |         }
 | 
 |  |  |         followInfoVo.setTotalPrincipal(totalPrincipals.setScale(4, BigDecimal.ROUND_DOWN));
 | 
 |  |  |         followInfoVo.setTotalProfit(totalProfits.setScale(4, BigDecimal.ROUND_DOWN));
 | 
 |  |  | 		 | 
 |  |  |         return Result.ok(followInfoVo);
 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  |     @Override
 | 
 |  |  |     public Result getMyFollowOrderRecords(@Valid MyFollowOrderDto myFollowOrderDto) {
 | 
 |  |  |         //获取用户ID
 | 
 |  |  |         Long memberId = LoginUserUtils.getAppLoginUser().getId();
 | 
 |  |  |         MemberEntity member = memberDao.selectById(memberId);
 | 
 |  |  |          | 
 |  |  |         int type = myFollowOrderDto.getOrderType();
 | 
 |  |  |         Page<MyFollowOrderVo> result = new Page<>();
 | 
 |  |  |         List<MyFollowOrderVo> myFollowOrderVos = result.getRecords();
 | 
 |  |  |         //历史跟单
 | 
 |  |  |         if(type == 2) {
 | 
 |  |  |             Page<ContractOrderEntity> page = new Page<>(myFollowOrderDto.getPageNum(), myFollowOrderDto.getPageSize());
 | 
 |  |  |             IPage<ContractOrderEntity> contractOrderEntitys = followFollowerProfitDao.getMyFollowOrderHistoryRecords(page, memberId);
 | 
 |  |  |         	 | 
 |  |  |             List<ContractOrderEntity> records = contractOrderEntitys.getRecords();
 | 
 |  |  |             if(CollUtil.isNotEmpty(records)) {
 | 
 |  |  |                 for(ContractOrderEntity contractOrderEntity : records) {
 | 
 |  |  |                     MyFollowOrderVo myFollowOrderVo = new MyFollowOrderVo();
 | 
 |  |  |                     String symbol = contractOrderEntity.getSymbol();
 | 
 |  |  |                     myFollowOrderVo.setSymbol(symbol);
 | 
 |  |  |                     int orderType = contractOrderEntity.getOrderType();
 | 
 |  |  |                     myFollowOrderVo.setOrderType(orderType);
 | 
 |  |  |                     int leverRatio = contractOrderEntity.getLeverRatio();
 | 
 |  |  |                     myFollowOrderVo.setLeverRatio(leverRatio);
 | 
 |  |  |                     BigDecimal rewardAmount = contractOrderEntity.getRewardAmount().setScale(4, BigDecimal.ROUND_DOWN);
 | 
 |  |  |                     myFollowOrderVo.setRewardAmount(rewardAmount);
 | 
 |  |  |                     BigDecimal rewardRatio = contractOrderEntity.getRewardRatio().setScale(4, BigDecimal.ROUND_DOWN);
 | 
 |  |  |                     myFollowOrderVo.setRewardRatio(rewardRatio);
 | 
 |  |  |                     int symbolCnt = contractOrderEntity.getSymbolCnt();
 | 
 |  |  |                     myFollowOrderVo.setSymbolCnt(symbolCnt);
 | 
 |  |  |                     BigDecimal bondAmount = contractOrderEntity.getBondAmount().setScale(4, BigDecimal.ROUND_DOWN);
 | 
 |  |  |                     myFollowOrderVo.setBondAmount(bondAmount);
 | 
 |  |  |                     BigDecimal openingPrice = contractOrderEntity.getOpeningPrice().setScale(4, BigDecimal.ROUND_DOWN);
 | 
 |  |  |                     myFollowOrderVo.setOpeningPrice(openingPrice);
 | 
 |  |  |                     BigDecimal closingPrice = contractOrderEntity.getClosingPrice().setScale(4, BigDecimal.ROUND_DOWN);
 | 
 |  |  |                     myFollowOrderVo.setClosingPrice(closingPrice);
 | 
 |  |  |                     Date openingTime = contractOrderEntity.getOpeningTime();
 | 
 |  |  |                     myFollowOrderVo.setOpeningTime(openingTime);
 | 
 |  |  |                     Date closingTime = contractOrderEntity.getClosingTime();
 | 
 |  |  |                     myFollowOrderVo.setClosingTime(closingTime);
 | 
 |  |  |                     String orderNo = contractOrderEntity.getOrderNo();
 | 
 |  |  |                     myFollowOrderVo.setOrderNo(orderNo);
 | 
 |  |  |                     myFollowOrderVos.add(myFollowOrderVo);
 | 
 |  |  |                 }
 | 
 |  |  |             }
 | 
 |  |  |         }else {
 | 
 |  |  |         //当前跟单	 | 
 |  |  |             Page<ContractHoldOrderEntity> page = new Page<>(myFollowOrderDto.getPageNum(), myFollowOrderDto.getPageSize());
 | 
 |  |  |             IPage<ContractHoldOrderEntity> contractHoldOrderEntitys = followFollowerProfitDao.getMyFollowOrderNowRecords(page, myFollowOrderDto.getMemberId());
 | 
 |  |  |         	 | 
 |  |  |             List<ContractHoldOrderEntity> records = contractHoldOrderEntitys.getRecords();
 | 
 |  |  |             if(CollUtil.isNotEmpty(records)) {
 | 
 |  |  |                 for(ContractHoldOrderEntity contractHoldOrderEntity : records) {
 | 
 |  |  |                     MyFollowOrderVo myFollowOrderVo = new MyFollowOrderVo();
 | 
 |  |  |                     String symbol = contractHoldOrderEntity.getSymbol();
 | 
 |  |  |                     myFollowOrderVo.setSymbol(symbol);
 | 
 |  |  |                     int orderType = contractHoldOrderEntity.getOpeningType();
 | 
 |  |  |                     myFollowOrderVo.setOrderType(orderType);
 | 
 |  |  |                     int leverRatio = contractHoldOrderEntity.getLeverRatio();
 | 
 |  |  |                     myFollowOrderVo.setLeverRatio(leverRatio);
 | 
 |  |  |                     int symbolCnt = contractHoldOrderEntity.getSymbolCnt();
 | 
 |  |  |                     myFollowOrderVo.setSymbolCnt(symbolCnt);
 | 
 |  |  |                     BigDecimal bondAmount = contractHoldOrderEntity.getBondAmount().setScale(4, BigDecimal.ROUND_DOWN);
 | 
 |  |  |                     myFollowOrderVo.setBondAmount(bondAmount);
 | 
 |  |  |                     BigDecimal openingPrice = contractHoldOrderEntity.getOpeningPrice().setScale(4, BigDecimal.ROUND_DOWN);
 | 
 |  |  |                     myFollowOrderVo.setOpeningPrice(openingPrice);
 | 
 |  |  |                     String orderNo = contractHoldOrderEntity.getOrderNo();
 | 
 |  |  |                     myFollowOrderVo.setOrderNo(orderNo);
 | 
 |  |  |                     Date openingTime = contractHoldOrderEntity.getCreateTime();
 | 
 |  |  |                     myFollowOrderVo.setOpeningTime(openingTime);
 | 
 |  |  | 
 | 
 |  |  |                     // 获取最新价
 | 
 |  |  |                     BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(contractHoldOrderEntity.getSymbol())));
 | 
 |  |  |                     BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(contractHoldOrderEntity.getSymbol());
 | 
 |  |  |                     // 盈亏
 | 
 |  |  |                     BigDecimal rewardRatio = BigDecimal.ZERO;
 | 
 |  |  |                     // 开多
 | 
 |  |  |                     if (contractHoldOrderEntity.OPENING_TYPE_MORE == contractHoldOrderEntity.getOpeningType()) {
 | 
 |  |  |                         // (最新价-开仓价)*规格*张数
 | 
 |  |  |                         rewardRatio = newPrice.subtract(contractHoldOrderEntity.getOpeningPrice()).multiply(lotNumber).multiply(new BigDecimal(contractHoldOrderEntity.getSymbolCnt()));
 | 
 |  |  |                         // 开空
 | 
 |  |  |                     } else {
 | 
 |  |  |                         // (开仓价-最新价)*规格*张数
 | 
 |  |  |                         rewardRatio = contractHoldOrderEntity.getOpeningPrice().subtract(newPrice).multiply(lotNumber).multiply(new BigDecimal(contractHoldOrderEntity.getSymbolCnt()));
 | 
 |  |  |                     }
 | 
 |  |  | 
 | 
 |  |  |                     if (member.getIsProfit() == MemberEntity.IS_PROFIT_Y) {
 | 
 |  |  |                         PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
 | 
 |  |  |                         if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) {
 | 
 |  |  |                             rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(tradeSettingEntity.getProfitParam()));
 | 
 |  |  |                         }
 | 
 |  |  |                     }
 | 
 |  |  |                     myFollowOrderVo.setRewardAmount(rewardRatio.setScale(4, BigDecimal.ROUND_DOWN));
 | 
 |  |  | 
 | 
 |  |  |                     // 回报率
 | 
 |  |  |                     BigDecimal returnRate = rewardRatio.divide(contractHoldOrderEntity.getBondAmount().subtract(contractHoldOrderEntity.getOpeningFeeAmount()), 8, BigDecimal.ROUND_DOWN);
 | 
 |  |  |                     myFollowOrderVo.setRewardRatio(returnRate.setScale(4, BigDecimal.ROUND_DOWN));
 | 
 |  |  |         			 | 
 |  |  |                     myFollowOrderVos.add(myFollowOrderVo);
 | 
 |  |  |                 }
 | 
 |  |  |             }
 | 
 |  |  |         }
 | 
 |  |  |          | 
 |  |  |         return Result.ok(myFollowOrderVos);
 | 
 |  |  | 		 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  |     @Override
 | 
 |  |  |     public Result getMyFollowTraderInfo(@Valid MyFollowTraderInfoDto myFollowTraderInfoDto) {
 | 
 |  |  |         //获取用户ID
 | 
 |  |  |         Long memberId = LoginUserUtils.getAppLoginUser().getId();
 | 
 |  |  |         MemberEntity member = memberDao.selectById(memberId);
 | 
 |  |  |         Page<FollowFollowerProfitEntity> page = new Page<>(myFollowTraderInfoDto.getPageNum(), myFollowTraderInfoDto.getPageSize());
 | 
 |  |  |         IPage<FollowFollowerProfitEntity> followFollowerProfitEntitys = followFollowerProfitDao.selectFollowFollowerProfitEntitys(page, memberId);
 | 
 |  |  |          | 
 |  |  |         List<FollowFollowerProfitEntity> records = followFollowerProfitEntitys.getRecords();
 | 
 |  |  |         if(CollUtil.isNotEmpty(records)) {
 | 
 |  |  |             Page<MyFollowTraderInfoVo> result = new Page<>();
 | 
 |  |  |             List<MyFollowTraderInfoVo> myFollowOrderVos = result.getRecords();
 | 
 |  |  | 	         | 
 |  |  |             for(FollowFollowerProfitEntity FollowFollowerProfitEntity : records) {
 | 
 |  |  |                 MyFollowTraderInfoVo myFollowTraderInfoVo = new MyFollowTraderInfoVo();
 | 
 |  |  | 				 | 
 |  |  |                 Long tradeId = FollowFollowerProfitEntity.getTradeId();
 | 
 |  |  |                 FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectById(tradeId);
 | 
 |  |  |                 String avatar = followTraderInfoEntity.getAvatar();
 | 
 |  |  |                 myFollowTraderInfoVo.setAvatar(avatar);
 | 
 |  |  | 				 | 
 |  |  |                 String nickname = followTraderInfoEntity.getNickname();
 | 
 |  |  |                 myFollowTraderInfoVo.setNickname(nickname);
 | 
 |  |  | 				 | 
 |  |  |                 BigDecimal totalPrincipal = FollowFollowerProfitEntity.getTotalPrincipal();
 | 
 |  |  |                 myFollowTraderInfoVo.setTotalPrincipal(totalPrincipal);
 | 
 |  |  | 				 | 
 |  |  |                 BigDecimal totalProfit = BigDecimal.ZERO;
 | 
 |  |  |                 Map<String, Object> columnMap = new HashMap<>();
 | 
 |  |  |                 columnMap.put("member_id", memberId);
 | 
 |  |  |                 contractHoldOrderDao.selectByMap(columnMap );
 | 
 |  |  |                 List<ContractHoldOrderEntity> contractHoldOrderEntitys = contractHoldOrderDao.selectByMap(columnMap );
 | 
 |  |  |                 if(CollUtil.isNotEmpty(contractHoldOrderEntitys)) {
 | 
 |  |  |                     for(ContractHoldOrderEntity contractHoldOrderEntity : contractHoldOrderEntitys) {
 | 
 |  |  |                         // 获取最新价
 | 
 |  |  |                         BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(contractHoldOrderEntity.getSymbol())));
 | 
 |  |  |                         BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(contractHoldOrderEntity.getSymbol());
 | 
 |  |  |                         // 盈亏
 | 
 |  |  |                         BigDecimal rewardRatio = BigDecimal.ZERO;
 | 
 |  |  |                         // 开多
 | 
 |  |  |                         if (ContractHoldOrderEntity.OPENING_TYPE_MORE == contractHoldOrderEntity.getOpeningType()) {
 | 
 |  |  |                             // (最新价-开仓价)*规格*张数
 | 
 |  |  |                             rewardRatio = newPrice.subtract(contractHoldOrderEntity.getOpeningPrice()).multiply(lotNumber).multiply(new BigDecimal(contractHoldOrderEntity.getSymbolCnt()));
 | 
 |  |  |                             // 开空
 | 
 |  |  |                         } else {
 | 
 |  |  |                             // (开仓价-最新价)*规格*张数
 | 
 |  |  |                             rewardRatio = contractHoldOrderEntity.getOpeningPrice().subtract(newPrice).multiply(lotNumber).multiply(new BigDecimal(contractHoldOrderEntity.getSymbolCnt()));
 | 
 |  |  |                         }
 | 
 |  |  | 	        			 | 
 |  |  |                         if (member.getIsProfit() == MemberEntity.IS_PROFIT_Y) {
 | 
 |  |  |                             PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
 | 
 |  |  |                             if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) {
 | 
 |  |  |                                 rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(tradeSettingEntity.getProfitParam()));
 | 
 |  |  |                             }
 | 
 |  |  |                         }
 | 
 |  |  |                         totalProfit = totalProfit.add(rewardRatio);
 | 
 |  |  |                     }
 | 
 |  |  |                     myFollowTraderInfoVo.setTotalProfit(totalProfit.setScale(4, BigDecimal.ROUND_DOWN));
 | 
 |  |  |                 }
 | 
 |  |  |                 myFollowOrderVos.add(myFollowTraderInfoVo);
 | 
 |  |  |             }
 | 
 |  |  |         }
 | 
 |  |  |         return null;
 | 
 |  |  |     }
 | 
 |  |  |     
 | 
 |  |  |     
 | 
 |  |  |     
 |