From 8d9197af3ec0b06565aa44aae631f0f8a661897b Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Thu, 10 Jul 2025 19:27:26 +0800
Subject: [PATCH] 1
---
src/main/java/project/contract/internal/ContractApplyOrderServiceImpl.java | 86 +++++++++++++++++++++++++++---------------
1 files changed, 55 insertions(+), 31 deletions(-)
diff --git a/src/main/java/project/contract/internal/ContractApplyOrderServiceImpl.java b/src/main/java/project/contract/internal/ContractApplyOrderServiceImpl.java
index f9a436c..b2f19d8 100644
--- a/src/main/java/project/contract/internal/ContractApplyOrderServiceImpl.java
+++ b/src/main/java/project/contract/internal/ContractApplyOrderServiceImpl.java
@@ -1,5 +1,7 @@
package project.contract.internal;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@@ -93,46 +95,50 @@
}
}
- List<ContractOrder> order_state0_list = contractOrderService.findSubmitted(order.getPartyId().toString(),
- order.getSymbol(), order.getDirection());
- for (int i = 0; i < order_state0_list.size(); i++) {
- Double source_lever_rate = order.getLever_rate();
- source_lever_rate = source_lever_rate == null ? 0d : source_lever_rate;
-
- Double target_lever_rate = order_state0_list.get(i).getLever_rate();
- target_lever_rate = target_lever_rate == null ? 0d : target_lever_rate;
- if (source_lever_rate.compareTo(target_lever_rate) != 0) {
- throw new BusinessException("存在不同杠杆的持仓单");
- }
- }
- List<ContractApplyOrder> applyOrder_submitted_list = this.findSubmitted(order.getPartyId().toString(),
- order.getSymbol(), "open", order.getDirection());
- for (int i = 0; i < applyOrder_submitted_list.size(); i++) {
- Double source_lever_rate = order.getLever_rate();
- source_lever_rate = source_lever_rate == null ? 0d : source_lever_rate;
-
- Double target_lever_rate = applyOrder_submitted_list.get(i).getLever_rate();
- target_lever_rate = target_lever_rate == null ? 0d : target_lever_rate;
- if (source_lever_rate.compareTo(target_lever_rate) != 0) {
- throw new BusinessException("存在不同杠杆的持仓单");
- }
- }
+// List<ContractOrder> order_state0_list = contractOrderService.findSubmitted(order.getPartyId().toString(),
+// order.getSymbol(), order.getDirection());
+// for (int i = 0; i < order_state0_list.size(); i++) {
+// Double source_lever_rate = order.getLever_rate();
+// source_lever_rate = source_lever_rate == null ? 0d : source_lever_rate;
+//
+// Double target_lever_rate = order_state0_list.get(i).getLever_rate();
+// target_lever_rate = target_lever_rate == null ? 0d : target_lever_rate;
+// if (source_lever_rate.compareTo(target_lever_rate) != 0) {
+// throw new BusinessException("存在不同杠杆的持仓单");
+// }
+// }
+// List<ContractApplyOrder> applyOrder_submitted_list = this.findSubmitted(order.getPartyId().toString(),
+// order.getSymbol(), "open", order.getDirection());
+// for (int i = 0; i < applyOrder_submitted_list.size(); i++) {
+// Double source_lever_rate = order.getLever_rate();
+// source_lever_rate = source_lever_rate == null ? 0d : source_lever_rate;
+//
+// Double target_lever_rate = applyOrder_submitted_list.get(i).getLever_rate();
+// target_lever_rate = target_lever_rate == null ? 0d : target_lever_rate;
+// if (source_lever_rate.compareTo(target_lever_rate) != 0) {
+// throw new BusinessException("存在不同杠杆的持仓单");
+// }
+// }
order.setOrder_no(DateUtil.getToday("yyMMddHHmmss") + RandomUtil.getRandomNum(8));
order.setUnit_amount(item.getUnit_amount());
- order.setFee(Arith.mul(item.getUnit_fee(), order.getVolume()));
- order.setDeposit(Arith.mul(item.getUnit_amount(), order.getVolume()));
+ double mul = Arith.mul(item.getUnit_amount(), order.getVolume());
+ order.setDeposit(Arith.div(mul,order.getLever_rate()));
+ double fee = calculateFee(order.getLever_rate(), order.getDeposit());
+// order.setFee(Arith.mul(item.getUnit_fee(), order.getVolume()));
+ order.setFee(fee);
if (order.getLever_rate() != null) {
/**
* 加上杠杆
*/
- order.setVolume(Arith.mul(order.getVolume(), order.getLever_rate()));
- Syspara syspara = sysparaService.find("perpetual_contracts");
- if(ObjectUtils.isEmpty(syspara)||"0".equals(syspara.getValue())) {
- order.setFee(Arith.mul(order.getFee(), order.getLever_rate()));
- }
+
+// Syspara syspara = sysparaService.find("perpetual_contracts");
+// if(ObjectUtils.isEmpty(syspara)||"0".equals(syspara.getValue())) {
+// order.setFee(Arith.mul(order.getFee(), order.getLever_rate()));
+// }
}
+ order.setVolume(order.getVolume());
order.setVolume_open(order.getVolume());
order.setCreate_time(new Date());
@@ -179,6 +185,24 @@
insertContractApplyOrder(order);
}
+ public double calculateFee(double leverRate, double totalCapital) {
+ double feeRate = 0.0;
+
+ if (leverRate == 25) {
+ feeRate = 0.0375; // 3.75%手续费
+ } else if (leverRate == 50) {
+ feeRate = 0.075; // 7.5%手续费
+ } else if (leverRate == 100) {
+ feeRate = 0.15; // 15%手续费
+ } else if (leverRate == 200) {
+ feeRate = 0.30; // 30%手续费
+ }
+ BigDecimal bd = new BigDecimal(Double.toString(totalCapital * feeRate));
+ bd = bd.setScale(3, RoundingMode.DOWN);
+ System.out.println();
+ return bd.doubleValue();
+ }
+
/**
* 平仓委托
*/
--
Gitblit v1.9.3