From e08d29b508b4bbed9434328284d9939e6ad8b3ce Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 29 Jul 2020 19:09:37 +0800
Subject: [PATCH] 20200729 代码提交
---
src/main/java/com/xcong/excoin/modules/documentary/dto/MyFollowTraderInfoDto.java | 22 ++
src/main/java/com/xcong/excoin/modules/documentary/vo/FollowInfoVo.java | 39 +++
src/main/resources/mapper/documentary/FollowFollowerProfitDao.xml | 46 ++++
src/main/java/com/xcong/excoin/modules/documentary/dto/MyFollowOrderDto.java | 31 ++
src/main/java/com/xcong/excoin/modules/documentary/vo/MyFollowOrderVo.java | 54 ++++
src/main/java/com/xcong/excoin/modules/documentary/controller/DocumentaryController.java | 55 ++++
src/main/java/com/xcong/excoin/modules/documentary/service/DocumentaryService.java | 8
src/main/java/com/xcong/excoin/modules/documentary/service/impl/DocumentaryServiceImpl.java | 275 +++++++++++++++++++++++++
src/main/java/com/xcong/excoin/modules/documentary/vo/MyFollowTraderInfoVo.java | 46 ++++
src/main/java/com/xcong/excoin/modules/documentary/dao/FollowFollowerProfitDao.java | 18 +
src/main/java/com/xcong/excoin/modules/documentary/vo/FollowRecordsVo.java | 19 -
11 files changed, 592 insertions(+), 21 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/controller/DocumentaryController.java b/src/main/java/com/xcong/excoin/modules/documentary/controller/DocumentaryController.java
index 24941bb..81f1bb4 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/controller/DocumentaryController.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/controller/DocumentaryController.java
@@ -4,6 +4,7 @@
import javax.validation.Valid;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -13,9 +14,14 @@
import com.xcong.excoin.modules.coin.parameter.vo.MemberAgentIntoInfoVo;
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.service.DocumentaryService;
+import com.xcong.excoin.modules.documentary.vo.FollowInfoVo;
import com.xcong.excoin.modules.documentary.vo.FollowRecordsVo;
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 io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -43,11 +49,11 @@
}
/**
- * 交易员收益信息列表
+ * 交易员列表
*/
- @ApiOperation(value="getFollowTraderProfitInfo", notes="交易员收益信息列表")
+ @ApiOperation(value="getFollowTraderProfitInfo", notes="交易员列表")
@ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberIsTradeVo.class)})
- @GetMapping(value = "/getFollowTraderProfitInfo")
+ @PostMapping(value = "/getFollowTraderProfitInfo")
public Result getFollowTraderProfitInfo(@RequestBody @Valid RecordsPageDto recordsPageDto) {
return documentaryService.getFollowTraderProfitInfo(recordsPageDto);
}
@@ -58,7 +64,7 @@
*/
@ApiOperation(value="getHistoryOrderRecords", notes="历史带单")
@ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberAgentIntoInfoVo.class)})
- @GetMapping(value = "/getHistoryOrderRecords")
+ @PostMapping(value = "/getHistoryOrderRecords")
public Result getHistoryOrderRecords(@RequestBody @Valid HistoryOrderRecordsDto historyOrderRecordsDto) {
return documentaryService.getHistoryOrderRecords(historyOrderRecordsDto);
}
@@ -69,11 +75,50 @@
*/
@ApiOperation(value="getFollowRecords", notes="跟随者")
@ApiResponses({@ApiResponse( code = 200, message = "success", response = FollowRecordsVo.class)})
- @GetMapping(value = "/getFollowRecords")
+ @PostMapping(value = "/getFollowRecords")
public Result getFollowRecords(@RequestBody @Valid FollowRecordsDto followRecordsDto) {
return documentaryService.getFollowRecords(followRecordsDto);
}
+ /**
+ * 我的跟单--头部
+ */
+ @ApiOperation(value="getFollowInfo", notes="我的跟单--头部")
+ @ApiResponses({@ApiResponse( code = 200, message = "success", response = FollowInfoVo.class)})
+ @GetMapping(value = "/getFollowInfo")
+ public Result getFollowInfo() {
+ return documentaryService.getFollowInfo();
+ }
+
+ /**
+ * 我的跟单--我的跟单
+ * @return
+ */
+ @ApiOperation(value="getFollowRecords", notes="我的跟单--我的跟单")
+ @ApiResponses({@ApiResponse( code = 200, message = "success", response = MyFollowOrderVo.class)})
+ @PostMapping(value = "/getMyFollowOrderRecords")
+ public Result getMyFollowOrderRecords(@RequestBody @Valid MyFollowOrderDto myFollowOrderDto) {
+ return documentaryService.getMyFollowOrderRecords(myFollowOrderDto);
+ }
+
+ /**
+ * 我的跟单--我的交易员
+ */
+ @ApiOperation(value="getMyFollowTraderInfo", notes="我的跟单--我的交易员")
+ @ApiResponses({@ApiResponse( code = 200, message = "success", response = MyFollowTraderInfoVo.class)})
+ @PostMapping(value = "/getMyFollowTraderInfo")
+ public Result getMyFollowTraderInfo(@RequestBody @Valid MyFollowTraderInfoDto myFollowTraderInfoDto) {
+ return documentaryService.getMyFollowTraderInfo(myFollowTraderInfoDto);
+ }
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/dao/FollowFollowerProfitDao.java b/src/main/java/com/xcong/excoin/modules/documentary/dao/FollowFollowerProfitDao.java
index 0e2e758..86126a7 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/dao/FollowFollowerProfitDao.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/dao/FollowFollowerProfitDao.java
@@ -1,10 +1,14 @@
package com.xcong.excoin.modules.documentary.dao;
+import java.util.List;
+
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity;
+import com.xcong.excoin.modules.contract.entity.ContractOrderEntity;
import com.xcong.excoin.modules.documentary.entity.FollowFollowerProfitEntity;
import com.xcong.excoin.modules.documentary.vo.FollowRecordsVo;
@@ -13,6 +17,18 @@
*/
public interface FollowFollowerProfitDao extends BaseMapper<FollowFollowerProfitEntity> {
- IPage<FollowRecordsVo> selectFollowRecords(Page<FollowRecordsVo> page, @Param("tradeMemberId")Long tradeMemberId);
+ IPage<FollowRecordsVo> selectFollowRecords(Page<FollowRecordsVo> page,
+ @Param("tradeMemberId")Long tradeMemberId);
+
+ IPage<ContractOrderEntity> getMyFollowOrderHistoryRecords(Page<ContractOrderEntity> page,
+ @Param("memberId")Long memberId);
+
+ IPage<ContractHoldOrderEntity> getMyFollowOrderNowRecords(Page<ContractHoldOrderEntity> page,
+ @Param("memberId")Long memberId);
+
+ List<ContractHoldOrderEntity> getFollowOrderNowRecords(@Param("memberId")Long memberId);
+
+ IPage<FollowFollowerProfitEntity> selectFollowFollowerProfitEntitys(Page<FollowFollowerProfitEntity> page,
+ @Param("memberId")Long memberId);
}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/dto/MyFollowOrderDto.java b/src/main/java/com/xcong/excoin/modules/documentary/dto/MyFollowOrderDto.java
new file mode 100644
index 0000000..f940068
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/documentary/dto/MyFollowOrderDto.java
@@ -0,0 +1,31 @@
+package com.xcong.excoin.modules.documentary.dto;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "MyFollowOrderDto", description = "参数接受类")
+public class MyFollowOrderDto {
+
+ @NotNull
+ @Min(1)
+ @ApiModelProperty(value = "第几页", example = "1")
+ private int pageNum;
+
+ @NotNull
+ @ApiModelProperty(value = "每页数量", example = "10")
+ private int pageSize;
+
+ @NotNull
+ @ApiModelProperty(value = "会员ID", example = "12543")
+ private Long memberId;
+
+ @NotNull
+ @ApiModelProperty(value = "类型 1:当前跟单2:历史跟单", example = "1")
+ private int orderType;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/dto/MyFollowTraderInfoDto.java b/src/main/java/com/xcong/excoin/modules/documentary/dto/MyFollowTraderInfoDto.java
new file mode 100644
index 0000000..916b3f9
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/documentary/dto/MyFollowTraderInfoDto.java
@@ -0,0 +1,22 @@
+package com.xcong.excoin.modules.documentary.dto;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "MyFollowTraderInfoDto", description = "参数接受类")
+public class MyFollowTraderInfoDto {
+ @NotNull
+ @Min(1)
+ @ApiModelProperty(value = "第几页", example = "1")
+ private int pageNum;
+
+ @NotNull
+ @ApiModelProperty(value = "每页数量", example = "10")
+ private int pageSize;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/service/DocumentaryService.java b/src/main/java/com/xcong/excoin/modules/documentary/service/DocumentaryService.java
index f58bdc7..72b253a 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/service/DocumentaryService.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/service/DocumentaryService.java
@@ -7,6 +7,8 @@
import com.xcong.excoin.modules.coin.parameter.dto.RecordsPageDto;
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.entity.FollowTraderProfitInfoEntity;
public interface DocumentaryService extends IService<FollowTraderProfitInfoEntity> {
@@ -19,4 +21,10 @@
public Result getFollowRecords(@Valid FollowRecordsDto followRecordsDto);
+ public Result getFollowInfo();
+
+ public Result getMyFollowOrderRecords(@Valid MyFollowOrderDto myFollowOrderDto);
+
+ public Result getMyFollowTraderInfo(@Valid MyFollowTraderInfoDto myFollowTraderInfoDto);
+
}
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 f2c4ef9..e5ee7d0 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,6 +1,10 @@
package com.xcong.excoin.modules.documentary.service.impl;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import javax.annotation.Resource;
import javax.validation.Valid;
@@ -14,23 +18,37 @@
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.FollowFollowerProfitDao;
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.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.entity.FollowFollowerProfitEntity;
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.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.member.dao.MemberDao;
import com.xcong.excoin.modules.member.entity.MemberEntity;
+import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
+import com.xcong.excoin.utils.CacheSettingUtils;
+import com.xcong.excoin.utils.CoinTypeConvert;
+import com.xcong.excoin.utils.RedisUtils;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@@ -49,6 +67,12 @@
private FollowFollowerProfitDao followFollowerProfitDao;
@Resource
private OrderCoinsDao orderCoinsDao;
+ @Resource
+ private RedisUtils redisUtils;
+ @Resource
+ private CacheSettingUtils cacheSettingUtils;
+ @Resource
+ private ContractHoldOrderDao contractHoldOrderDao;
@Override
public Result getMemberIsTradeInfo() {
@@ -106,8 +130,259 @@
Page<FollowRecordsVo> page = new Page<>(followRecordsDto.getPageNum(), followRecordsDto.getPageSize());
IPage<FollowRecordsVo> historyOrderRecordsVoList = followFollowerProfitDao.selectFollowRecords(page, followRecordsDto.getTradeMemberId());
+
+ List<FollowRecordsVo> records = historyOrderRecordsVoList.getRecords();
+ if(CollUtil.isNotEmpty(records)) {
+ for(FollowRecordsVo followRecordsVo : records) {
+ Long memberId =followRecordsVo.getMemberId();
+ MemberEntity member = memberDao.selectById(memberId);
+ String email = member.getEmail();
+ String phone = member.getPhone();
+ if(StrUtil.isNotEmpty(email)) {
+ followRecordsVo.setAccount(email);
+ }else {
+ followRecordsVo.setAccount(phone);
+ }
+ }
+ }
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);
+
+ //当前跟单
+ List<ContractHoldOrderEntity> contractHoldOrderEntitys = followFollowerProfitDao.getFollowOrderNowRecords(memberId);
+ if(CollUtil.isNotEmpty(contractHoldOrderEntitys)) {
+ for(ContractHoldOrderEntity contractHoldOrderEntity : contractHoldOrderEntitys) {
+ // 获取最新价
+ BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(contractHoldOrderEntity.getSymbol())));
+ 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()));
+ }
+ }
+ totalProfits = totalProfits.add(rewardRatio);
+ }
+ }
+ }
+ }
+ followInfoVo.setTotalPrincipal(totalPrincipals.setScale(4, BigDecimal.ROUND_DOWN));
+ followInfoVo.setTotalProfit(totalProfits.setScale(4, BigDecimal.ROUND_DOWN));
+
+ return Result.ok(followInfoVo);
+ }
+
+ @Override
+ public Result getMyFollowOrderRecords(@Valid MyFollowOrderDto myFollowOrderDto) {
+ //获取用户ID
+ Long memberId = LoginUserUtils.getAppLoginUser().getId();
+ MemberEntity member = memberDao.selectById(memberId);
+
+ int type = myFollowOrderDto.getOrderType();
+ Page<MyFollowOrderVo> result = new Page<>();
+ List<MyFollowOrderVo> myFollowOrderVos = result.getRecords();
+ //历史跟单
+ if(type == 2) {
+ 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();
+ 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(4, 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(4, BigDecimal.ROUND_DOWN);
+ myFollowOrderVo.setBondAmount(bondAmount);
+ BigDecimal openingPrice = contractOrderEntity.getOpeningPrice().setScale(4, BigDecimal.ROUND_DOWN);
+ myFollowOrderVo.setOpeningPrice(openingPrice);
+ BigDecimal closingPrice = contractOrderEntity.getClosingPrice().setScale(4, 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);
+ }
+ }
+ }else {
+ //当前跟单
+ Page<ContractHoldOrderEntity> page = new Page<>(myFollowOrderDto.getPageNum(), myFollowOrderDto.getPageSize());
+ IPage<ContractHoldOrderEntity> contractHoldOrderEntitys = followFollowerProfitDao.getMyFollowOrderNowRecords(page, myFollowOrderDto.getMemberId());
+
+ List<ContractHoldOrderEntity> records = contractHoldOrderEntitys.getRecords();
+ if(CollUtil.isNotEmpty(records)) {
+ for(ContractHoldOrderEntity contractHoldOrderEntity : records) {
+ MyFollowOrderVo myFollowOrderVo = new MyFollowOrderVo();
+ 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(4, BigDecimal.ROUND_DOWN);
+ myFollowOrderVo.setBondAmount(bondAmount);
+ BigDecimal openingPrice = contractHoldOrderEntity.getOpeningPrice().setScale(4, 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())));
+ 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(4, 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();
+ MemberEntity member = memberDao.selectById(memberId);
+ 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)) {
+ Page<MyFollowTraderInfoVo> result = new Page<>();
+ List<MyFollowTraderInfoVo> myFollowOrderVos = result.getRecords();
+
+ 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 = BigDecimal.ZERO;
+ Map<String, Object> columnMap = new HashMap<>();
+ columnMap.put("member_id", memberId);
+ contractHoldOrderDao.selectByMap(columnMap );
+ List<ContractHoldOrderEntity> contractHoldOrderEntitys = contractHoldOrderDao.selectByMap(columnMap );
+ if(CollUtil.isNotEmpty(contractHoldOrderEntitys)) {
+ for(ContractHoldOrderEntity contractHoldOrderEntity : contractHoldOrderEntitys) {
+ // 获取最新价
+ BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(contractHoldOrderEntity.getSymbol())));
+ 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()));
+ }
+ }
+ totalProfit = totalProfit.add(rewardRatio);
+ }
+ myFollowTraderInfoVo.setTotalProfit(totalProfit.setScale(4, BigDecimal.ROUND_DOWN));
+ }
+ myFollowOrderVos.add(myFollowTraderInfoVo);
+ }
+ }
+ return null;
+ }
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowInfoVo.java b/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowInfoVo.java
new file mode 100644
index 0000000..b17fcea
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowInfoVo.java
@@ -0,0 +1,39 @@
+package com.xcong.excoin.modules.documentary.vo;
+
+import java.math.BigDecimal;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "FollowInfoVo", description = "我的跟单--首页")
+public class FollowInfoVo {
+
+ /**
+ * 跟随者ID
+ */
+ @ApiModelProperty(value = "跟随者ID")
+ private Long memberId;
+ /**
+ * 头像
+ */
+ @ApiModelProperty("头像")
+ private String avatar;
+ /**
+ * 名称
+ */
+ @ApiModelProperty("名称")
+ private String nickname;
+ /**
+ * 累计跟随本金
+ */
+ @ApiModelProperty(value = "累计跟随本金")
+ private BigDecimal totalPrincipal;
+ /**
+ * 累计收益
+ */
+ @ApiModelProperty(value = "累计收益")
+ private BigDecimal totalProfit;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowRecordsVo.java b/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowRecordsVo.java
index de61253..87e269e 100644
--- a/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowRecordsVo.java
+++ b/src/main/java/com/xcong/excoin/modules/documentary/vo/FollowRecordsVo.java
@@ -28,16 +28,9 @@
*/
@ApiModelProperty(value = "跟随者ID")
private Long memberId;
- /**
- * 交易员ID
- */
- @ApiModelProperty(value = "交易员ID")
- private Long tradeId;
- /**
- * 交易员会员ID
- */
- @ApiModelProperty(value = "交易员会员ID")
- private Long tradeMemberId;
+
+ @ApiModelProperty(value = "跟随者账号")
+ private String account;
/**
* 累计跟随本金
*/
@@ -48,9 +41,5 @@
*/
@ApiModelProperty(value = "累计收益")
private BigDecimal totalProfit;
- /**
- * 是否跟随 1-是 2-否
- */
- @ApiModelProperty(value = "是否跟随 1-是 2-否")
- private Integer isFollow;
+
}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/vo/MyFollowOrderVo.java b/src/main/java/com/xcong/excoin/modules/documentary/vo/MyFollowOrderVo.java
new file mode 100644
index 0000000..782a43a
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/documentary/vo/MyFollowOrderVo.java
@@ -0,0 +1,54 @@
+package com.xcong.excoin.modules.documentary.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "MyFollowOrderVo", description = "返回类")
+public class MyFollowOrderVo {
+
+ @ApiModelProperty("币种")
+ private String symbol;
+
+ @ApiModelProperty("订单类型 -1撤单,1开多,2开空,3平多,4平空")
+ private int orderType;
+
+ @ApiModelProperty("杠杆")
+ private int leverRatio;
+
+ @ApiModelProperty("开仓价")
+ private BigDecimal openingPrice;
+
+ @ApiModelProperty("平仓价")
+ private BigDecimal closingPrice;
+
+ @ApiModelProperty("盈亏金额")
+ private BigDecimal rewardAmount;
+
+ @ApiModelProperty("张数")
+ private BigDecimal rewardRatio;
+
+ @ApiModelProperty("盈亏比例")
+ private int symbolCnt;
+
+ @ApiModelProperty("保证金")
+ private BigDecimal bondAmount;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @ApiModelProperty("开仓时间")
+ private Date openingTime;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @ApiModelProperty("平仓时间")
+ private Date closingTime;
+
+ @ApiModelProperty("订单编号")
+ private String orderNo;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/documentary/vo/MyFollowTraderInfoVo.java b/src/main/java/com/xcong/excoin/modules/documentary/vo/MyFollowTraderInfoVo.java
new file mode 100644
index 0000000..6f0e7da
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/documentary/vo/MyFollowTraderInfoVo.java
@@ -0,0 +1,46 @@
+package com.xcong.excoin.modules.documentary.vo;
+
+import java.math.BigDecimal;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "MyFollowTraderInfoVo", description = "返回类")
+public class MyFollowTraderInfoVo {
+
+ /**
+ * 跟随者ID
+ */
+ @ApiModelProperty(value = "跟随者ID")
+ private Long memberId;
+
+ @ApiModelProperty(value = "交易员ID")
+ private Long tradeId;
+
+ @ApiModelProperty(value = "交易员会员ID")
+ private Long tradeMemberId;
+
+ /**
+ * 头像
+ */
+ @ApiModelProperty("头像")
+ private String avatar;
+ /**
+ * 名称
+ */
+ @ApiModelProperty("名称")
+ private String nickname;
+ /**
+ * 累计跟随本金
+ */
+ @ApiModelProperty(value = "累计跟随本金")
+ private BigDecimal totalPrincipal;
+ /**
+ * 累计收益
+ */
+ @ApiModelProperty(value = "累计收益")
+ private BigDecimal totalProfit;
+
+}
diff --git a/src/main/resources/mapper/documentary/FollowFollowerProfitDao.xml b/src/main/resources/mapper/documentary/FollowFollowerProfitDao.xml
index cc8e13f..5465376 100644
--- a/src/main/resources/mapper/documentary/FollowFollowerProfitDao.xml
+++ b/src/main/resources/mapper/documentary/FollowFollowerProfitDao.xml
@@ -15,7 +15,53 @@
follow_follower_profit
WHERE
trade_member_id = #{tradeMemberId}
+ and is_follow = 1
order by create_time desc
</select>
+
+ <select id="selectFollowFollowerProfitEntitys" resultType="com.xcong.excoin.modules.documentary.entity.FollowFollowerProfitEntity">
+ SELECT
+ *
+ FROM
+ follow_follower_profit
+ WHERE
+ member_id = #{memberId}
+ and is_follow = 1
+ order by create_time desc
+ </select>
+
+ <select id="getMyFollowOrderHistoryRecords" resultType="com.xcong.excoin.modules.contract.entity.ContractOrderEntity">
+ SELECT
+ *
+ FROM
+ contract_order
+ WHERE
+ member_id = #{memberId}
+ and contract_type = 2
+ and order_type in (3,4)
+ and closing_type not in (4,5)
+ order by opening_time desc
+ </select>
+ <select id="getMyFollowOrderNowRecords" resultType="com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity">
+ SELECT
+ *
+ FROM
+ contract_hold_order
+ WHERE
+ member_id = #{memberId}
+ and contract_type = 2
+ order by opening_time desc
+ </select>
+
+ <select id="getFollowOrderNowRecords" resultType="com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity">
+ SELECT
+ *
+ FROM
+ contract_hold_order
+ WHERE
+ member_id = #{memberId}
+ and contract_type = 2
+ order by opening_time desc
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1