From d76ed8abc8f31e210f4e93f173f41bc2861870dd Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Tue, 06 Apr 2021 15:37:49 +0800 Subject: [PATCH] 20210406 交易员列表查询 --- src/main/resources/mapper/contract/ContractOrderDao.xml | 37 ++++++++++++++++++ src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java | 22 ++++++++++ src/main/java/com/xcong/excoin/modules/documentary/vo/TradeProfitInfoVo.java | 10 +++++ src/main/java/com/xcong/excoin/quartz/job/FollowProfitUpdateJob.java | 23 +++++++++++ src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java | 6 ++ src/main/java/com/xcong/excoin/modules/documentary/vo/FollowTraderProfitInfoVo.java | 10 +++++ src/main/java/com/xcong/excoin/modules/documentary/entity/FollowTraderProfitInfoEntity.java | 8 ++++ 7 files changed, 113 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java index 0679e99..c85c6f4 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java +++ b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java @@ -6,9 +6,13 @@ import com.xcong.excoin.modules.contract.entity.ContractOrderEntity; import com.xcong.excoin.modules.contract.parameter.dto.OrderListDto; import com.xcong.excoin.modules.contract.parameter.vo.OrderListVo; + +import cn.hutool.core.date.DateTime; + import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; +import java.util.Date; import java.util.List; /** @@ -37,4 +41,20 @@ public List<ContractOrderEntity> selectFollowOrderListByMemberId(@Param("tradeMemberId")Long tradeMemberId); public String selectOrderNoByOrderIds(@Param("orderId")Long orderId); -} + + public BigDecimal selectThirtyTotalCntByMemberId(@Param("memberId")Long tradeMemberId, @Param("date")Date date, @Param("offsetDay")DateTime offsetDay); + + public BigDecimal selectThirtyWinCntByMemberId(@Param("memberId")Long tradeMemberId, @Param("date")Date date, @Param("offsetDay")DateTime offsetDay); + + public BigDecimal selectThirtyMaxRatioByMemberId(@Param("memberId")Long tradeMemberId, @Param("date")Date date, @Param("offsetDay")DateTime offsetDay); + + public BigDecimal selectThirtyMinRatioByMemberId(@Param("memberId")Long tradeMemberId, @Param("date")Date date, @Param("offsetDay")DateTime offsetDay); + + + + + + + + +} \ No newline at end of file diff --git a/src/main/java/com/xcong/excoin/modules/documentary/entity/FollowTraderProfitInfoEntity.java b/src/main/java/com/xcong/excoin/modules/documentary/entity/FollowTraderProfitInfoEntity.java index 740fcfe..ae86a07 100644 --- a/src/main/java/com/xcong/excoin/modules/documentary/entity/FollowTraderProfitInfoEntity.java +++ b/src/main/java/com/xcong/excoin/modules/documentary/entity/FollowTraderProfitInfoEntity.java @@ -43,6 +43,14 @@ */ private BigDecimal followerTotalProfit; /** + * 三十天胜率 + */ + private BigDecimal thirtyProfitRatio; + /** + * 三十天最大回撤率 + */ + private BigDecimal thirtyRatio; + /** * 胜率 */ private BigDecimal winRate; 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 6baf44e..87a2eb8 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 @@ -1032,7 +1032,11 @@ tradeProfitInfoVo.setTotalFollowerCnt(totalFollowerCnt); BigDecimal totalOrderCnt = followTraderProfitInfoVo.getTotalOrderCnt(); tradeProfitInfoVo.setTotalOrderCnt(totalOrderCnt); - } + BigDecimal thirtyProfitRatio = followTraderProfitInfoVo.getThirtyProfitRatio(); + tradeProfitInfoVo.setThirtyProfitRatio(thirtyProfitRatio); + BigDecimal thirtyRatio = followTraderProfitInfoVo.getThirtyRatio(); + tradeProfitInfoVo.setThirtyRatio(thirtyRatio); + } return Result.ok(tradeProfitInfoVo); } diff --git a/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowTraderProfitInfoVo.java b/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowTraderProfitInfoVo.java index 5a81616..e873176 100644 --- a/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowTraderProfitInfoVo.java +++ b/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowTraderProfitInfoVo.java @@ -48,6 +48,16 @@ */ @ApiModelProperty("胜率") private BigDecimal winRate; + /** + * 三十天胜率 + */ + @ApiModelProperty("三十天胜率") + private BigDecimal thirtyProfitRatio; + /** + * 三十天最大回撤率 + */ + @ApiModelProperty("三十天最大回撤率") + private BigDecimal thirtyRatio; /** * 累计跟随人数 */ diff --git a/src/main/java/com/xcong/excoin/modules/documentary/vo/TradeProfitInfoVo.java b/src/main/java/com/xcong/excoin/modules/documentary/vo/TradeProfitInfoVo.java index c10c8ec..144969e 100644 --- a/src/main/java/com/xcong/excoin/modules/documentary/vo/TradeProfitInfoVo.java +++ b/src/main/java/com/xcong/excoin/modules/documentary/vo/TradeProfitInfoVo.java @@ -30,6 +30,16 @@ @ApiModelProperty("胜率") private BigDecimal winRate; /** + * 三十天胜率 + */ + @ApiModelProperty("三十天胜率") + private BigDecimal thirtyProfitRatio; + /** + * 三十天最大回撤率 + */ + @ApiModelProperty("三十天最大回撤率") + private BigDecimal thirtyRatio; + /** * 累计跟随人数 */ @ApiModelProperty("累计跟随人数") diff --git a/src/main/java/com/xcong/excoin/quartz/job/FollowProfitUpdateJob.java b/src/main/java/com/xcong/excoin/quartz/job/FollowProfitUpdateJob.java index aa2e1cb..0977da0 100644 --- a/src/main/java/com/xcong/excoin/quartz/job/FollowProfitUpdateJob.java +++ b/src/main/java/com/xcong/excoin/quartz/job/FollowProfitUpdateJob.java @@ -1,6 +1,9 @@ package com.xcong.excoin.quartz.job; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; + import com.xcong.excoin.modules.contract.dao.ContractOrderDao; import com.xcong.excoin.modules.contract.entity.ContractOrderEntity; import com.xcong.excoin.modules.documentary.dao.FollowFollowerOrderRelationDao; @@ -18,6 +21,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -96,7 +100,24 @@ BigDecimal winRate = BigDecimal.valueOf(winCnt).divide(BigDecimal.valueOf(allCnt), 4, BigDecimal.ROUND_DOWN); traderInfoProfit.setWinRate(winRate); } - + Date date = new Date(); + DateTime offsetDay = DateUtil.offsetDay(new Date(), -30); + //30天胜率(30天盈利总张数/30平仓总张数) + BigDecimal thirtyTotalCnt = contractOrderDao.selectThirtyTotalCntByMemberId(tradeMemberId,date,offsetDay); + BigDecimal thirtyWinCnt = contractOrderDao.selectThirtyWinCntByMemberId(tradeMemberId,date,offsetDay); + BigDecimal thirtyTotalCntRatio = (thirtyTotalCnt == null?BigDecimal.ZERO:thirtyTotalCnt.setScale(2, BigDecimal.ROUND_DOWN)); + BigDecimal thirtyWinCntRatio = (thirtyWinCnt == null?BigDecimal.ZERO:thirtyWinCnt.setScale(2, BigDecimal.ROUND_DOWN)); + BigDecimal thirtyProfitRatio = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_DOWN);; + if(thirtyTotalCnt.compareTo(BigDecimal.ZERO) > 0) { + thirtyProfitRatio = thirtyWinCntRatio.divide(thirtyTotalCntRatio, 2, BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_DOWN); + } + traderInfoProfit.setThirtyProfitRatio(thirtyProfitRatio); + //30天最大回撤率(30天最高收益率-30天最低收益率) + BigDecimal thirtyMaxRatio = contractOrderDao.selectThirtyMaxRatioByMemberId(tradeMemberId,date,offsetDay); + BigDecimal thirtyMinRatio = contractOrderDao.selectThirtyMinRatioByMemberId(tradeMemberId,date,offsetDay); + BigDecimal thirtyRatio = (thirtyMaxRatio == null?BigDecimal.ZERO:thirtyMaxRatio.setScale(2, BigDecimal.ROUND_DOWN)) + .subtract((thirtyMinRatio == null?BigDecimal.ZERO:thirtyMinRatio.setScale(2, BigDecimal.ROUND_DOWN))); + traderInfoProfit.setThirtyRatio(thirtyRatio); // 当前跟随者总收益 BigDecimal followerProfit = followFollowerProfitDao.selectAllFollowerProfit(tradeMemberId); traderInfoProfit.setFollowerTotalProfit(followerProfit); diff --git a/src/main/resources/mapper/contract/ContractOrderDao.xml b/src/main/resources/mapper/contract/ContractOrderDao.xml index 4e8d023..4df2c4c 100644 --- a/src/main/resources/mapper/contract/ContractOrderDao.xml +++ b/src/main/resources/mapper/contract/ContractOrderDao.xml @@ -126,4 +126,41 @@ closing_type IN (4, 5) and member_id=#{memberId} </select> + + <select id="selectThirtyTotalCntByMemberId" resultType="java.math.BigDecimal"> + select sum(symbol_cnt)/2 + from contract_order + where + member_id=#{memberId} + and contract_type=2 + and create_time BETWEEN #{offsetDay} and #{date} + </select> + + <select id="selectThirtyWinCntByMemberId" resultType="java.math.BigDecimal"> + select sum(symbol_cnt)/2 + from contract_order + where + member_id=#{memberId} + and contract_type=2 + and create_time BETWEEN #{offsetDay} and #{date} + and reward_ratio > 0 + </select> + + <select id="selectThirtyMaxRatioByMemberId" resultType="java.math.BigDecimal"> + select MAX(reward_ratio)*100 + from contract_order + where + member_id=#{memberId} + and contract_type=2 + and create_time BETWEEN #{offsetDay} and #{date} + </select> + + <select id="selectThirtyMinRatioByMemberId" resultType="java.math.BigDecimal"> + select MIN(reward_ratio)*100 + from contract_order + where + member_id=#{memberId} + and contract_type=2 + and create_time BETWEEN #{offsetDay} and #{date} + </select> </mapper> \ No newline at end of file -- Gitblit v1.9.1