From 3da86330472b0170385427c4ff63204f8d5a2fff Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 22 Mar 2021 15:53:57 +0800
Subject: [PATCH] 20210319 平仓加载中
---
src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 101 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java b/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java
index 1be5517..e611d48 100644
--- a/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/trademanage/service/impl/TradeManageServiceImpl.java
@@ -2,15 +2,23 @@
import java.math.BigDecimal;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.springframework.stereotype.Service;
+import javax.validation.constraints.NotNull;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.entity.FebsResponse;
import com.xcong.excoin.common.entity.QueryRequest;
import com.xcong.excoin.common.utils.CoinTypeConvert;
import com.xcong.excoin.common.utils.RedisUtils;
@@ -30,9 +38,12 @@
import com.xcong.excoin.modules.trademanage.mapper.MemberWalletAgentMapper;
import com.xcong.excoin.modules.trademanage.service.TradeManageService;
import com.xcong.excoin.modules.trademanage.vo.MemberAccountInfoVo;
+import com.xcong.excoin.modules.trademanage.vo.PositionSettingVo;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor;
@Service
@@ -48,6 +59,7 @@
private final MemberAccountMoneyChangeMapper memberAccountMoneyChangeMapper;
private final ContractOrderMapper contractHoldOrderMapper;
+
private final AgentReturnMapper agentReturnMapper;
@@ -1162,6 +1174,94 @@
}
return findMemberAccountInfoListInPage;
}
+
+ @Override
+ public IPage<PositionSettingVo> getPositionSettingList(MemberEntity memberEntity, QueryRequest request) {
+
+ Page<PositionSettingVo> page = new Page<>(request.getPageNum(), request.getPageSize());
+ IPage<PositionSettingVo> positionSettingVoIPage = contractHoldOrderMapper.getPositionSettingList(page, memberEntity);
+ if(StrUtil.isNotEmpty(memberEntity.getAccounts())) {
+ positionSettingVoIPage = contractHoldOrderMapper.getPositionSettingsList(page, memberEntity);
+ }
+ List<PositionSettingVo> records = positionSettingVoIPage.getRecords();
+ if(records != null && records.size() > 0) {
+ for(PositionSettingVo positionSettingVo : records) {
+ Long memberId = positionSettingVo.getId();
+ MemberEntity selectById = memberMapper.selectById(memberId);
+ //当前持仓总盈亏
+ Map<String, Object> columnMap = new HashMap<>();
+ columnMap.put("member_id", memberId);
+ BigDecimal sumRewardAmount = BigDecimal.ZERO;
+ List<ContractHoldOrderEntity> contractHoldOrderEntitys = contractHoldOrderEntityMapper.selectByMap(columnMap );
+ for(ContractHoldOrderEntity holdOrderEntity : contractHoldOrderEntitys) {
+ // 获取最新价
+ BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol())));
+ BigDecimal lotNumber = holdOrderEntity.getSymbolSku();
+ // 盈亏
+ BigDecimal rewardRatio = BigDecimal.ZERO;
+ // 开多
+ if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) {
+ // (最新价-开仓价)*规格*张数
+ rewardRatio = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(lotNumber).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt()));
+ // 开空
+ } else {
+ // (开仓价-最新价)*规格*张数
+ rewardRatio = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(lotNumber).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt()));
+ }
+
+ if (selectById.getIsProfit() == MemberEntity.IS_PROFIT_Y) {
+ String selectTradeSetting = memberMapper.selectTradeSetting();
+ BigDecimal profitParam=new BigDecimal(selectTradeSetting);
+ if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) {
+ rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(profitParam));
+ } else {
+ rewardRatio = rewardRatio.multiply(BigDecimal.ONE.add(profitParam));
+ }
+ }
+ sumRewardAmount = sumRewardAmount.add(rewardRatio);
+ }
+ positionSettingVo.setSumRewardAmount(sumRewardAmount);
+ }
+ //降序
+ Collections.sort(records, new Comparator<PositionSettingVo>() {//调用sort()方法,并实现Comparator接口中的compare()方法
+
+ @Override
+ public int compare(PositionSettingVo lhs, PositionSettingVo rhs) {
+ int value = Integer.valueOf(rhs.getSumRewardAmount().intValue())
+ - Integer.valueOf(lhs.getSumRewardAmount().intValue());
+ return 0;
+ }
+
+ });
+ //升序
+ //CollUtil.sortByProperty(records, "sumRewardAmount");
+ //CollUtil.sortByProperty(records, "accountType");
+ }
+ return positionSettingVoIPage;
+ }
+
+ @Override
+ @Transactional
+ public FebsResponse disagreePositionSetting(@NotNull(message = "{required}") Long id) {
+ MemberEntity memberEntity = memberMapper.selectById(id);
+ if(ObjectUtil.isEmpty(memberEntity)) {
+ return new FebsResponse().fail().message("会员信息不存在");
+ }
+ memberEntity.setPcState(MemberEntity.PCSTATE_N);
+ memberMapper.updateById(memberEntity);
+ return new FebsResponse().success();
+ }
+
+ @Override
+ public FebsResponse agreePositionSetting(@NotNull(message = "{required}") Long id) {
+ MemberEntity memberEntity = memberMapper.selectById(id);
+ if(ObjectUtil.isEmpty(memberEntity)) {
+ return new FebsResponse().fail().message("会员信息不存在");
+ }
+ memberEntity.setPcState(MemberEntity.PCSTATE_Y);
+ memberMapper.updateById(memberEntity);
+ return new FebsResponse().success();
+ }
--
Gitblit v1.9.1