xiaoyong931011
2021-06-17 4c902d9c20dd965d1ec832760809c622d1df9aac
src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java
@@ -15,8 +15,10 @@
import com.xcong.excoin.common.utils.CoinTypeConvert;
import com.xcong.excoin.common.utils.RedisUtils;
import com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity;
import com.xcong.excoin.modules.member.entity.MemberAuthenticationEntity;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import com.xcong.excoin.modules.member.mapper.MemberAccountMoneyChangeMapper;
import com.xcong.excoin.modules.member.mapper.MemberAuthenticationMapper;
import com.xcong.excoin.modules.member.mapper.MemberMapper;
import com.xcong.excoin.modules.trademanage.entity.AgentReturnEntity;
import com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity;
@@ -28,6 +30,8 @@
import com.xcong.excoin.modules.trademanage.mapper.MemberWalletAgentMapper;
import com.xcong.excoin.modules.trademanage.service.TradeManageService;
import com.xcong.excoin.modules.trademanage.vo.MemberAccountInfoVo;
import cn.hutool.core.collection.CollUtil;
import lombok.RequiredArgsConstructor;
@Service
@@ -46,6 +50,8 @@
   
   private final AgentReturnMapper agentReturnMapper;
   
   private final MemberAuthenticationMapper memberAuthenticationMapper;
   private final RedisUtils redisUtils;
   
   @Override
@@ -58,6 +64,20 @@
      if (records != null) {
            for (ContractHoldOrderEntity holdOrderEntity : records) {
               MemberEntity selectById = memberMapper.selectById(holdOrderEntity.getMemberId());
               Long memberId = holdOrderEntity.getMemberId();
            Map<String, Object> columnMap = new HashMap<>();
            columnMap.put("member_id", memberId);
            List<MemberAuthenticationEntity> selectByMap = memberAuthenticationMapper.selectByMap(columnMap );
            if(selectByMap != null && selectByMap.size() > 0) {
               MemberAuthenticationEntity memberAuthenticationEntity = selectByMap.get(0);
               String firstName = memberAuthenticationEntity.getFirstName();
               String secondName = memberAuthenticationEntity.getSecondName();
               String realName = firstName + secondName;
               holdOrderEntity.setRealName(realName);
            }
                // 获取最新价
                BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol())));
                BigDecimal lotNumber = holdOrderEntity.getSymbolSku();
