From 254bd271cf90e225ad6882fb89f238693279c250 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 05 Mar 2021 10:59:10 +0800
Subject: [PATCH] modify
---
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java | 62 +++++++++++++++++++++++++------
1 files changed, 50 insertions(+), 12 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
index a57f68d..fd1095a 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
@@ -1,6 +1,8 @@
package com.xcong.excoin.modules.contract.service.impl;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+
import com.alibaba.druid.sql.visitor.functions.If;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -37,11 +39,13 @@
import com.xcong.excoin.modules.member.entity.*;
import com.xcong.excoin.modules.platform.dao.TradeSettingDao;
import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
+import com.xcong.excoin.rabbit.producer.FollowProducer;
import com.xcong.excoin.rabbit.producer.OrderProducer;
import com.xcong.excoin.utils.*;
import com.xcong.excoin.rabbit.pricequeue.OrderModel;
import jnr.a64asm.Mem;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import sun.rmi.runtime.Log;
@@ -100,6 +104,9 @@
private FollowTraderInfoDao followTraderInfoDao;
@Resource
private FollowFollowerOrderRelationDao followFollowerOrderRelationDao;
+
+ @Autowired
+ private FollowProducer followProducer;
@Transactional(rollbackFor = Exception.class)
@Override
@@ -233,7 +240,7 @@
holdOrderEntity.setOpeningPrice(openingPrice);
holdOrderEntity.setOpeningType(submitOrderDto.getOrderType());
holdOrderEntity.setMarkPrice(newPrice);
- holdOrderEntity.setIsCanClosing(ContractHoldOrderEntity.ORDER_CAN_CLOSING_N);
+ holdOrderEntity.setIsCanClosing(ContractHoldOrderEntity.ORDER_CAN_CLOSING_Y);
holdOrderEntity.setPrePaymentAmount(prePaymentAmount);
holdOrderEntity.setBondAmount(bondAmount.add(openFeePrice));
holdOrderEntity.setOperateNo(1);
@@ -320,7 +327,7 @@
FollowTraderInfoEntity tradeInfo = null;
if (MemberEntity.IS_TRADER_Y.equals(memberEntity.getIsTrader())) {
tradeInfo = followTraderInfoDao.selectTraderInfoByMemberId(memberEntity.getId());
- if (tradeInfo.getIsOpen().equals(FollowTraderInfoEntity.ISOPEN_Y)) {
+ if (FollowTraderInfoEntity.ISOPEN_Y.equals(tradeInfo.getIsOpen())) {
isOpenFollow = true;
}
}
@@ -380,7 +387,8 @@
relationEntity.setTradeOrderNo(holdOrderEntity.getOrderNo());
followFollowerOrderRelationDao.insert(relationEntity);
- ThreadPoolUtils.sendFollowOrderTask(holdOrderEntity.getId());
+ followProducer.sendAddFollowOrder(holdOrderEntity.getId());
+// ThreadPoolUtils.sendFollowOrderTask(holdOrderEntity.getId());
}
// 提交成功
return Result.ok(MessageSourceUtils.getString("member_service_0024"));
@@ -525,7 +533,7 @@
BigDecimal totalEntrustAmount = BigDecimal.ZERO;
if (CollUtil.isNotEmpty(entrustOrder)) {
for (ContractEntrustOrderEntity contractEntrustOrderEntity : entrustOrder) {
- totalEntrustAmount.add(contractEntrustOrderEntity.getEntrustAmount());
+ totalEntrustAmount = totalEntrustAmount.add(contractEntrustOrderEntity.getEntrustAmount());
}
}
BigDecimal riskRatio = totalHoldBond.divide(walletContractEntity.getTotalBalance().add(totalProfitOrLoss).subtract(totalEntrustAmount), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100));
@@ -824,6 +832,8 @@
// 占用保证金 -- 即持仓单中的保证金之和
BigDecimal beUsedBondAmount = BigDecimal.ZERO;
+ BigDecimal moreBondAmount = BigDecimal.ZERO;
+ BigDecimal lessBondAmount = BigDecimal.ZERO;
// 总盈利
BigDecimal totalProfitOrLess = BigDecimal.ZERO;
if (CollUtil.isNotEmpty(holdOrderEntities)) {
@@ -837,9 +847,11 @@
BigDecimal profitOrLess = BigDecimal.ZERO;
// 开多
if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) {
+ moreBondAmount = moreBondAmount.add(holdOrderEntity.getBondAmount());
profitOrLess = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())).multiply(lotNumber);
// 开空
} else {
+ lessBondAmount = lessBondAmount.add(holdOrderEntity.getBondAmount());
profitOrLess = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())).multiply(lotNumber);
}
@@ -863,10 +875,13 @@
if (equity.compareTo(BigDecimal.ZERO) <= 0) {
equity = BigDecimal.ZERO;
}
-
- BigDecimal available = walletContractEntity.getAvailableBalance().add(totalProfitOrLess);
- if (available.compareTo(BigDecimal.ZERO) <= 0) {
- available = BigDecimal.ZERO;
+
+ BigDecimal available = walletContractEntity.getAvailableBalance();
+ if (totalProfitOrLess.compareTo(BigDecimal.ZERO) <= 0) {
+ available = available.add(totalProfitOrLess);
+ if (available.compareTo(BigDecimal.ZERO) <= 0) {
+ available = BigDecimal.ZERO;
+ }
}
// 获取当日k线的开盘价
@@ -883,6 +898,8 @@
contractMoneyInfoVo.setUpOrDown(upOrDown);
contractMoneyInfoVo.setSymbolSku(cacheSettingUtils.getSymbolSku(symbol));
contractMoneyInfoVo.setLeverRate(rateEntity.getLevelRateUp());
+ contractMoneyInfoVo.setMoreBondAmount(moreBondAmount);
+ contractMoneyInfoVo.setLessBondAmount(lessBondAmount);
return Result.ok(contractMoneyInfoVo);
}
@@ -1013,8 +1030,27 @@
List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectHoldOrderListByMemberId(member.getId());
List<ContractEntrustOrderEntity> entrustList = contractEntrustOrderDao.selectEntrustOrderListByMemberId(member.getId());
- if (CollUtil.isNotEmpty(list) || CollUtil.isNotEmpty(entrustList)) {
- return Result.fail("存在持仓/委托, 无法更改");
+// if (CollUtil.isNotEmpty(list) || CollUtil.isNotEmpty(entrustList)) {
+// return Result.fail("存在持仓/委托, 无法更改");
+// }
+
+ if(CollUtil.isNotEmpty(list)) {
+ for(ContractHoldOrderEntity contractHoldOrderEntity : list) {
+ String symbol = contractHoldOrderEntity.getSymbol();
+ if(StrUtil.isEmpty(symbol)) {
+ return Result.fail("存在持仓/委托, 无法更改");
+ }
+ return Result.fail("币种"+symbol+"存在持仓/委托, 无法更改");
+ }
+ }
+ if(CollUtil.isNotEmpty(entrustList)) {
+ for(ContractEntrustOrderEntity contractEntrustOrderEntity : entrustList) {
+ String symbol = contractEntrustOrderEntity.getSymbol();
+ if(StrUtil.isEmpty(symbol)) {
+ return Result.fail("存在持仓/委托, 无法更改");
+ }
+ return Result.fail("币种"+symbol+"存在持仓/委托, 无法更改");
+ }
}
/**
@@ -1066,8 +1102,10 @@
holdOrderEntity.setOperateNo(holdOrderEntity.getOperateNo() + 1);
contractHoldOrderDao.updateById(holdOrderEntity);
- // 发送爆仓消息
- sendOrderBombMsg(holdOrderEntity.getId(), holdOrderEntity.getOpeningType(), newForcePrice, holdOrderEntity.getSymbol(), holdOrderEntity.getOperateNo(), holdOrderEntity.getMemberId());
+ if (ContractEntrustOrderEntity.POSITION_TYPE_ADD == holdOrderEntity.getPositionType()) {
+ // 发送爆仓消息
+ sendOrderBombMsg(holdOrderEntity.getId(), holdOrderEntity.getOpeningType(), newForcePrice, holdOrderEntity.getSymbol(), holdOrderEntity.getOperateNo(), holdOrderEntity.getMemberId());
+ }
}
}
}
--
Gitblit v1.9.1