From befbf57e4112d07003bff18102f556a1e5a154de Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 22 Apr 2026 10:53:37 +0800
Subject: [PATCH] 1
---
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java | 133 +++++++++++++++++++++-----------------------
1 files changed, 63 insertions(+), 70 deletions(-)
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java
index 4829ec0..086bcef 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractApplyOrderService.java
@@ -14,7 +14,6 @@
import com.yami.trading.bean.data.domain.Realtime;
import com.yami.trading.bean.item.domain.Item;
import com.yami.trading.bean.item.dto.ItemLeverageDTO;
-import com.yami.trading.bean.model.FollowWallet;
import com.yami.trading.bean.model.User;
import com.yami.trading.bean.model.Wallet;
import com.yami.trading.bean.syspara.domain.Syspara;
@@ -26,7 +25,6 @@
import com.yami.trading.common.util.RandomUtil;
import com.yami.trading.common.util.StringUtils;
import com.yami.trading.dao.contract.ContractApplyOrderMapper;
-import com.yami.trading.service.FollowWalletService;
import com.yami.trading.service.MoneyLogService;
import com.yami.trading.service.RechargeBonusService;
import com.yami.trading.service.WalletService;
@@ -81,8 +79,6 @@
private MoneyLogService moneyLogService;
@Autowired
private WalletService walletService;
- @Autowired
- private FollowWalletService followWalletService;
@Autowired
private ContractOrderService contractOrderService;
@Autowired
@@ -172,6 +168,7 @@
map.put("amount", order.getVolume().multiply(order.getUnitAmount()));
map.put("amount_open", order.getVolumeOpen().multiply(order.getUnitAmount()));
map.put("fee", order.getFee());
+ map.put("funding_fee", order.getFundingFee());
map.put("deposit", order.getDeposit());
data.add(map);
}
@@ -233,46 +230,60 @@
log.info("{} --- order --- {} --- {}", order.getSymbol(), item.getUuid(), levers.size());
checkLever(order, levers);
- BigDecimal sourceLeverRate = order.getLeverRate();
- sourceLeverRate = sourceLeverRate == null ? BigDecimal.ZERO : sourceLeverRate;
+// BigDecimal sourceLeverRate = order.getLeverRate();
+// sourceLeverRate = sourceLeverRate == null ? BigDecimal.ZERO : sourceLeverRate;
- List<ContractOrder> contractOrderSubmitted = contractOrderService.findSubmitted(order.getPartyId(),
- order.getSymbol(), order.getDirection());
- for (int i = 0; i < contractOrderSubmitted.size(); i++) {
- BigDecimal targetLeverRate = contractOrderSubmitted.get(i).getLeverRate();
- targetLeverRate = targetLeverRate == null ? BigDecimal.ZERO : targetLeverRate;
- if (sourceLeverRate.compareTo(targetLeverRate) != 0) {
- throw new YamiShopBindException("存在不同杠杆的持仓单");
- }
- }
-
- List<ContractApplyOrder> applyOrderSubmittedList = this.findSubmitted(order.getPartyId(),
- order.getSymbol(), "open", order.getDirection());
- for (int i = 0; i < applyOrderSubmittedList.size(); i++) {
- BigDecimal targetLeverRate = applyOrderSubmittedList.get(i).getLeverRate();
- targetLeverRate = targetLeverRate == null ? BigDecimal.ZERO : targetLeverRate;
- if (sourceLeverRate.compareTo(targetLeverRate) != 0) {
- throw new YamiShopBindException("存在不同杠杆的持仓单");
- }
- }
-
+// List<ContractOrder> contractOrderSubmitted = contractOrderService.findSubmitted(order.getPartyId(),
+// order.getSymbol(), order.getDirection());
+// for (int i = 0; i < contractOrderSubmitted.size(); i++) {
+// BigDecimal targetLeverRate = contractOrderSubmitted.get(i).getLeverRate();
+// targetLeverRate = targetLeverRate == null ? BigDecimal.ZERO : targetLeverRate;
+// if (sourceLeverRate.compareTo(targetLeverRate) != 0) {
+// throw new YamiShopBindException("存在不同杠杆的持仓单");
+// }
+// }
+//
+// List<ContractApplyOrder> applyOrderSubmittedList = this.findSubmitted(order.getPartyId(),
+// order.getSymbol(), "open", order.getDirection());
+// for (int i = 0; i < applyOrderSubmittedList.size(); i++) {
+// BigDecimal targetLeverRate = applyOrderSubmittedList.get(i).getLeverRate();
+// targetLeverRate = targetLeverRate == null ? BigDecimal.ZERO : targetLeverRate;
+// if (sourceLeverRate.compareTo(targetLeverRate) != 0) {
+// throw new YamiShopBindException("存在不同杠杆的持仓单");
+// }
+// }
+ //下单数量
BigDecimal volume = order.getVolume();
+ //当前价格
+ List<Realtime> list = dataService.realtime(order.getSymbol());
+ double close = 0;
+
+ /**
+ * 限价单
+ */
+ if ("limit".equals(order.getOrderPriceType())) {
+ close = order.getPrice().doubleValue();
+ }else{
+ close = list.get(0).getClose();
+ }
+
if(StringUtils.isEmptyString(order.getOrderNo())) {
order.setOrderNo(DateUtil.getToday("yyMMddHHmmss") + RandomUtil.getRandomNum(8));
}
order.setUnitAmount(BigDecimal.valueOf(item.getUnitAmount()));
- order.setFee(BigDecimal.valueOf(item.getUnitFee()).multiply(order.getVolume()));
- order.setDeposit(BigDecimal.valueOf(item.getUnitAmount()).multiply(order.getVolume()));
+
+ order.setDeposit(BigDecimal.valueOf(close).multiply(order.getVolume()).divide(order.getLeverRate()));
+ order.setFee(BigDecimal.valueOf(item.getUnitFee()).multiply(BigDecimal.valueOf(close).multiply(order.getVolume())));
BigDecimal fee = order.getFee();
- if (order.getLeverRate() != null) {
- // 加上杠杆
- order.setVolume(order.getVolume().multiply(order.getLeverRate()));
- Syspara syspara = sysparaService.find("perpetual_contracts");
- if (ObjectUtils.isEmpty(syspara)||"0".equals(syspara.getSvalue())) {
-// order.setFee(fee.multiply(order.getLeverRate()));
- }
- }
+// if (order.getLeverRate() != null) {
+// // 加上杠杆
+// order.setVolume(order.getVolume().multiply(order.getLeverRate()));
+// Syspara syspara = sysparaService.find("perpetual_contracts");
+// if (ObjectUtils.isEmpty(syspara)||"0".equals(syspara.getSvalue())) {
+//// order.setFee(fee.multiply(order.getLeverRate()));
+// }
+// }
Syspara syspara = sysparaService.find("u_standard_contract");
BigDecimal deposit = order.getDeposit();
@@ -288,43 +299,25 @@
order.setVolumeOpen(order.getVolume());
- if(ContractApplyOrder.ORDER_FOLLOW == order.getFollow()) { // 跟单订单
- FollowWallet followWallet = followWalletService.findByUserId(order.getPartyId());
- BigDecimal amountBefore = followWallet.getMoney();
+ Wallet wallet = this.walletService.findByUserId(order.getPartyId());
+ BigDecimal amountBefore = wallet.getMoney();
// fee = exchangeRateService.getUsdtByType(order.getFee(), type);
// deposit = exchangeRateService.getUsdtByType(deposit, type);
- BigDecimal totalAmountCost = deposit.add(order.getFee());
- if (amountBefore.compareTo(totalAmountCost) < 0) {
- throw new YamiShopBindException("余额不足");
- }
-
- followWalletService.updateMoney(order.getSymbol(), order.getPartyId(), BigDecimal.ZERO.subtract(deposit), BigDecimal.ZERO
- , Constants.MONEYLOG_CATEGORY_CONTRACT, Constants.WALLET_USDT, Constants.MONEYLOG_CONTENT_CONTRACT_OPEN, "委托单,订单号[" + order.getOrderNo() + "]"
- );
- followWalletService.updateMoney(order.getSymbol(), order.getPartyId(), BigDecimal.ZERO.subtract(fee), BigDecimal.ZERO
- , Constants.MONEYLOG_CATEGORY_CONTRACT, Constants.WALLET_USDT, Constants.MONEYLOG_CONTENT_FEE, "委托单手续费,订单号[" + order.getOrderNo() + "]"
- );
- } else {
- Wallet wallet = this.walletService.findByUserId(order.getPartyId());
- BigDecimal amountBefore = wallet.getMoney();
-// fee = exchangeRateService.getUsdtByType(order.getFee(), type);
-// deposit = exchangeRateService.getUsdtByType(deposit, type);
- BigDecimal totalAmountCost = deposit.add(order.getFee());
- if (amountBefore.compareTo(totalAmountCost) < 0) {
- throw new YamiShopBindException("余额不足");
- }
-
- walletService.updateMoney(order.getSymbol(), order.getPartyId(), BigDecimal.ZERO.subtract(deposit), BigDecimal.ZERO
- , Constants.MONEYLOG_CATEGORY_CONTRACT, Constants.WALLET_USDT, Constants.MONEYLOG_CONTENT_CONTRACT_OPEN, "委托单,订单号[" + order.getOrderNo() + "]"
- );
- walletService.updateMoney(order.getSymbol(), order.getPartyId(), BigDecimal.ZERO.subtract(fee), BigDecimal.ZERO
- , Constants.MONEYLOG_CATEGORY_CONTRACT, Constants.WALLET_USDT, Constants.MONEYLOG_CONTENT_FEE, "委托单手续费,订单号[" + order.getOrderNo() + "]"
- );
-
-
- //ICE盘定制交易手续费返佣
- rechargeBonusService.saveTradeBounsHandle(order.getPartyId(),1, fee.doubleValue(),order.getOrderNo(),order.getSymbol());
+ BigDecimal totalAmountCost = deposit.add(order.getFee());
+ if (amountBefore.compareTo(totalAmountCost) < 0) {
+ throw new YamiShopBindException("余额不足");
}
+
+ walletService.updateMoney(order.getSymbol(), order.getPartyId(), BigDecimal.ZERO.subtract(deposit), BigDecimal.ZERO
+ , Constants.MONEYLOG_CATEGORY_CONTRACT, Constants.WALLET_USDT, Constants.MONEYLOG_CONTENT_CONTRACT_OPEN, "委托单,订单号[" + order.getOrderNo() + "]"
+ );
+ walletService.updateMoney(order.getSymbol(), order.getPartyId(), BigDecimal.ZERO.subtract(fee), BigDecimal.ZERO
+ , Constants.MONEYLOG_CATEGORY_CONTRACT, Constants.WALLET_USDT, Constants.MONEYLOG_CONTENT_FEE, "委托单手续费,订单号[" + order.getOrderNo() + "]"
+ );
+
+
+ //ICE盘定制交易手续费返佣
+ rechargeBonusService.saveTradeBounsHandle(order.getPartyId(),1, fee.doubleValue(),order.getOrderNo(),order.getSymbol());
save(order);
User party = this.userService.getById(order.getPartyId());
if (Constants.SECURITY_ROLE_MEMBER.equals(party.getRoleName())) {
--
Gitblit v1.9.3