From a7d5859d7f95d27ed1be29c437911a083ab9703a Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 06 Aug 2020 11:05:42 +0800 Subject: [PATCH] 20200806 代码提交 --- src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java | 963 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 963 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java b/src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java index 16bf169..48b666d 100644 --- a/src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java @@ -1,19 +1,82 @@ package com.xcong.excoin.modules.documentary.service.impl; +import java.math.BigDecimal; +import java.util.ArrayList; +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.modules.documentary.common.NoticeConstant; +import com.xcong.excoin.utils.*; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +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.LoginUserUtils; 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.FollowFollowerNoticeDao; +import com.xcong.excoin.modules.documentary.dao.FollowFollowerOrderRelationDao; +import com.xcong.excoin.modules.documentary.dao.FollowFollowerProfitDao; +import com.xcong.excoin.modules.documentary.dao.FollowFollowerSettingDao; +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.CancelDocumentaryOrderSetDto; +import com.xcong.excoin.modules.documentary.dto.DocumentaryOrderSetDto; +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.dto.OutFollowInfoDto; +import com.xcong.excoin.modules.documentary.dto.TradeFollowInfoDto; +import com.xcong.excoin.modules.documentary.dto.TradeOrderInfoDto; +import com.xcong.excoin.modules.documentary.dto.UpdateDocumentaryOrderSetDto; +import com.xcong.excoin.modules.documentary.dto.UpdateTradeSetInfoDto; +import com.xcong.excoin.modules.documentary.entity.FollowFollowerNoticeEntity; +import com.xcong.excoin.modules.documentary.entity.FollowFollowerOrderRelationEntity; +import com.xcong.excoin.modules.documentary.entity.FollowFollowerProfitEntity; +import com.xcong.excoin.modules.documentary.entity.FollowFollowerSettingEntity; +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.DocumentaryOrderInfoVo; +import com.xcong.excoin.modules.documentary.vo.DocumentaryOrderSetInfoVo; +import com.xcong.excoin.modules.documentary.vo.FollowFollowerNoticeVo; +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.documentary.vo.TradeFollowInfoVo; +import com.xcong.excoin.modules.documentary.vo.TradeHistoryOrderInfoVo; +import com.xcong.excoin.modules.documentary.vo.TradeOrderInfoVo; +import com.xcong.excoin.modules.documentary.vo.TradeProfitInfoVo; +import com.xcong.excoin.modules.documentary.vo.TradeSetInfoVo; +import com.xcong.excoin.modules.documentary.vo.TraderStatusVo; import com.xcong.excoin.modules.member.dao.MemberDao; +import com.xcong.excoin.modules.member.dao.MemberLevelRateDao; +import com.xcong.excoin.modules.member.dao.MemberWalletContractDao; import com.xcong.excoin.modules.member.entity.MemberEntity; +import com.xcong.excoin.modules.member.entity.MemberLevelRateEntity; +import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity; +import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; @Slf4j @@ -22,6 +85,33 @@ @Resource private MemberDao memberDao; + @Resource + private FollowTraderInfoDao followTraderInfoDao; + @Resource + private FollowTraderProfitDetailDao followTraderProfitDetailDao; + @Resource + private FollowTraderProfitInfoDao followTraderProfitInfoDao; + @Resource + private FollowFollowerProfitDao followFollowerProfitDao; + @Resource + private OrderCoinsDao orderCoinsDao; + @Resource + private RedisUtils redisUtils; + @Resource + private CacheSettingUtils cacheSettingUtils; + @Resource + private ContractHoldOrderDao contractHoldOrderDao; + @Resource + private MemberLevelRateDao memberLevelRateDao; + @Resource + private MemberWalletContractDao memberWalletContractDao; + @Resource + private FollowFollowerSettingDao followFollowerSettingDao; + @Resource + private FollowFollowerOrderRelationDao followFollowerOrderRelationDao; + + private FollowFollowerNoticeDao followFollowerNoticeDao; + @Override public Result getMemberIsTradeInfo() { @@ -39,4 +129,877 @@ return Result.ok(memberIsTradeVo); } + @Override + public Result getFollowTraderProfitInfo(@Valid RecordsPageDto recordsPageDto) { + + Page<FollowTraderProfitInfoVo> page = new Page<>(recordsPageDto.getPageNum(), recordsPageDto.getPageSize()); + FollowTraderProfitInfoEntity followTraderProfitInfoEntity = new FollowTraderProfitInfoEntity(); + IPage<FollowTraderProfitInfoVo> followTraderProfitInfoList = followTraderProfitInfoDao.selectFollowTraderProfitInfoEntity(page, followTraderProfitInfoEntity); + + List<FollowTraderProfitInfoVo> followTraderProfitInfoVoList = followTraderProfitInfoList.getRecords(); + if(CollUtil.isNotEmpty(followTraderProfitInfoVoList)) { + for(FollowTraderProfitInfoVo FollowTraderProfitInfoVo : followTraderProfitInfoVoList) { + MemberEntity user = LoginUserUtils.getUser(); + if(ObjectUtil.isNotEmpty(user)) { + Long traderId = FollowTraderProfitInfoVo.getTraderId(); + Long memberId = user.getId(); + FollowFollowerProfitEntity followFollowerProfitEntity = followFollowerProfitDao.selectDocumentaryOrderSetInfoBymemberIdAndTradeId(memberId, traderId); + if(ObjectUtil.isNotEmpty(followFollowerProfitEntity)) { + FollowTraderProfitInfoVo.setDocumentaryType(followFollowerProfitEntity.getIsFollow()); + }else { + FollowTraderProfitInfoVo.setDocumentaryType(2); + } + } + Long traderId = FollowTraderProfitInfoVo.getTraderId(); + FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectFollowTraderInfoEntityBytreaderId(traderId); + String avatar = followTraderInfoEntity.getAvatar(); + FollowTraderProfitInfoVo.setAvatar(avatar); + String nickname = followTraderInfoEntity.getNickname(); + FollowTraderProfitInfoVo.setNickname(nickname); + String declaration = followTraderInfoEntity.getDeclaration(); + FollowTraderProfitInfoVo.setDeclaration(declaration); + Integer isAll = followTraderInfoEntity.getIsAll(); + FollowTraderProfitInfoVo.setIsAll(isAll); + } + } + return Result.ok(followTraderProfitInfoVoList); + } + + @Override + public Result getHistoryOrderRecords(@Valid HistoryOrderRecordsDto historyOrderRecordsDto) { + + FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectById(historyOrderRecordsDto.getTradeId()); + Long memberId = followTraderInfoEntity.getMemberId(); + + Page<HistoryOrderRecordsVo> page = new Page<>(historyOrderRecordsDto.getPageNum(), historyOrderRecordsDto.getPageSize()); + IPage<HistoryOrderRecordsVo> historyOrderRecordsVoList = followTraderProfitInfoDao.selectHistoryOrderRecords(page, memberId); + List<HistoryOrderRecordsVo> records = historyOrderRecordsVoList.getRecords(); + if(CollUtil.isNotEmpty(records)) { + for(HistoryOrderRecordsVo historyOrderRecordsVo : records) { + BigDecimal closingPrice = historyOrderRecordsVo.getClosingPrice().setScale(2, BigDecimal.ROUND_DOWN); + historyOrderRecordsVo.setClosingPrice(closingPrice); + BigDecimal openingPrice = historyOrderRecordsVo.getOpeningPrice().setScale(2, BigDecimal.ROUND_DOWN); + historyOrderRecordsVo.setOpeningPrice(openingPrice); + } + } + return Result.ok(historyOrderRecordsVoList); + } + + @Override + public Result getFollowRecords(@Valid FollowRecordsDto followRecordsDto) { + + FollowTraderInfoEntity followTraderInfoEn = followTraderInfoDao.selectById(followRecordsDto.getTradeId()); + Long memberId = followTraderInfoEn.getMemberId(); + + Page<FollowRecordsVo> page = new Page<>(followRecordsDto.getPageNum(), followRecordsDto.getPageSize()); + IPage<FollowRecordsVo> historyOrderRecordsVoList = followFollowerProfitDao.selectFollowRecords(page, memberId); + + List<FollowRecordsVo> records = historyOrderRecordsVoList.getRecords(); + if(CollUtil.isNotEmpty(records)) { + for(FollowRecordsVo followRecordsVo : records) { + + BigDecimal totalPrincipal = followRecordsVo.getTotalPrincipal().setScale(2, BigDecimal.ROUND_DOWN); + followRecordsVo.setTotalPrincipal(totalPrincipal); + BigDecimal totalProfit = followRecordsVo.getTotalProfit().setScale(2, BigDecimal.ROUND_DOWN); + followRecordsVo.setTotalProfit(totalProfit); + + Long memberIds = followRecordsVo.getMemberId(); + MemberEntity MemberEntity = memberDao.selectById(memberIds); + String phone = MemberEntity.getPhone(); + String email = MemberEntity.getEmail(); + if(StrUtil.isNotEmpty(phone)) { + followRecordsVo.setNickname(phone); + }else { + followRecordsVo.setNickname(email); + } + } + } + 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); + } + } + followInfoVo.setTotalPrincipal(totalPrincipals.setScale(2, BigDecimal.ROUND_DOWN)); + followInfoVo.setTotalProfit(totalProfits.setScale(2, BigDecimal.ROUND_DOWN)); + + return Result.ok(followInfoVo); + } + + @Override + public Result getHistoryMyFollowOrderRecords(@Valid MyFollowOrderDto myFollowOrderDto) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + List<MyFollowOrderVo> myFollowOrderVos = new ArrayList<>(); + //历史跟单 + 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(); + //获取交易员信息 + Long orderId = contractOrderEntity.getId(); + myFollowOrderVo.setOrderId(orderId); + FollowFollowerOrderRelationEntity FollowFollowerOrderRelation = followFollowerOrderRelationDao.selectHistoryOneByorderId(orderId); + Long tradeId = FollowFollowerOrderRelation.getTradeId(); + FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectById(tradeId); + String nickname = followTraderInfoEntity.getNickname(); + myFollowOrderVo.setNickname(nickname); + + 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(2, 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(2, BigDecimal.ROUND_DOWN); + myFollowOrderVo.setBondAmount(bondAmount); + BigDecimal openingPrice = contractOrderEntity.getOpeningPrice().setScale(2, BigDecimal.ROUND_DOWN); + myFollowOrderVo.setOpeningPrice(openingPrice); + BigDecimal closingPrice = contractOrderEntity.getClosingPrice().setScale(2, 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); + } + } + return Result.ok(myFollowOrderVos); + + } + @Override + public Result getNowMyFollowOrderRecords(@Valid MyFollowOrderDto myFollowOrderDto) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + MemberEntity member = memberDao.selectById(memberId); + + List<MyFollowOrderVo> myFollowOrderVos = new ArrayList<>(); + //当前跟单 + Page<ContractHoldOrderEntity> page = new Page<>(myFollowOrderDto.getPageNum(), myFollowOrderDto.getPageSize()); + IPage<ContractHoldOrderEntity> contractHoldOrderEntitys = followFollowerProfitDao.getMyFollowOrderNowRecords(page, memberId); + + List<ContractHoldOrderEntity> records = contractHoldOrderEntitys.getRecords(); + if(CollUtil.isNotEmpty(records)) { + for(ContractHoldOrderEntity contractHoldOrderEntity : records) { + MyFollowOrderVo myFollowOrderVo = new MyFollowOrderVo(); + //获取交易员信息 + Long orderId = contractHoldOrderEntity.getId(); + myFollowOrderVo.setOrderId(orderId); + FollowFollowerOrderRelationEntity FollowFollowerOrderRelation = followFollowerOrderRelationDao.selectNowOneByorderId(orderId); + Long tradeId = FollowFollowerOrderRelation.getTradeId(); + FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectById(tradeId); + String nickname = followTraderInfoEntity.getNickname(); + myFollowOrderVo.setNickname(nickname); + + 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(2, BigDecimal.ROUND_DOWN); + myFollowOrderVo.setBondAmount(bondAmount); + BigDecimal openingPrice = contractHoldOrderEntity.getOpeningPrice().setScale(2, 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()))); + myFollowOrderVo.setNewPrice(newPrice); + + 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(2, 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(); + List<MyFollowTraderInfoVo> myFollowOrderVos = new ArrayList<>(); + + 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)) { + 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 = FollowFollowerProfitEntity.getTotalProfit(); + myFollowTraderInfoVo.setTotalProfit(totalProfit.setScale(2, BigDecimal.ROUND_DOWN)); + + myFollowTraderInfoVo.setTradeId(tradeId); + myFollowOrderVos.add(myFollowTraderInfoVo); + } + } + return Result.ok(myFollowOrderVos); + } + + @Override + public Result getDocumentaryOrderInfo() { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + Map<String, Object> columnMap = new HashMap<>(); + columnMap.put("member_id", memberId); + List<DocumentaryOrderInfoVo> list = new ArrayList<>(); + //获取对应的杠杆等信息和可用余额 + BigDecimal availableBalance = BigDecimal.ZERO; + List<MemberWalletContractEntity> selectByMap = memberWalletContractDao.selectByMap(columnMap); + if(CollUtil.isNotEmpty(selectByMap)) { + for(MemberWalletContractEntity MemberWalletContractEntity : selectByMap) { + availableBalance = MemberWalletContractEntity.getAvailableBalance(); + } + } + List<MemberLevelRateEntity> memberLevelRateEntitys = memberLevelRateDao.selectByMap(columnMap); + if(CollUtil.isNotEmpty(memberLevelRateEntitys)) { + for(MemberLevelRateEntity memberLevelRateEntity : memberLevelRateEntitys) { + DocumentaryOrderInfoVo documentaryOrderInfoVo = new DocumentaryOrderInfoVo(); + String symbol = memberLevelRateEntity.getSymbol(); + documentaryOrderInfoVo.setSymbol(symbol); + int levelRateDown = memberLevelRateEntity.getLevelRateDown(); + documentaryOrderInfoVo.setLevelRate(levelRateDown); + documentaryOrderInfoVo.setAvaliableCoin(availableBalance); + list.add(documentaryOrderInfoVo); + } + } + return Result.ok(list); + } + + @Override + @Transactional + public Result getDocumentaryOrderSet(@Valid DocumentaryOrderSetDto documentaryOrderSetDto) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + Long traderId = documentaryOrderSetDto.getTraderId(); + + FollowTraderInfoEntity traderInfoEntity = followTraderInfoDao.selectTraderInfoByMemberId(memberId); + if (traderInfoEntity != null) { + return Result.fail("交易员不能进行跟单"); + } + + FollowFollowerSettingEntity isExistSetting = followFollowerSettingDao.selectOneBymemberIdAndTradeId(memberId, traderId); + if (isExistSetting == null) { + //新增【跟随者设置】数据 + FollowFollowerSettingEntity followFollowerSettingEntity = new FollowFollowerSettingEntity(); + followFollowerSettingEntity.setMemberId(memberId); + followFollowerSettingEntity.setTraderId(traderId); + FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectById(traderId); + Long traderMemberId = followTraderInfoEntity.getMemberId(); + followFollowerSettingEntity.setTraderMemberId(traderMemberId); + followFollowerSettingEntity.setSymbols(documentaryOrderSetDto.getSymbols()); + followFollowerSettingEntity.setFollowType(documentaryOrderSetDto.getFollowType()); + followFollowerSettingEntity.setFollowCnt(documentaryOrderSetDto.getFollowCnt()); + followFollowerSettingEntity.setMaxFollowCnt(documentaryOrderSetDto.getMaxFollowCnt()); + followFollowerSettingDao.insert(followFollowerSettingEntity); + //更新【跟随者收益】数据 + Map<String, Object> columnMap = new HashMap<>(); + columnMap.put("member_id", memberId); + columnMap.put("trade_id", traderId); + List<FollowFollowerProfitEntity> selectByMap = followFollowerProfitDao.selectByMap(columnMap); + if (CollUtil.isNotEmpty(selectByMap)) { + FollowFollowerProfitEntity followFollowerProfitEntity = selectByMap.get(0); + followFollowerProfitEntity.setIsFollow(FollowFollowerProfitEntity.IS_FOLLOW_Y); + followFollowerProfitDao.updateById(followFollowerProfitEntity); + } else { + FollowFollowerProfitEntity followFollowerProfitEntity = new FollowFollowerProfitEntity(); + followFollowerProfitEntity.setMemberId(memberId); + followFollowerProfitEntity.setTradeId(traderId); + followFollowerProfitEntity.setTradeMemberId(traderMemberId); + followFollowerProfitEntity.setTotalPrincipal(BigDecimal.ZERO); + followFollowerProfitEntity.setTotalProfit(BigDecimal.ZERO); + followFollowerProfitEntity.setIsFollow(FollowFollowerProfitEntity.IS_FOLLOW_Y); + followFollowerProfitDao.insert(followFollowerProfitEntity); + } + } else { + //更新【跟随者收益】数据 + Map<String, Object> columnMap = new HashMap<>(); + columnMap.put("member_id", memberId); + columnMap.put("trade_id", traderId); + List<FollowFollowerProfitEntity> selectByMap = followFollowerProfitDao.selectByMap(columnMap); + if (CollUtil.isNotEmpty(selectByMap)) { + FollowFollowerProfitEntity followFollowerProfitEntity = selectByMap.get(0); + followFollowerProfitEntity.setIsFollow(FollowFollowerProfitEntity.IS_FOLLOW_Y); + followFollowerProfitDao.updateById(followFollowerProfitEntity); + }else { + FollowFollowerProfitEntity followFollowerProfitEntity = new FollowFollowerProfitEntity(); + followFollowerProfitEntity.setMemberId(memberId); + followFollowerProfitEntity.setTradeId(traderId); + FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectById(traderId); + Long traderMemberId = followTraderInfoEntity.getMemberId(); + followFollowerProfitEntity.setTradeMemberId(traderMemberId); + followFollowerProfitEntity.setTotalPrincipal(BigDecimal.ZERO); + followFollowerProfitEntity.setTotalProfit(BigDecimal.ZERO); + followFollowerProfitEntity.setIsFollow(FollowFollowerProfitEntity.IS_FOLLOW_Y); + followFollowerProfitDao.insert(followFollowerProfitEntity); + } + + isExistSetting.setSymbols(documentaryOrderSetDto.getSymbols()); + isExistSetting.setFollowType(documentaryOrderSetDto.getFollowType()); + isExistSetting.setFollowCnt(documentaryOrderSetDto.getFollowCnt()); + isExistSetting.setMaxFollowCnt(documentaryOrderSetDto.getMaxFollowCnt()); + followFollowerSettingDao.updateById(isExistSetting); + } + return Result.ok(MessageSourceUtils.getString("member_service_0024")); + } + + @Override + public Result getDocumentaryOrderSetInfo(String tradeId) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + DocumentaryOrderSetInfoVo documentaryOrderSetInfoVo = new DocumentaryOrderSetInfoVo(); + long parseLong = Long.parseLong(tradeId); + //获取【跟随者设置】数据 + FollowFollowerSettingEntity followFollowerSettingEntity = followFollowerSettingDao.selectOneBymemberIdAndTradeId(memberId,parseLong); + + documentaryOrderSetInfoVo.setTraderId(parseLong); + + FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectById(tradeId); + String avatar = followTraderInfoEntity.getAvatar(); + documentaryOrderSetInfoVo.setAvatar(avatar); + + String nickname = followTraderInfoEntity.getNickname(); + documentaryOrderSetInfoVo.setNickname(nickname); + + documentaryOrderSetInfoVo.setProfit(followTraderInfoEntity.getProfitRatio()); + if (followFollowerSettingEntity == null) { + return Result.ok(documentaryOrderSetInfoVo); + } + String symbols = followFollowerSettingEntity.getSymbols(); + documentaryOrderSetInfoVo.setSymbols(symbols); + + Integer followType = followFollowerSettingEntity.getFollowType(); + documentaryOrderSetInfoVo.setFollowType(followType); + + Integer followCnt = followFollowerSettingEntity.getFollowCnt(); + documentaryOrderSetInfoVo.setFollowCnt(followCnt); + + Integer maxFollowCnt = followFollowerSettingEntity.getMaxFollowCnt(); + documentaryOrderSetInfoVo.setMaxFollowCnt(maxFollowCnt); + + return Result.ok(documentaryOrderSetInfoVo); + } + + @Override + @Transactional + public Result cancelDocumentaryOrderSetInfo(@Valid CancelDocumentaryOrderSetDto cancelDocumentaryOrderSetDto) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + Long traderId = cancelDocumentaryOrderSetDto.getTraderId(); + //删除【跟随者设置】数据 + FollowFollowerSettingEntity followFollowerSettingEntity = followFollowerSettingDao.selectOneBymemberIdAndTradeId(memberId,traderId); + followFollowerSettingDao.deleteById(followFollowerSettingEntity.getId()); + //更新【跟随者收益】数据 + FollowFollowerProfitEntity followFollowerProfitEntity = followFollowerProfitDao.selectDocumentaryOrderSetInfoBymemberIdAndTradeId(memberId,traderId); + followFollowerProfitEntity.setIsFollow(FollowFollowerProfitEntity.IS_FOLLOW_N); + followFollowerProfitDao.updateById(followFollowerProfitEntity); + return Result.ok(MessageSourceUtils.getString("documentary_service_0011")); + } + + @Override + @Transactional + public Result updateDocumentaryOrderSetInfo(@Valid UpdateDocumentaryOrderSetDto updateDocumentaryOrderSetDto) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + Long traderId = updateDocumentaryOrderSetDto.getTraderId(); + //更新【跟随者设置】数据 + FollowFollowerSettingEntity followFollowerSettingEntity = followFollowerSettingDao.selectOneBymemberIdAndTradeId(memberId, traderId); + if (followFollowerSettingEntity == null) { + FollowTraderInfoEntity traderInfoEntity = followTraderInfoDao.selectById(traderId); + followFollowerSettingEntity = new FollowFollowerSettingEntity(); + followFollowerSettingEntity.setSymbols(updateDocumentaryOrderSetDto.getSymbols()); + followFollowerSettingEntity.setFollowType(updateDocumentaryOrderSetDto.getFollowType()); + followFollowerSettingEntity.setFollowCnt(updateDocumentaryOrderSetDto.getFollowCnt()); + followFollowerSettingEntity.setMaxFollowCnt(updateDocumentaryOrderSetDto.getMaxFollowCnt()); + followFollowerSettingEntity.setTraderId(traderId); + followFollowerSettingEntity.setMemberId(memberId); + followFollowerSettingEntity.setTraderMemberId(traderInfoEntity.getMemberId()); + followFollowerSettingDao.insert(followFollowerSettingEntity); + } else { + followFollowerSettingEntity.setSymbols(updateDocumentaryOrderSetDto.getSymbols()); + followFollowerSettingEntity.setFollowType(updateDocumentaryOrderSetDto.getFollowType()); + followFollowerSettingEntity.setFollowCnt(updateDocumentaryOrderSetDto.getFollowCnt()); + followFollowerSettingEntity.setMaxFollowCnt(updateDocumentaryOrderSetDto.getMaxFollowCnt()); + followFollowerSettingDao.updateById(followFollowerSettingEntity); + } + + return Result.ok(MessageSourceUtils.getString("member_service_0024")); + } + + @Override + public Result getFollowTraderProfit(long traderId) { + FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectById(traderId); + Long memberId = followTraderInfoEntity.getMemberId(); + FollowTraderProfitInfoVo followTraderProfitInfoVo = followTraderProfitInfoDao.selectOneByMemberId(memberId); + MemberEntity user = LoginUserUtils.getUser(); + if(ObjectUtil.isNotEmpty(user)) { + FollowFollowerProfitEntity followFollowerProfitEntity = followFollowerProfitDao.selectDocumentaryOrderSetInfoBymemberIdAndTradeId(memberId, traderId); + if(ObjectUtil.isNotEmpty(followFollowerProfitEntity)) { + followTraderProfitInfoVo.setDocumentaryType(followFollowerProfitEntity.getIsFollow()); + }else { + followTraderProfitInfoVo.setDocumentaryType(2); + } + } + String avatar = followTraderInfoEntity.getAvatar(); + String nickname = followTraderInfoEntity.getNickname(); + String declaration = followTraderInfoEntity.getDeclaration(); + Integer isAll = followTraderInfoEntity.getIsAll(); + followTraderProfitInfoVo.setAvatar(avatar); + followTraderProfitInfoVo.setNickname(nickname); + followTraderProfitInfoVo.setDeclaration(declaration); + followTraderProfitInfoVo.setIsAll(isAll); + return Result.ok(followTraderProfitInfoVo); + } + + @Override + @Transactional + public Result beTrader() { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + MemberEntity memberEntity = memberDao.selectById(memberId); + Integer certifyStatus = memberEntity.getCertifyStatus(); + if(MemberEntity.CERTIFY_STATUS_Y != certifyStatus) { + return Result.fail(MessageSourceUtils.getString("member_controller_0009")); + } + Map<String, Object> columnMap = new HashMap<>(); + columnMap.put("member_id", memberId); + List<FollowTraderInfoEntity> selectByMap = followTraderInfoDao.selectByMap(columnMap); + if(CollUtil.isNotEmpty(selectByMap)) { + return Result.fail(MessageSourceUtils.getString("submit_repeat")); + } + + //新增【交易员信息表】数据 + FollowTraderInfoEntity followTraderInfoEntity = new FollowTraderInfoEntity(); + followTraderInfoEntity.setMemberId(memberId); + followTraderInfoEntity.setAvatar(FollowTraderInfoEntity.AVATAR_DEFAULT); + String phone = memberEntity.getPhone(); + String email = memberEntity.getEmail(); + if(StrUtil.isNotEmpty(phone)) { + followTraderInfoEntity.setNickname(phone); + }else { + followTraderInfoEntity.setNickname(email); + } + followTraderInfoEntity.setDeclaration(FollowTraderInfoEntity.DECLARATION_DEFAULT); + followTraderInfoEntity.setIsAll(FollowTraderInfoEntity.IS_ALL_N); + followTraderInfoEntity.setProfitRatio(BigDecimal.ZERO); + followTraderInfoEntity.setVerifyStatus(FollowTraderInfoEntity.VERIFYSTATUS_ING); + followTraderInfoEntity.setIsOpen(FollowTraderInfoEntity.ISOPEN_Y); + followTraderInfoDao.insert(followTraderInfoEntity); + return Result.ok(MessageSourceUtils.getString("member_service_0024")); + } + + @Override + public Result beTraderStatus() { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + MemberEntity memberEntity = memberDao.selectById(memberId); + + TraderStatusVo traderStatusVo = new TraderStatusVo(); + Integer isTraer = memberEntity.getIsTrader(); + traderStatusVo.setIsTrader(isTraer); + + Map<String, Object> columnMap = new HashMap<>(); + columnMap.put("member_id", memberId); + List<FollowTraderInfoEntity> selectByMap = followTraderInfoDao.selectByMap(columnMap); + if(CollUtil.isNotEmpty(selectByMap)) { + for(FollowTraderInfoEntity followTraderInfoEntity : selectByMap) { + Integer verifyStatus = followTraderInfoEntity.getVerifyStatus(); + traderStatusVo.setVerifyStatus(verifyStatus); + } + }else{ + traderStatusVo.setVerifyStatus(4); + } + return Result.ok(traderStatusVo); + } + + @Override + public Result getTradeSetInfo() { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectTraderInfoByMemberId(memberId); + + TradeSetInfoVo tradeSetInfoVo = new TradeSetInfoVo(); + String avatar = followTraderInfoEntity.getAvatar(); + tradeSetInfoVo.setAvatar(avatar); + String nickname = followTraderInfoEntity.getNickname(); + tradeSetInfoVo.setNickname(nickname); + String declaration = followTraderInfoEntity.getDeclaration(); + tradeSetInfoVo.setDeclaration(declaration); + Integer isOpen = followTraderInfoEntity.getIsOpen(); + tradeSetInfoVo.setIsOpen(isOpen); + return Result.ok(tradeSetInfoVo); + } + + @Override + public Result updateTradeSetInfo(@Valid UpdateTradeSetInfoDto updateTradeSetInfoDto) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectTraderInfoByMemberId(memberId); + String avatar = updateTradeSetInfoDto.getAvatar(); + String nickname = updateTradeSetInfoDto.getNickname(); + String declaration = updateTradeSetInfoDto.getDeclaration(); + int isOpen = updateTradeSetInfoDto.getIsOpen(); + followTraderInfoEntity.setAvatar(avatar); + followTraderInfoEntity.setNickname(nickname); + followTraderInfoEntity.setDeclaration(declaration); + followTraderInfoEntity.setIsOpen(isOpen); + followTraderInfoDao.updateById(followTraderInfoEntity); + return Result.ok(MessageSourceUtils.getString("member_service_0024")); + } + + @Override + public Result getTradeProfitInfo() { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + TradeProfitInfoVo tradeProfitInfoVo = new TradeProfitInfoVo(); + //获取【交易员信息表】数据 + FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectTraderInfoByMemberId(memberId); + if(ObjectUtil.isNotEmpty(followTraderInfoEntity)) { + String avatar = followTraderInfoEntity.getAvatar(); + tradeProfitInfoVo.setAvatar(avatar); + String nickname = followTraderInfoEntity.getNickname(); + tradeProfitInfoVo.setNickname(nickname); + String declaration = followTraderInfoEntity.getDeclaration(); + tradeProfitInfoVo.setDeclaration(declaration); + } + //获取【交易员收益信息】数据 + FollowTraderProfitInfoVo followTraderProfitInfoVo = followTraderProfitInfoDao.selectOneByMemberId(memberId); + if(ObjectUtil.isNotEmpty(followTraderProfitInfoVo)) { + BigDecimal totalProfitRatio = followTraderProfitInfoVo.getTotalProfitRatio(); + tradeProfitInfoVo.setTotalProfitRatio(totalProfitRatio); + BigDecimal totalProfit = followTraderProfitInfoVo.getTotalProfit(); + tradeProfitInfoVo.setTotalProfit(totalProfit); + BigDecimal followerTotalProfit = followTraderProfitInfoVo.getFollowerTotalProfit(); + tradeProfitInfoVo.setFollowerTotalProfit(followerTotalProfit); + BigDecimal winRate = followTraderProfitInfoVo.getWinRate(); + tradeProfitInfoVo.setWinRate(winRate); + BigDecimal totalFollowerCnt = followTraderProfitInfoVo.getTotalFollowerCnt(); + tradeProfitInfoVo.setTotalFollowerCnt(totalFollowerCnt); + BigDecimal totalOrderCnt = followTraderProfitInfoVo.getTotalOrderCnt(); + tradeProfitInfoVo.setTotalOrderCnt(totalOrderCnt); + } + return Result.ok(tradeProfitInfoVo); + } + + @Override + public Result getTradeOrderInfo(@Valid TradeOrderInfoDto tradeOrderInfoDto) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + MemberEntity member = memberDao.selectById(memberId); + + List<TradeOrderInfoVo> myFollowOrderVos = new ArrayList<>(); + //当前跟单 + Page<ContractHoldOrderEntity> page = new Page<>(tradeOrderInfoDto.getPageNum(), tradeOrderInfoDto.getPageSize()); + IPage<ContractHoldOrderEntity> contractHoldOrderEntitys = followFollowerProfitDao.getMyFollowOrderNowRecords(page, memberId); + + List<ContractHoldOrderEntity> records = contractHoldOrderEntitys.getRecords(); + if(CollUtil.isNotEmpty(records)) { + for(ContractHoldOrderEntity contractHoldOrderEntity : records) { + TradeOrderInfoVo myFollowOrderVo = new TradeOrderInfoVo(); + //获取交易员信息 + Long orderId = contractHoldOrderEntity.getId(); + myFollowOrderVo.setOrderId(orderId); + FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectTraderInfoByMemberId(memberId); + String nickname = followTraderInfoEntity.getNickname(); + myFollowOrderVo.setNickname(nickname); + + 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(2, BigDecimal.ROUND_DOWN); + myFollowOrderVo.setBondAmount(bondAmount); + BigDecimal openingPrice = contractHoldOrderEntity.getOpeningPrice().setScale(2, 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()))); + myFollowOrderVo.setNewPrice(newPrice); + + 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(2, BigDecimal.ROUND_DOWN)); + + // 回报率 + BigDecimal returnRate = rewardRatio.divide(contractHoldOrderEntity.getBondAmount().subtract(contractHoldOrderEntity.getOpeningFeeAmount()), 8, BigDecimal.ROUND_DOWN); + myFollowOrderVo.setRewardRatio(returnRate.setScale(2, BigDecimal.ROUND_DOWN)); + + myFollowOrderVos.add(myFollowOrderVo); + } + } + + return Result.ok(myFollowOrderVos); + } + + @Override + public Result getTradeHistoryOrderInfo(@Valid TradeOrderInfoDto tradeOrderInfoDto) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + List<TradeHistoryOrderInfoVo> myFollowOrderVos = new ArrayList<>(); + //历史跟单 + Page<ContractOrderEntity> page = new Page<>(tradeOrderInfoDto.getPageNum(), tradeOrderInfoDto.getPageSize()); + IPage<ContractOrderEntity> contractOrderEntitys = followFollowerProfitDao.getMyFollowOrderHistoryRecords(page, memberId); + + List<ContractOrderEntity> records = contractOrderEntitys.getRecords(); + if(CollUtil.isNotEmpty(records)) { + for(ContractOrderEntity contractOrderEntity : records) { + TradeHistoryOrderInfoVo myFollowOrderVo = new TradeHistoryOrderInfoVo(); + //获取交易员信息 + FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectTraderInfoByMemberId(memberId); + String nickname = followTraderInfoEntity.getNickname(); + myFollowOrderVo.setNickname(nickname); + Long orderId = contractOrderEntity.getId(); + myFollowOrderVo.setOrderId(orderId); + 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(2, BigDecimal.ROUND_DOWN); + myFollowOrderVo.setRewardAmount(rewardAmount); + BigDecimal rewardRatio = contractOrderEntity.getRewardRatio().setScale(2, BigDecimal.ROUND_DOWN); + myFollowOrderVo.setRewardRatio(rewardRatio); + int symbolCnt = contractOrderEntity.getSymbolCnt(); + myFollowOrderVo.setSymbolCnt(symbolCnt); + BigDecimal bondAmount = contractOrderEntity.getBondAmount().setScale(2, BigDecimal.ROUND_DOWN); + myFollowOrderVo.setBondAmount(bondAmount); + BigDecimal openingPrice = contractOrderEntity.getOpeningPrice().setScale(2, BigDecimal.ROUND_DOWN); + myFollowOrderVo.setOpeningPrice(openingPrice); + BigDecimal closingPrice = contractOrderEntity.getClosingPrice().setScale(2, 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); + } + } + return Result.ok(myFollowOrderVos); + } + + @Override + public Result getTradeFollowInfo(@Valid TradeFollowInfoDto tradeFollowInfoDto) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + List<TradeFollowInfoVo> myFollowOrderVos = new ArrayList<>(); + + Page<FollowFollowerProfitEntity> page = new Page<>(tradeFollowInfoDto.getPageNum(), tradeFollowInfoDto.getPageSize()); + IPage<FollowFollowerProfitEntity> followFollowerProfitEntitys = followFollowerProfitDao.selectTradeFollowerProfitEntitys(page, memberId); + List<FollowFollowerProfitEntity> records = followFollowerProfitEntitys.getRecords(); + if(CollUtil.isNotEmpty(records)) { + for(FollowFollowerProfitEntity followFollowerProfitEntity : records) { + TradeFollowInfoVo myFollowTraderInfoVo = new TradeFollowInfoVo(); + + Long followMemberId = followFollowerProfitEntity.getMemberId(); + MemberEntity memberEntity = memberDao.selectById(followMemberId); + if(ObjectUtil.isNotEmpty(memberEntity)) { + String phone = memberEntity.getPhone(); + String email = memberEntity.getEmail(); + if(StrUtil.isNotEmpty(phone)) { + myFollowTraderInfoVo.setNickname(phone); + }else { + myFollowTraderInfoVo.setNickname(email); + } + } + + Long id = followFollowerProfitEntity.getId(); + myFollowTraderInfoVo.setId(id); + BigDecimal totalPrincipal = followFollowerProfitEntity.getTotalPrincipal(); + myFollowTraderInfoVo.setTotalPrincipal(totalPrincipal); + BigDecimal totalProfit = followFollowerProfitEntity.getTotalProfit(); + myFollowTraderInfoVo.setTotalProfit(totalProfit.setScale(2, BigDecimal.ROUND_DOWN)); + + myFollowOrderVos.add(myFollowTraderInfoVo); + } + } + return Result.ok(myFollowOrderVos); + } + + @Override + @Transactional + public Result getOutFollowInfo(@Valid OutFollowInfoDto outFollowInfoDto) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + long id = outFollowInfoDto.getId(); + //获取【跟随者收益】 + FollowFollowerProfitEntity followFollowerProfitEntity = followFollowerProfitDao.selectById(id); + followFollowerProfitEntity.setIsFollow(FollowFollowerProfitEntity.IS_FOLLOW_N); + followFollowerProfitDao.updateById(followFollowerProfitEntity); + + //删除【跟随者设置】 + Map<String, Object> columnMap = new HashMap<>(); + Long followMemberId = followFollowerProfitEntity.getMemberId(); + Long tradeId = followFollowerProfitEntity.getTradeId(); + columnMap.put("member_id", followMemberId); + columnMap.put("trader_id", tradeId); + List<FollowFollowerSettingEntity> selectByMap = followFollowerSettingDao.selectByMap(columnMap); + if(CollUtil.isNotEmpty(selectByMap)) { + for(FollowFollowerSettingEntity followFollowerSettingEntity : selectByMap) { + followFollowerSettingDao.deleteById(followFollowerSettingEntity.getId()); + } + } + + FollowTraderInfoEntity traderInfoEntity = followTraderInfoDao.selectTraderInfoByMemberId(memberId); + + if (traderInfoEntity != null) { + LogRecordUtils.insertFollowerNotice(memberId, NoticeConstant.STOP_FOLLOW_TITLE, StrUtil.format(NoticeConstant.STOP_FOLLOW_CONTENT, traderInfoEntity.getNickname())); + } + return Result.ok(MessageSourceUtils.getString("member_service_0026")); + } + + @Override + public Result getFollowFollowerNoticeList() { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + List<FollowFollowerNoticeVo> arrayList = new ArrayList<>(); + + Map<String, Object> columnMap = new HashMap<>(); + columnMap.put("member_id", memberId); + List<FollowFollowerNoticeEntity> selectByMap = followFollowerNoticeDao.selectByMap(columnMap ); + if(CollUtil.isNotEmpty(selectByMap)) { + for(FollowFollowerNoticeEntity followFollowerNoticeEntity : selectByMap) { + FollowFollowerNoticeVo followFollowerNoticeVo = new FollowFollowerNoticeVo(); + String title = followFollowerNoticeEntity.getTitle(); + followFollowerNoticeVo.setTitle(title); + String content = followFollowerNoticeEntity.getContent(); + followFollowerNoticeVo.setContent(content); + arrayList.add(followFollowerNoticeVo); + } + } + + return Result.ok(arrayList); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + } -- Gitblit v1.9.1