From c238788a1c463364ac35666501570a74fc2d79bc Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 27 Aug 2020 17:04:50 +0800
Subject: [PATCH] modify
---
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java | 41 ++++++++++++++++++++++++++++++-----------
1 files changed, 30 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
index 53ce2f5..3ab3c39 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
@@ -1,5 +1,6 @@
package com.xcong.excoin.modules.contract.service.impl;
+import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xcong.excoin.common.LoginUserUtils;
@@ -179,7 +180,7 @@
MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), CoinTypeConvert.convertContractTypeToCoin(submitEntrustDto.getSymbol()));
- ContractHoldOrderEntity holdOrderEntity = contractHoldOrderDao.selectWholeHoldOrderByOrderType(memberEntity.getId(), submitEntrustDto.getEntrustType());
+ ContractHoldOrderEntity holdOrderEntity = contractHoldOrderDao.selectWholeHoldOrderByOrderType(memberEntity.getId(), submitEntrustDto.getEntrustType(), submitEntrustDto.getSymbol());
BigDecimal bondAmount;
BigDecimal openFeePrice;
@@ -254,12 +255,15 @@
MemberWalletContractEntity walletContractEntity;
if (ContractEntrustOrderEntity.POSITION_TYPE_ADD == entrustOrderEntity.getPositionType()) {
walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), MemberWalletCoinEnum.WALLETCOINCODE.getValue());
+
+ BigDecimal total = entrustOrderEntity.getEntrustAmount();
+ memberWalletContractDao.increaseWalletContractBalanceById(total, null, entrustOrderEntity.getBondAmount().negate(), walletContractEntity.getId());
+
+ // 插入财务流水
+ LogRecordUtils.insertMemberAccountFlow(memberEntity.getId(), total, walletContractEntity.getAvailableBalance().add(total), entrustOrderEntity.getSymbol(), "撤销委托单", "撤销委托单");
} else {
walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), CoinTypeConvert.convertContractTypeToCoin(entrustOrderEntity.getSymbol()));
}
-
- BigDecimal total = entrustOrderEntity.getEntrustAmount();
- memberWalletContractDao.increaseWalletContractBalanceById(total, null, entrustOrderEntity.getBondAmount().negate(), walletContractEntity.getId());
ContractOrderEntity orderEntity = ContractEntrustOrderEntityMapper.INSTANCE.entrustOrderToOrder(entrustOrderEntity);
orderEntity.setTradeType(ContractOrderEntity.TRADE_TYPE_MARK_PRICE);
@@ -268,8 +272,6 @@
contractEntrustOrderDao.deleteById(entrustOrderEntity.getId());
- // 插入财务流水
- LogRecordUtils.insertMemberAccountFlow(memberEntity.getId(), total, walletContractEntity.getAvailableBalance().add(total), entrustOrderEntity.getSymbol(), "撤销委托单", "撤销委托单");
if (i > 0) {
return Result.ok(MessageSourceUtils.getString("cancellation_success"));
}
@@ -293,8 +295,22 @@
return Result.fail("可平张数不足");
}
+ List<ContractEntrustOrderEntity> entrustOrders = contractEntrustOrderDao.selectEntrustOrderByOrderNo(holdOrderEntity.getOrderNo());
+ if (CollUtil.isNotEmpty(entrustOrders)) {
+ int entrustCnt = 0;
+ for (ContractEntrustOrderEntity entrustOrder : entrustOrders) {
+ entrustCnt += entrustOrder.getSymbolCnt();
+ }
+
+
+ if (submitCloseEntrustDto.getSymbolCnt() > holdOrderEntity.getSymbolCntSale() - entrustCnt) {
+ return Result.fail("当前存在多个委托,无法提交该数量委托");
+ }
+ }
+
+
// 获取最新价
- BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(submitCloseEntrustDto.getSymbol())));
+ BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol())));
int closeType;
if (holdOrderEntity.getOpeningType() == ContractHoldOrderEntity.OPENING_TYPE_MORE) {
@@ -322,31 +338,34 @@
MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(member.getId(), CoinTypeConvert.convertContractTypeToCoin(holdOrderEntity.getSymbol()));
- BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(submitCloseEntrustDto.getSymbol());
+ BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(holdOrderEntity.getSymbol());
BigDecimal bondAmount = CalculateUtil.getBondAmount(holdOrderEntity.getOpeningPrice(), lotNumber, submitCloseEntrustDto.getSymbolCnt(), holdOrderEntity.getLeverRatio());
ContractEntrustOrderEntity entrustOrder = new ContractEntrustOrderEntity();
entrustOrder.setOrderNo(holdOrderEntity.getOrderNo());
entrustOrder.setEntrustAmount(bondAmount);
+ entrustOrder.setBondAmount(bondAmount);
entrustOrder.setPositionType(ContractEntrustOrderEntity.POSITION_TYPE_ALL);
entrustOrder.setMemberId(member.getId());
entrustOrder.setEntrustPrice(submitCloseEntrustDto.getEntrustPrice());
entrustOrder.setLeverRatio(holdOrderEntity.getLeverRatio());
entrustOrder.setSymbolSku(holdOrderEntity.getSymbolSku());
entrustOrder.setEntrustType(closeType);
+ entrustOrder.setSymbolCnt(submitCloseEntrustDto.getSymbolCnt());
+ entrustOrder.setSymbol(holdOrderEntity.getSymbol());
int i = contractEntrustOrderDao.insert(entrustOrder);
- memberWalletContractDao.increaseWalletContractBalanceById(null, null, bondAmount, walletContract.getId());
+// memberWalletContractDao.increaseWalletContractBalanceById(null, null, bondAmount, walletContract.getId());
if (i > 0) {
// 发送委托消息
if (holdOrderEntity.getOpeningType() == ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_MORE) {
- OrderModel model = new OrderModel(holdOrderEntity.getId(), RabbitPriceTypeEnum.ENTRUST_OPEN_MORE.getValue(), submitCloseEntrustDto.getEntrustPrice().setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol());
+ OrderModel model = new OrderModel(entrustOrder.getId(), RabbitPriceTypeEnum.ENTRUST_CLOSE_MORE.getValue(), submitCloseEntrustDto.getEntrustPrice().setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol());
producer.sendPriceOperate(JSONObject.toJSONString(model));
} else {
- OrderModel model = new OrderModel(holdOrderEntity.getId(), RabbitPriceTypeEnum.ENTRUST_OPEN_LESS.getValue(), submitCloseEntrustDto.getEntrustPrice().setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol());
+ OrderModel model = new OrderModel(entrustOrder.getId(), RabbitPriceTypeEnum.ENTRUST_CLOSE_LESS.getValue(), submitCloseEntrustDto.getEntrustPrice().setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol());
producer.sendPriceOperate(JSONObject.toJSONString(model));
}
}
--
Gitblit v1.9.1