From cdf75ee88f261d7c1344cd856c03e8c9611f032c Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Wed, 05 Aug 2020 16:19:51 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java | 291 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 277 insertions(+), 14 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 4f4cbc2..24a6252 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 @@ -10,7 +10,6 @@ import javax.annotation.Resource; import javax.validation.Valid; -import org.apache.http.impl.NoConnectionReuseStrategy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -36,7 +35,11 @@ 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.FollowFollowerOrderRelationEntity; import com.xcong.excoin.modules.documentary.entity.FollowFollowerProfitEntity; import com.xcong.excoin.modules.documentary.entity.FollowFollowerSettingEntity; @@ -52,6 +55,11 @@ 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; @@ -134,12 +142,10 @@ Long memberId = user.getId(); FollowFollowerProfitEntity followFollowerProfitEntity = followFollowerProfitDao.selectDocumentaryOrderSetInfoBymemberIdAndTradeId(memberId, traderId); if(ObjectUtil.isNotEmpty(followFollowerProfitEntity)) { - FollowTraderProfitInfoVo.setDocumentaaryType(1); + FollowTraderProfitInfoVo.setDocumentaryType(followFollowerProfitEntity.getIsFollow()); }else { - FollowTraderProfitInfoVo.setDocumentaaryType(2); - } - }else { - FollowTraderProfitInfoVo.setDocumentaaryType(2); + FollowTraderProfitInfoVo.setDocumentaryType(2); + } } Long traderId = FollowTraderProfitInfoVo.getTraderId(); FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoDao.selectFollowTraderInfoEntityBytreaderId(traderId); @@ -258,6 +264,7 @@ 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); @@ -311,6 +318,7 @@ 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); @@ -361,7 +369,7 @@ // 回报率 BigDecimal returnRate = rewardRatio.divide(contractHoldOrderEntity.getBondAmount().subtract(contractHoldOrderEntity.getOpeningFeeAmount()), 8, BigDecimal.ROUND_DOWN); - myFollowOrderVo.setRewardRatio(returnRate.setScale(2, BigDecimal.ROUND_DOWN)); + myFollowOrderVo.setRewardRatio(returnRate.setScale(4, BigDecimal.ROUND_DOWN)); myFollowOrderVos.add(myFollowOrderVo); } @@ -394,6 +402,8 @@ myFollowTraderInfoVo.setTotalPrincipal(totalPrincipal); BigDecimal totalProfit = FollowFollowerProfitEntity.getTotalProfit(); myFollowTraderInfoVo.setTotalProfit(totalProfit.setScale(2, BigDecimal.ROUND_DOWN)); + + myFollowTraderInfoVo.setTradeId(tradeId); myFollowOrderVos.add(myFollowTraderInfoVo); } } @@ -475,12 +485,11 @@ followFollowerProfitDao.insert(followFollowerProfitEntity); } } else { - FollowFollowerSettingEntity followFollowerSettingEntity = new FollowFollowerSettingEntity(); - followFollowerSettingEntity.setSymbols(documentaryOrderSetDto.getSymbols()); - followFollowerSettingEntity.setFollowType(documentaryOrderSetDto.getFollowType()); - followFollowerSettingEntity.setFollowCnt(documentaryOrderSetDto.getFollowCnt()); - followFollowerSettingEntity.setMaxFollowCnt(documentaryOrderSetDto.getMaxFollowCnt()); - followFollowerSettingDao.updateById(followFollowerSettingEntity); + 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")); } @@ -535,7 +544,7 @@ FollowFollowerProfitEntity followFollowerProfitEntity = followFollowerProfitDao.selectDocumentaryOrderSetInfoBymemberIdAndTradeId(memberId,traderId); followFollowerProfitEntity.setIsFollow(FollowFollowerProfitEntity.IS_FOLLOW_N); followFollowerProfitDao.updateById(followFollowerProfitEntity); - return null; + return Result.ok(MessageSourceUtils.getString("documentary_service_0011")); } @Override @@ -573,6 +582,15 @@ 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(); @@ -644,6 +662,251 @@ } 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.setAccount(phone); + }else { + myFollowTraderInfoVo.setAccount(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); + + return Result.ok(MessageSourceUtils.getString("member_service_0026")); + } -- Gitblit v1.9.1