From a949bf71283aeabbf4ac26adb7f183b67c02dfc7 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 14 Aug 2024 06:18:45 +0800
Subject: [PATCH] 1

---
 src/main/java/project/project/web/api/ContractOrderController.java |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/src/main/java/project/project/web/api/ContractOrderController.java b/src/main/java/project/project/web/api/ContractOrderController.java
index da02779..89adeb3 100644
--- a/src/main/java/project/project/web/api/ContractOrderController.java
+++ b/src/main/java/project/project/web/api/ContractOrderController.java
@@ -1,6 +1,7 @@
 package project.project.web.api;
 
 import java.io.IOException;
+import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -10,6 +11,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 
+import kernel.util.Arith;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -27,6 +29,8 @@
 import project.contract.ContractOrderService;
 import project.data.DataService;
 import project.data.model.Realtime;
+import project.wallet.Wallet;
+import project.wallet.WalletService;
 
 /**
  * 永续合约持仓单
@@ -43,6 +47,9 @@
 	
 	@Autowired
 	private ContractOrderService contractOrderService;
+
+	@Autowired
+	private WalletService walletService;
 
 	private final String action = "/api/contractOrder!";
 	
@@ -183,6 +190,51 @@
 			for (int i = 0; i < data.size(); i++) {
 				Map<String, Object> map = data.get(i);
 
+				double depositOpen =  Double.parseDouble(map.get("deposit_open").toString());
+				double leverRate = Double.parseDouble(map.get("lever_rate").toString());
+				double tradeAvgPrice =  Double.parseDouble(map.get("trade_avg_price").toString());
+
+				double mul = Arith.mul(depositOpen, leverRate);//仓位
+				double div = Arith.div(mul, tradeAvgPrice);//持有币的数量
+				/**
+				 * 计算全仓收益 保证金
+				 */
+				double profit = 0;
+				List<ContractOrder> list = contractOrderService.findSubmitted(this.getLoginPartyId(), null, null);
+				for (int f = 0; f < list.size(); f++) {
+					ContractOrder close_line = list.get(f);
+					if(close_line.getProfit() > 0){
+						profit = Arith.add(profit, Arith.add(close_line.getProfit(), close_line.getDeposit()));
+					}else{
+						profit = Arith.add(profit, close_line.getDeposit());
+					}				}
+				Wallet wallet = this.walletService.saveWalletByPartyId(this.getLoginPartyId());
+				double totleMoney = wallet.getMoney();
+				profit = Arith.add(profit,totleMoney);
+
+
+				if (map.get("direction") != null) {
+					String direction = map.get("direction").toString();
+					double liquidationPrice;
+					double deposit = depositOpen + profit;
+					if(leverRate == 1){
+						liquidationPrice = 0;
+					}else {
+						if ("sell".equals(direction)) {
+							liquidationPrice = tradeAvgPrice + (deposit / div);
+						} else {
+							liquidationPrice = (mul * tradeAvgPrice) / (deposit + mul);
+						}
+					}
+
+					DecimalFormat dfs = new DecimalFormat("#.#####");
+					String formattedPrice = dfs.format(liquidationPrice);
+					map.put("qiangPing", formattedPrice);
+				}
+
+
+
+
 				// 标记价格
 				Realtime realtime = realtimeMap.get(map.get("symbol"));
 				if (null == realtime) {

--
Gitblit v1.9.3