From 879a75e26e94d766e893e47d65a0b239e04ce94a Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Tue, 10 Jun 2025 16:58:26 +0800
Subject: [PATCH] 后台修改杠杆

---
 src/main/java/project/contract/internal/ContractApplyOrderServiceImpl.java |   76 +++++++++++++++++++++++--------------
 1 files changed, 47 insertions(+), 29 deletions(-)

diff --git a/src/main/java/project/contract/internal/ContractApplyOrderServiceImpl.java b/src/main/java/project/contract/internal/ContractApplyOrderServiceImpl.java
index f9a436c..919c1b0 100644
--- a/src/main/java/project/contract/internal/ContractApplyOrderServiceImpl.java
+++ b/src/main/java/project/contract/internal/ContractApplyOrderServiceImpl.java
@@ -93,45 +93,48 @@
 			}
 		}
 
-		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 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_open(order.getVolume());
 
@@ -179,6 +182,21 @@
 		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%手续费
+		}
+		return totalCapital * feeRate; // 根据总资金计算手续费
+	}
+
 	/**
 	 * 平仓委托
 	 */

--
Gitblit v1.9.3