From e2d0dd77df52bc725e3d5868f0e00694edbdbca6 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 01 Jun 2020 15:31:42 +0800
Subject: [PATCH] modify
---
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java | 33 ++++++++++++++++++++++-----------
src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java | 1 +
2 files changed, 23 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java
index 5f2c368..e926278 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java
@@ -23,6 +23,7 @@
@Mapping(source = "entrustPrice", target = "entrustOpeningPrice")
@Mapping(source = "createTime", target = "entrustTime")
+ @Mapping(source = "entrustAmount", target = "prePaymentAmount")
public abstract ContractOrderEntity entrustOrderToOrder(ContractEntrustOrderEntity orderEntity);
@Mapping(source = "createTime", target = "entrustTime")
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 3abc098..c705603 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
@@ -16,6 +16,7 @@
import com.xcong.excoin.modules.member.dao.MemberWalletContractDao;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity;
+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;
@@ -78,12 +79,23 @@
}
MemberWalletContractEntity walletContract = memberWalletContractDao.selectById(memberEntity.getId());
- // 委托总额
- BigDecimal entrustTotalAmount = submitEntrustDto.getEntrustPrice().multiply(BigDecimal.valueOf(submitEntrustDto.getSymbolCnt())).setScale(8, BigDecimal.ROUND_DOWN);
BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(submitEntrustDto.getSymbol());
+ PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
+
// 保证金计算 -- 建仓价X规格X手数X(1/杠杆倍率)
- BigDecimal bondAmount = entrustTotalAmount.multiply(lotNumber).multiply((BigDecimal.ONE.divide(BigDecimal.valueOf(submitEntrustDto.getLeverRatio()), 8, BigDecimal.ROUND_DOWN)));
+ BigDecimal bondAmount = submitEntrustDto.getEntrustPrice().multiply(lotNumber).multiply((BigDecimal.ONE.divide(BigDecimal.valueOf(submitEntrustDto.getLeverRatio()), 8, BigDecimal.ROUND_DOWN)));
+
+ // 开仓手续费 建仓价*规格*手数*手续费率
+ BigDecimal openFeePrice = submitEntrustDto.getEntrustPrice().multiply(lotNumber)
+ .multiply(new BigDecimal(submitEntrustDto.getSymbolCnt()))
+ .multiply(tradeSettingEntity.getFeeRatio().divide(new BigDecimal(100)))
+ .setScale(8, BigDecimal.ROUND_DOWN);
+ log.info("手续费:{}", openFeePrice);
+
+ // 预付款
+ BigDecimal entrustTotalAmount = bondAmount.add(openFeePrice).add(openFeePrice);
+ log.info("预付款:{}", entrustTotalAmount);
if (entrustTotalAmount.add(bondAmount).compareTo(walletContract.getAvailableBalance()) > -1) {
return Result.fail("可用余额不足");
@@ -93,19 +105,18 @@
ContractEntrustOrderEntity entrustOrderEntity = convert.submitEntrustDtoToEntity(submitEntrustDto);
entrustOrderEntity.setOrderNo(commonService.generateOrderNo(memberEntity.getId()));
entrustOrderEntity.setMemberId(memberEntity.getId());
- entrustOrderEntity.setBondAmount(bondAmount);
+ entrustOrderEntity.setBondAmount(bondAmount.add(openFeePrice));
entrustOrderEntity.setSymbolSku(lotNumber);
entrustOrderEntity.setEntrustAmount(entrustTotalAmount);
// 暂默认逐仓
entrustOrderEntity.setPositionType(ContractEntrustOrderEntity.POSITION_TYPE_ADD);
- int i = contractEntrustOrderDao.insert(entrustOrderEntity);
+// int i = contractEntrustOrderDao.insert(entrustOrderEntity);
- walletContract.setFrozenBalance(walletContract.getFrozenBalance().add(entrustTotalAmount.add(bondAmount)));
- walletContract.setAvailableBalance(walletContract.getAvailableBalance().subtract(entrustTotalAmount.add(bondAmount)));
-
- memberWalletContractDao.updateById(walletContract);
- if (i > 0) {
+ walletContract.setFrozenBalance(walletContract.getFrozenBalance().add(entrustTotalAmount));
+ walletContract.setAvailableBalance(walletContract.getAvailableBalance().subtract(entrustTotalAmount));
+// memberWalletContractDao.updateById(walletContract);
+ if (1 > 0) {
return Result.ok("委托成功");
} else {
return Result.fail("委托失败");
@@ -141,7 +152,7 @@
MemberWalletContractEntity walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), MemberWalletCoinEnum.WALLETCOINCODE.getValue());
- BigDecimal total = entrustOrderEntity.getEntrustAmount().add(entrustOrderEntity.getBondAmount());
+ BigDecimal total = entrustOrderEntity.getEntrustAmount();
walletContractEntity.setAvailableBalance(walletContractEntity.getAvailableBalance().add(total));
walletContractEntity.setFrozenBalance(walletContractEntity.getFrozenBalance().subtract(total));
memberWalletContractDao.updateById(walletContractEntity);
--
Gitblit v1.9.1