@@ -94,9 +114,21 @@
      Page<MemberEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
      IPage<MemberAccountInfoVo> selectMemberListInPage = memberMapper.findMemberAccountInfoListInPage(page, memberEntity);
      List<MemberAccountInfoVo> records = selectMemberListInPage.getRecords();
      if(records.size() > 0) {
      if(CollUtil.isNotEmpty(records)) {
         for(MemberAccountInfoVo memberAccountInfoVo : records) {
            Long memberId = memberAccountInfoVo.getId();
            Map<String, Object> columnMap = new HashMap<>();
            columnMap.put("member_id", memberId);
            List<MemberAuthenticationEntity> selectByMap = memberAuthenticationMapper.selectByMap(columnMap );
            if(CollUtil.isNotEmpty(selectByMap)) {
               MemberAuthenticationEntity memberAuthenticationEntity = selectByMap.get(0);
               String firstName = memberAuthenticationEntity.getFirstName();
               String secondName = memberAuthenticationEntity.getSecondName();
               String realName = firstName + secondName;
               memberAccountInfoVo.setRealName(realName);
            }
            //总盈亏
            String rewardratioByMid = memberMapper.selectRewardratioForBasicRealDataBymid(memberId);
              BigDecimal bd=new BigDecimal(rewardratioByMid);
@@ -107,11 +139,12 @@
            }else {
               memberAccountInfoVo.setIsSuAccount(1);
            }
            Map<String, Object> columnMap = new HashMap<>();
            Map<String, Object> columnMaps = new HashMap<>();
            columnMap.put("member_id", memberId);
            List<MemberWalletAgentEntity> selectByMap = memberWalletAgentMapper.selectByMap(columnMap);
            if(selectByMap.size() > 0) {
               BigDecimal availableBalance = selectByMap.get(0).getAvailableBalance();
            List<MemberWalletAgentEntity> selectByMaps = memberWalletAgentMapper.selectByMap(columnMaps);
            if(CollUtil.isNotEmpty(selectByMaps)) {
               BigDecimal availableBalance = selectByMaps.get(0).getAvailableBalance();
               memberAccountInfoVo.setAgentAvailableBalance(availableBalance);
            }
            
@@ -125,6 +158,23 @@
         MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity, QueryRequest request) {
      Page<MemberAccountMoneyChangeEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
      IPage<MemberAccountMoneyChangeEntity> findMemberAccountInfoListInPage = memberAccountMoneyChangeMapper.findMemberAccountInfoListInPage(page, memberAccountMoneyChangeEntity);
      List<MemberAccountMoneyChangeEntity> records = findMemberAccountInfoListInPage.getRecords();
      if(CollUtil.isNotEmpty(records)) {
         for(MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntitys : records) {
            Long memberId = memberAccountMoneyChangeEntitys.getMemberId();
            Map<String, Object> columnMap = new HashMap<>();
            columnMap.put("member_id", memberId);
            List<MemberAuthenticationEntity> selectByMap = memberAuthenticationMapper.selectByMap(columnMap );
            if(CollUtil.isNotEmpty(selectByMap)) {
               MemberAuthenticationEntity memberAuthenticationEntity = selectByMap.get(0);
               String firstName = memberAuthenticationEntity.getFirstName();
               String secondName = memberAuthenticationEntity.getSecondName();
               String realName = firstName + secondName;
               memberAccountMoneyChangeEntitys.setRealName(realName);
            }
         }
      }
      return findMemberAccountInfoListInPage;
   }
@@ -149,7 +199,351 @@
         QueryRequest request) {
      Page<ContractOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
      IPage<ContractOrderEntity> findMemberAccountInfoListInPage = contractHoldOrderMapper.findMemberHistoryOrderInfoAllInPage(page, contractOrderEntity);
      List<ContractOrderEntity> records = findMemberAccountInfoListInPage.getRecords();
      if(CollUtil.isNotEmpty(records)) {
         for(ContractOrderEntity contractOrderEntitys : records) {
            Long memberId = contractOrderEntitys.getMemberId();
            Map<String, Object> columnMap = new HashMap<>();
            columnMap.put("member_id", memberId);
            List<MemberAuthenticationEntity> selectByMap = memberAuthenticationMapper.selectByMap(columnMap );
            if(selectByMap != null && selectByMap.size() > 0) {
               MemberAuthenticationEntity memberAuthenticationEntity = selectByMap.get(0);
               String firstName = memberAuthenticationEntity.getFirstName();
               String secondName = memberAuthenticationEntity.getSecondName();
               String realName = firstName + secondName;
               contractOrderEntitys.setRealName(realName);
            }
         }
      }
      return findMemberAccountInfoListInPage;
   }
   @Override
   public IPage<ContractHoldOrderEntity> findContractHoldOrderAloneInPage(
         ContractHoldOrderEntity contractHoldOrderEntity, QueryRequest request) {
      Page<ContractHoldOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
      IPage<ContractHoldOrderEntity> findMemberAccountInfoListInPage = contractHoldOrderEntityMapper.findContractHoldOrderAloneInPage(page, contractHoldOrderEntity);
      List<ContractHoldOrderEntity> records = findMemberAccountInfoListInPage.getRecords();
      if (records != null) {
            for (ContractHoldOrderEntity holdOrderEntity : records) {
               Long memberId = holdOrderEntity.getMemberId();
            Map<String, Object> columnMap = new HashMap<>();
            columnMap.put("member_id", memberId);
            List<MemberAuthenticationEntity> selectByMap = memberAuthenticationMapper.selectByMap(columnMap );
            if(selectByMap != null && selectByMap.size() > 0) {
               MemberAuthenticationEntity memberAuthenticationEntity = selectByMap.get(0);
               String firstName = memberAuthenticationEntity.getFirstName();
               String secondName = memberAuthenticationEntity.getSecondName();
               String realName = firstName + secondName;
               holdOrderEntity.setRealName(realName);
            }
               MemberEntity selectById = memberMapper.selectById(holdOrderEntity.getMemberId());
                // 获取最新价
                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));
                    }
                }
                holdOrderEntity.setRewardRatio(rewardRatio);
            }
        }
      return findMemberAccountInfoListInPage;
   }
   @Override
   public IPage<ContractOrderEntity> findHistoryOrderInfoAloneInfoInPage(ContractOrderEntity contractOrderEntity,
         QueryRequest request) {
      Page<ContractOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
      IPage<ContractOrderEntity> findMemberAccountInfoListInPage = contractHoldOrderMapper.findHistoryOrderInfoAloneInfoInPage(page, contractOrderEntity);
      List<ContractOrderEntity> records = findMemberAccountInfoListInPage.getRecords();
      if(records != null && records.size() > 0) {
         for(ContractOrderEntity contractOrderEntitys : records) {
            Long memberId = contractOrderEntitys.getMemberId();
            Map<String, Object> columnMap = new HashMap<>();
            columnMap.put("member_id", memberId);
            List<MemberAuthenticationEntity> selectByMap = memberAuthenticationMapper.selectByMap(columnMap );
            if(selectByMap != null && selectByMap.size() > 0) {
               MemberAuthenticationEntity memberAuthenticationEntity = selectByMap.get(0);
               String firstName = memberAuthenticationEntity.getFirstName();
               String secondName = memberAuthenticationEntity.getSecondName();
               String realName = firstName + secondName;
               contractOrderEntitys.setRealName(realName);
            }
         }
      }
      return findMemberAccountInfoListInPage;
   }
   @Override
   public IPage<MemberAccountMoneyChangeEntity> findMemberAgentReturnInfoAloneInPage(
         MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity, QueryRequest request) {
      Page<MemberAccountMoneyChangeEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
      IPage<MemberAccountMoneyChangeEntity> findMemberAccountInfoListInPage =
            memberAccountMoneyChangeMapper.findMemberAgentReturnInfoAloneInPage(page, memberAccountMoneyChangeEntity);
      List<MemberAccountMoneyChangeEntity> records = findMemberAccountInfoListInPage.getRecords();
      if(records != null && records.size() > 0) {
         String selectYJByMemberId = agentReturnMapper.selectYJByMemberId();
         for(MemberAccountMoneyChangeEntity accountMoneyChangeEntity : records) {
            Long memberId = accountMoneyChangeEntity.getMemberId();
            String allAmount = memberAccountMoneyChangeMapper.selectAccountMoneyChangeByMemberId(memberId);
            Map<String, Object> columnMap = new HashMap<>();
            columnMap.put("member_id", memberId);
            List<MemberAuthenticationEntity> selectByMap = memberAuthenticationMapper.selectByMap(columnMap );
            if(selectByMap != null && selectByMap.size() > 0) {
               MemberAuthenticationEntity memberAuthenticationEntity = selectByMap.get(0);
               String firstName = memberAuthenticationEntity.getFirstName();
               String secondName = memberAuthenticationEntity.getSecondName();
               String realName = firstName + secondName;
               accountMoneyChangeEntity.setRealName(realName);
            }
            accountMoneyChangeEntity.setAllAmount(allAmount);
            if(memberId == 8) {
               accountMoneyChangeEntity.setAmount(BigDecimal.ZERO);
               accountMoneyChangeEntity.setAllAmount(selectYJByMemberId);
            }
         }
      }
      return findMemberAccountInfoListInPage;
   }
   @Override
   public IPage<MemberAccountInfoVo> findmemberAccountInfoAloneListInPage(MemberEntity memberEntity,
         QueryRequest request) {
      Page<MemberEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
      IPage<MemberAccountInfoVo> selectMemberListInPage = memberMapper.findMemberAccountInfoAloneListInPage(page, memberEntity);
      List<MemberAccountInfoVo> records = selectMemberListInPage.getRecords();
      if(records.size() > 0) {
         for(MemberAccountInfoVo memberAccountInfoVo : records) {
            Long memberId = memberAccountInfoVo.getId();
            Map<String, Object> columnMap = new HashMap<>();
            columnMap.put("member_id", memberId);
            List<MemberAuthenticationEntity> selectByMap = memberAuthenticationMapper.selectByMap(columnMap );
            if(selectByMap != null && selectByMap.size() > 0) {
               MemberAuthenticationEntity memberAuthenticationEntity = selectByMap.get(0);
               String firstName = memberAuthenticationEntity.getFirstName();
               String secondName = memberAuthenticationEntity.getSecondName();
               String realName = firstName + secondName;
               memberAccountInfoVo.setRealName(realName);
            }
            //总盈亏
            String rewardratioByMid = memberMapper.selectRewardratioForBasicRealDataBymid(memberId);
              BigDecimal bd=new BigDecimal(rewardratioByMid);
            memberAccountInfoVo.setRewardratioByMid(bd);
            String inviteId = memberMapper.selectAgentForAccount(memberId);
            if("".equals(inviteId) || inviteId == null) {
               memberAccountInfoVo.setIsSuAccount(0);
            }else {
               memberAccountInfoVo.setIsSuAccount(1);
            }
            List<MemberWalletAgentEntity> selectByMaps = memberWalletAgentMapper.selectByMap(columnMap);
            if(selectByMaps.size() > 0) {
               BigDecimal availableBalance = selectByMaps.get(0).getAvailableBalance();
               memberAccountInfoVo.setAgentAvailableBalance(availableBalance);
            }
         }
      }
        return selectMemberListInPage;
   }
   @Override
   public IPage<ContractHoldOrderEntity> findContractHoldOrderAloneTestInPage(
         ContractHoldOrderEntity contractHoldOrderEntity, QueryRequest request) {
      Page<ContractHoldOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
      IPage<ContractHoldOrderEntity> findMemberAccountInfoListInPage = contractHoldOrderEntityMapper.findContractHoldOrderAloneTestInPage(page, contractHoldOrderEntity);
      List<ContractHoldOrderEntity> records = findMemberAccountInfoListInPage.getRecords();
      if (records != null) {
            for (ContractHoldOrderEntity holdOrderEntity : records) {
               Long memberId = holdOrderEntity.getMemberId();
            Map<String, Object> columnMap = new HashMap<>();
            columnMap.put("member_id", memberId);
            List<MemberAuthenticationEntity> selectByMap = memberAuthenticationMapper.selectByMap(columnMap );
            if(selectByMap != null && selectByMap.size() > 0) {
               MemberAuthenticationEntity memberAuthenticationEntity = selectByMap.get(0);
               String firstName = memberAuthenticationEntity.getFirstName();
               String secondName = memberAuthenticationEntity.getSecondName();
               String realName = firstName + secondName;
               holdOrderEntity.setRealName(realName);
            }
               MemberEntity selectById = memberMapper.selectById(holdOrderEntity.getMemberId());
                // 获取最新价
                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));
                    }
                }
                holdOrderEntity.setRewardRatio(rewardRatio);
            }
        }
      return findMemberAccountInfoListInPage;
   }
   @Override
   public IPage<ContractOrderEntity> findhistoryOrderInfoAloneTestInfoInPage(ContractOrderEntity contractOrderEntity,
         QueryRequest request) {
      Page<ContractOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
      IPage<ContractOrderEntity> findMemberAccountInfoListInPage = contractHoldOrderMapper.findhistoryOrderInfoAloneTestInfoInPage(page, contractOrderEntity);
      List<ContractOrderEntity> records = findMemberAccountInfoListInPage.getRecords();
      if(records != null && records.size() > 0) {
         for(ContractOrderEntity contractOrderEntitys : records) {
            Long memberId = contractOrderEntitys.getMemberId();
            Map<String, Object> columnMap = new HashMap<>();
            columnMap.put("member_id", memberId);
            List<MemberAuthenticationEntity> selectByMap = memberAuthenticationMapper.selectByMap(columnMap );
            if(selectByMap != null && selectByMap.size() > 0) {
               MemberAuthenticationEntity memberAuthenticationEntity = selectByMap.get(0);
               String firstName = memberAuthenticationEntity.getFirstName();
               String secondName = memberAuthenticationEntity.getSecondName();
               String realName = firstName + secondName;
               contractOrderEntitys.setRealName(realName);
            }
         }
      }
      return findMemberAccountInfoListInPage;
   }
   @Override
   public IPage<MemberAccountMoneyChangeEntity> findMemberAgentReturnInfoAloneTestInPage(
         MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity, QueryRequest request) {
      Page<MemberAccountMoneyChangeEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
      IPage<MemberAccountMoneyChangeEntity> findMemberAccountInfoListInPage =
            memberAccountMoneyChangeMapper.findMemberAgentReturnInfoAloneTestInPage(page, memberAccountMoneyChangeEntity);
      List<MemberAccountMoneyChangeEntity> records = findMemberAccountInfoListInPage.getRecords();
      if(records != null && records.size() > 0) {
         String selectYJByMemberId = agentReturnMapper.selectYJTestByMemberId();
         for(MemberAccountMoneyChangeEntity accountMoneyChangeEntity : records) {
            Long memberId = accountMoneyChangeEntity.getMemberId();
            String allAmount = memberAccountMoneyChangeMapper.selectAccountMoneyChangeByMemberId(memberId);
            Map<String, Object> columnMap = new HashMap<>();
            columnMap.put("member_id", memberId);
            List<MemberAuthenticationEntity> selectByMap = memberAuthenticationMapper.selectByMap(columnMap );
            if(selectByMap != null && selectByMap.size() > 0) {
               MemberAuthenticationEntity memberAuthenticationEntity = selectByMap.get(0);
               String firstName = memberAuthenticationEntity.getFirstName();
               String secondName = memberAuthenticationEntity.getSecondName();
               String realName = firstName + secondName;
               accountMoneyChangeEntity.setRealName(realName);
            }
            accountMoneyChangeEntity.setAllAmount(allAmount);
            if(memberId == 8) {
               accountMoneyChangeEntity.setAmount(BigDecimal.ZERO);
               accountMoneyChangeEntity.setAllAmount(selectYJByMemberId);
            }
         }
      }
      return findMemberAccountInfoListInPage;
   }
   @Override
   public IPage<MemberAccountInfoVo> findmemberAccountInfoAloneTestListInPage(MemberEntity memberEntity,
         QueryRequest request) {
      Page<MemberEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
      IPage<MemberAccountInfoVo> selectMemberListInPage = memberMapper.findmemberAccountInfoAloneTestListInPage(page, memberEntity);
      List<MemberAccountInfoVo> records = selectMemberListInPage.getRecords();
      if(records.size() > 0) {
         for(MemberAccountInfoVo memberAccountInfoVo : records) {
            Long memberId = memberAccountInfoVo.getId();
            Map<String, Object> columnMap = new HashMap<>();
            columnMap.put("member_id", memberId);
            List<MemberAuthenticationEntity> selectByMap = memberAuthenticationMapper.selectByMap(columnMap );
            if(selectByMap != null && selectByMap.size() > 0) {
               MemberAuthenticationEntity memberAuthenticationEntity = selectByMap.get(0);
               String firstName = memberAuthenticationEntity.getFirstName();
               String secondName = memberAuthenticationEntity.getSecondName();
               String realName = firstName + secondName;
               memberAccountInfoVo.setRealName(realName);
            }
            //总盈亏
            String rewardratioByMid = memberMapper.selectRewardratioForBasicRealDataBymid(memberId);
              BigDecimal bd=new BigDecimal(rewardratioByMid);
            memberAccountInfoVo.setRewardratioByMid(bd);
            String inviteId = memberMapper.selectAgentForAccount(memberId);
            if("".equals(inviteId) || inviteId == null) {
               memberAccountInfoVo.setIsSuAccount(0);
            }else {
               memberAccountInfoVo.setIsSuAccount(1);
            }
            List<MemberWalletAgentEntity> selectByMaps = memberWalletAgentMapper.selectByMap(columnMap);
            if(selectByMaps.size() > 0) {
               BigDecimal availableBalance = selectByMaps.get(0).getAvailableBalance();
               memberAccountInfoVo.setAgentAvailableBalance(availableBalance);
            }
         }
      }
        return selectMemberListInPage;
   }
}