From 41bc089a838c108a945706096a2b874cbcdd8486 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Fri, 30 May 2025 12:01:33 +0800
Subject: [PATCH] 1
---
src/main/java/project/project/web/api/ContractOrderController.java | 70 ++++++++++++++++++----------------
1 files changed, 37 insertions(+), 33 deletions(-)
diff --git a/src/main/java/project/project/web/api/ContractOrderController.java b/src/main/java/project/project/web/api/ContractOrderController.java
index 029f37b..d5170d7 100644
--- a/src/main/java/project/project/web/api/ContractOrderController.java
+++ b/src/main/java/project/project/web/api/ContractOrderController.java
@@ -41,10 +41,10 @@
@Autowired
private DataService dataService;
-
+
@Autowired
private ContractLockService contractLockService;
-
+
@Autowired
private ContractOrderService contractOrderService;
@@ -52,12 +52,12 @@
private WalletService walletService;
private final String action = "/api/contractOrder!";
-
+
private static final Logger logger = LoggerFactory.getLogger(ContractOrderController.class);
/**
* 平仓
- *
+ *
* order_no 订单号
*/
@RequestMapping(action + "close.action")
@@ -69,7 +69,7 @@
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
-
+
try {
CloseDelayThread lockDelayThread = new CloseDelayThread(this.getLoginPartyId(), order_no, this.contractOrderService, false);
@@ -99,7 +99,7 @@
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
-
+
try {
CloseDelayThread lockDelayThread = new CloseDelayThread(this.getLoginPartyId(), "", this.contractOrderService, true);
@@ -120,7 +120,7 @@
/**
* 订单列表
- *
+ *
* page_no 页码
* symbol 币种
* type 查询类型:orders 当前持仓单;hisorders 历史持仓单;
@@ -153,7 +153,7 @@
}
int page_no_int = Integer.valueOf(page_no).intValue();
-
+
if ("orders".equals(type)) {
// // 页条数配成1000达到不分页的效果
// data = this.contractOrderService.getPaged(page_no_int, 1000, this.getLoginPartyId(), symbol, type);
@@ -161,7 +161,7 @@
} else if ("hisorders".equals(type)) {
data = this.contractOrderService.getPaged(page_no_int, 10, this.getLoginPartyId(), symbol, type,startTime,endTime);
}
-
+
String symbolsStr = "";
Set<String> symbols = new HashSet<String>();
for (int i = 0; i < data.size(); i++) {
@@ -173,20 +173,20 @@
} else {
symbolsStr = sym;
}
- }
+ }
}
-
+
List<Realtime> realtime_all = this.dataService.realtime(symbolsStr);
if (realtime_all.size() <= 0) {
realtime_all = new ArrayList<Realtime>();
// throw new BusinessException("系统错误,请稍后重试");
}
-
+
Map<String, Realtime> realtimeMap = new HashMap<String, Realtime>();
for (int i = 0; i < realtime_all.size(); i++) {
realtimeMap.put(realtime_all.get(i).getSymbol(), realtime_all.get(i));
}
-
+
for (int i = 0; i < data.size(); i++) {
Map<String, Object> map = data.get(i);
@@ -216,25 +216,29 @@
if (map.get("direction") != null) {
String direction = map.get("direction").toString();
double liquidationPrice;
- double deposit = depositOpen + profit;
+ double deposit = profit;
+
if(leverRate == 1){
liquidationPrice = 0;
}else {
if ("sell".equals(direction)) {
- liquidationPrice = tradeAvgPrice + (deposit / div);
+ double lossPercentage = deposit / Double.parseDouble(map.get("amount").toString());
+ double priceIncrease = lossPercentage * tradeAvgPrice;
+ liquidationPrice = tradeAvgPrice + priceIncrease;
} else {
- liquidationPrice = (mul * tradeAvgPrice) / (deposit + mul);
+ double lossPercentage = deposit / Double.parseDouble(map.get("amount").toString());
+ double priceDrop = lossPercentage * tradeAvgPrice;
+ liquidationPrice = tradeAvgPrice - priceDrop;
}
}
-
DecimalFormat dfs = new DecimalFormat("#.#####");
String formattedPrice = dfs.format(liquidationPrice);
+ // 检查是否为负数
+ if (Double.parseDouble(formattedPrice) < 0) {
+ formattedPrice = "0";
+ }
map.put("qiangPing", formattedPrice);
}
-
-
-
-
// 标记价格
Realtime realtime = realtimeMap.get(map.get("symbol"));
if (null == realtime) {
@@ -243,9 +247,9 @@
map.put("mark_price", realtime.getClose());
}
}
-
+
resultObject.setData(data);
-
+
} catch (BusinessException e) {
resultObject.setCode("1");
resultObject.setMsg(e.getMessage());
@@ -260,7 +264,7 @@
/**
* 订单详情
- *
+ *
* order_no 订单号
*/
@RequestMapping(action + "get.action")
@@ -274,21 +278,21 @@
}
try {
-
+
if (StringUtils.isNullOrEmpty(order_no)) {
logger.info("contractOrder!get order_no null");
throw new BusinessException("订单不存在");
}
ContractOrder order = this.contractOrderService.findByOrderNo(order_no);
-
+
if (null == order) {
logger.info("contractOrder!get order_no:" + order_no + ", order null");
throw new BusinessException("订单不存在");
}
-
+
resultObject.setData(this.contractOrderService.bulidOne(order));
-
+
} catch (BusinessException e) {
resultObject.setCode("1");
resultObject.setMsg(e.getMessage());
@@ -311,9 +315,9 @@
private boolean all = false;
public void run() {
-
+
try {
-
+
while (true) {
if (true == all) {
// 一键平仓
@@ -323,7 +327,7 @@
// 处理完退出
break;
}
- ThreadUtils.sleep(500);
+ ThreadUtils.sleep(500);
} else {
// if (ContractLock.add(order_no)) {
if (contractLockService.getContractLock(order_no)) {
@@ -331,7 +335,7 @@
// 处理完退出
break;
}
- ThreadUtils.sleep(500);
+ ThreadUtils.sleep(500);
}
}
@@ -355,5 +359,5 @@
this.all = all;
}
}
-
+
}
--
Gitblit v1.9.3