| | |
| | | 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;
|
| | | }
|
| | |
|
| | | }
|