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