From a3d192d43e4090011d941e412a5bb44d59a6a049 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 16 Jul 2020 18:10:33 +0800 Subject: [PATCH] 20200716 代码提交 --- src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java | 306 +++++++++++++++++++++++++------------------------- 1 files changed, 155 insertions(+), 151 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 7c4bc5c..1561835 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 @@ -1,151 +1,155 @@ -package com.xcong.excoin.modules.trademanage.service.impl; - - -import java.math.BigDecimal; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.springframework.stereotype.Service; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -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.member.entity.MemberAccountMoneyChangeEntity; -import com.xcong.excoin.modules.member.entity.MemberEntity; -import com.xcong.excoin.modules.member.mapper.MemberAccountMoneyChangeMapper; -import com.xcong.excoin.modules.member.mapper.MemberMapper; -import com.xcong.excoin.modules.trademanage.entity.AgentReturnEntity; -import com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity; -import com.xcong.excoin.modules.trademanage.entity.ContractOrderEntity; -import com.xcong.excoin.modules.trademanage.entity.MemberWalletAgentEntity; -import com.xcong.excoin.modules.trademanage.mapper.AgentReturnMapper; -import com.xcong.excoin.modules.trademanage.mapper.ContractHoldOrderEntityMapper; -import com.xcong.excoin.modules.trademanage.mapper.ContractOrderMapper; -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 lombok.RequiredArgsConstructor; - -@Service -@RequiredArgsConstructor -public class TradeManageServiceImpl extends ServiceImpl<ContractHoldOrderEntityMapper, ContractHoldOrderEntity> implements TradeManageService{ - - private final ContractHoldOrderEntityMapper contractHoldOrderEntityMapper; - - private final MemberMapper memberMapper; - - private final MemberWalletAgentMapper memberWalletAgentMapper; - - private final MemberAccountMoneyChangeMapper memberAccountMoneyChangeMapper; - - private final ContractOrderMapper contractHoldOrderMapper; - - private final AgentReturnMapper agentReturnMapper; - - private final RedisUtils redisUtils; - - @Override - public IPage<ContractHoldOrderEntity> findContractHoldOrderListInPage( - ContractHoldOrderEntity contractHoldOrderEntity, QueryRequest request) { - Page<ContractHoldOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); - IPage<ContractHoldOrderEntity> findMemberAccountInfoListInPage = contractHoldOrderEntityMapper.selectContractHoldOrderListInPage(page, contractHoldOrderEntity); - List<ContractHoldOrderEntity> records = findMemberAccountInfoListInPage.getRecords(); - - if (records != null) { - for (ContractHoldOrderEntity holdOrderEntity : records) { - 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<MemberAccountInfoVo> findMemberAccountInfoListInPage(MemberEntity memberEntity, QueryRequest request) { - 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) { - for(MemberAccountInfoVo memberAccountInfoVo : records) { - Long memberId = memberAccountInfoVo.getId(); - String inviteId = memberMapper.selectAgentForAccount(memberId); - if("".equals(inviteId) || inviteId == null) { - memberAccountInfoVo.setIsSuAccount(0); - }else { - memberAccountInfoVo.setIsSuAccount(1); - } - Map<String, Object> columnMap = new HashMap<>(); - columnMap.put("member_id", memberId); - List<MemberWalletAgentEntity> selectByMap = memberWalletAgentMapper.selectByMap(columnMap); - if(selectByMap.size() > 0) { - BigDecimal availableBalance = selectByMap.get(0).getAvailableBalance(); - memberAccountInfoVo.setAgentAvailableBalance(availableBalance); - } - - } - } - return selectMemberListInPage; - } - - @Override - public IPage<MemberAccountMoneyChangeEntity> findMemberAgentReturnInfoInPage( - MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity, QueryRequest request) { - Page<MemberAccountMoneyChangeEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); - IPage<MemberAccountMoneyChangeEntity> findMemberAccountInfoListInPage = memberAccountMoneyChangeMapper.findMemberAccountInfoListInPage(page, memberAccountMoneyChangeEntity); - return findMemberAccountInfoListInPage; - } - - @Override - public IPage<ContractOrderEntity> findMemberHistoryOrderInfoInPage( - ContractOrderEntity contractOrderEntity, QueryRequest request) { - Page<ContractOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); - IPage<ContractOrderEntity> findMemberAccountInfoListInPage = contractHoldOrderMapper.findMemberHistoryOrderInfoInPage(page, contractOrderEntity); - return findMemberAccountInfoListInPage; - } - - @Override - public IPage<AgentReturnEntity> findMemberAgentReturnInfosInPage(AgentReturnEntity agentReturnEntity, - QueryRequest request) { - Page<AgentReturnEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); - IPage<AgentReturnEntity> findMemberAccountInfoListInPage = agentReturnMapper.findMemberAgentReturnInfosInPage(page, agentReturnEntity); - return findMemberAccountInfoListInPage; - } - - @Override - public IPage<ContractOrderEntity> findMemberHistoryOrderAllInfoInPage(ContractOrderEntity contractOrderEntity, - QueryRequest request) { - Page<ContractOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); - IPage<ContractOrderEntity> findMemberAccountInfoListInPage = contractHoldOrderMapper.findMemberHistoryOrderInfoAllInPage(page, contractOrderEntity); - return findMemberAccountInfoListInPage; - } - -} +package com.xcong.excoin.modules.trademanage.service.impl; + + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +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.member.entity.MemberAccountMoneyChangeEntity; +import com.xcong.excoin.modules.member.entity.MemberEntity; +import com.xcong.excoin.modules.member.mapper.MemberAccountMoneyChangeMapper; +import com.xcong.excoin.modules.member.mapper.MemberMapper; +import com.xcong.excoin.modules.trademanage.entity.AgentReturnEntity; +import com.xcong.excoin.modules.trademanage.entity.ContractHoldOrderEntity; +import com.xcong.excoin.modules.trademanage.entity.ContractOrderEntity; +import com.xcong.excoin.modules.trademanage.entity.MemberWalletAgentEntity; +import com.xcong.excoin.modules.trademanage.mapper.AgentReturnMapper; +import com.xcong.excoin.modules.trademanage.mapper.ContractHoldOrderEntityMapper; +import com.xcong.excoin.modules.trademanage.mapper.ContractOrderMapper; +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 lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class TradeManageServiceImpl extends ServiceImpl<ContractHoldOrderEntityMapper, ContractHoldOrderEntity> implements TradeManageService{ + + private final ContractHoldOrderEntityMapper contractHoldOrderEntityMapper; + + private final MemberMapper memberMapper; + + private final MemberWalletAgentMapper memberWalletAgentMapper; + + private final MemberAccountMoneyChangeMapper memberAccountMoneyChangeMapper; + + private final ContractOrderMapper contractHoldOrderMapper; + + private final AgentReturnMapper agentReturnMapper; + + private final RedisUtils redisUtils; + + @Override + public IPage<ContractHoldOrderEntity> findContractHoldOrderListInPage( + ContractHoldOrderEntity contractHoldOrderEntity, QueryRequest request) { + Page<ContractHoldOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<ContractHoldOrderEntity> findMemberAccountInfoListInPage = contractHoldOrderEntityMapper.selectContractHoldOrderListInPage(page, contractHoldOrderEntity); + List<ContractHoldOrderEntity> records = findMemberAccountInfoListInPage.getRecords(); + + if (records != null) { + for (ContractHoldOrderEntity holdOrderEntity : records) { + 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<MemberAccountInfoVo> findMemberAccountInfoListInPage(MemberEntity memberEntity, QueryRequest request) { + 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) { + for(MemberAccountInfoVo memberAccountInfoVo : records) { + Long memberId = memberAccountInfoVo.getId(); + //总盈亏 + 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); + } + Map<String, Object> columnMap = new HashMap<>(); + columnMap.put("member_id", memberId); + List<MemberWalletAgentEntity> selectByMap = memberWalletAgentMapper.selectByMap(columnMap); + if(selectByMap.size() > 0) { + BigDecimal availableBalance = selectByMap.get(0).getAvailableBalance(); + memberAccountInfoVo.setAgentAvailableBalance(availableBalance); + } + + } + } + return selectMemberListInPage; + } + + @Override + public IPage<MemberAccountMoneyChangeEntity> findMemberAgentReturnInfoInPage( + MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity, QueryRequest request) { + Page<MemberAccountMoneyChangeEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<MemberAccountMoneyChangeEntity> findMemberAccountInfoListInPage = memberAccountMoneyChangeMapper.findMemberAccountInfoListInPage(page, memberAccountMoneyChangeEntity); + return findMemberAccountInfoListInPage; + } + + @Override + public IPage<ContractOrderEntity> findMemberHistoryOrderInfoInPage( + ContractOrderEntity contractOrderEntity, QueryRequest request) { + Page<ContractOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<ContractOrderEntity> findMemberAccountInfoListInPage = contractHoldOrderMapper.findMemberHistoryOrderInfoInPage(page, contractOrderEntity); + return findMemberAccountInfoListInPage; + } + + @Override + public IPage<AgentReturnEntity> findMemberAgentReturnInfosInPage(AgentReturnEntity agentReturnEntity, + QueryRequest request) { + Page<AgentReturnEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<AgentReturnEntity> findMemberAccountInfoListInPage = agentReturnMapper.findMemberAgentReturnInfosInPage(page, agentReturnEntity); + return findMemberAccountInfoListInPage; + } + + @Override + public IPage<ContractOrderEntity> findMemberHistoryOrderAllInfoInPage(ContractOrderEntity contractOrderEntity, + QueryRequest request) { + Page<ContractOrderEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<ContractOrderEntity> findMemberAccountInfoListInPage = contractHoldOrderMapper.findMemberHistoryOrderInfoAllInPage(page, contractOrderEntity); + return findMemberAccountInfoListInPage; + } + +} -- Gitblit v1.9.1