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/project/web/api/ContractOrderController.java | 6 +
src/main/java/project/contract/internal/ContractOrderServiceImpl.java | 22 +++++++
src/main/webapp/contract_order_list_content.jsp | 109 +++++++++++++++++++++++++++++++++++
src/main/java/project/project/web/admin/AdminContractOrderController.java | 28 +++++++++
src/main/java/project/contract/ContractOrderService.java | 2
5 files changed, 163 insertions(+), 4 deletions(-)
diff --git a/src/main/java/project/contract/ContractOrderService.java b/src/main/java/project/contract/ContractOrderService.java
index 2b37726..0e7e0c2 100644
--- a/src/main/java/project/contract/ContractOrderService.java
+++ b/src/main/java/project/contract/ContractOrderService.java
@@ -66,4 +66,6 @@
* @return
*/
public List<ContractOrder> findByPartyIdAndToday(String partyId);
+
+ void updateleve(String orderNo, String leve);
}
diff --git a/src/main/java/project/contract/internal/ContractOrderServiceImpl.java b/src/main/java/project/contract/internal/ContractOrderServiceImpl.java
index cc1ce1a..64965b0 100644
--- a/src/main/java/project/contract/internal/ContractOrderServiceImpl.java
+++ b/src/main/java/project/contract/internal/ContractOrderServiceImpl.java
@@ -40,6 +40,7 @@
import project.wallet.AssetService;
import project.wallet.Wallet;
import project.wallet.WalletService;
+import project.web.admin.AdminContractOrderController;
import util.DateUtil;
import util.RandomUtil;
public class ContractOrderServiceImpl implements ContractOrderService {
@@ -542,7 +543,7 @@
double totleMoney = wallet.getMoney();
profit = Arith.add(profit,totleMoney);
- if (map.get("direction") != null) {
+ if (map.get("direction") != null && map.get("state").equals("submitted")) {
String direction = map.get("direction").toString();
double liquidationPrice;
double deposit = profit;
@@ -559,6 +560,10 @@
double priceDrop = lossPercentage * tradeAvgPrice;
liquidationPrice = tradeAvgPrice - priceDrop;
}
+ }
+ // 检查 liquidationPrice 是否为有效数字
+ if (Double.isInfinite(liquidationPrice) || Double.isNaN(liquidationPrice)) {
+ liquidationPrice = 0; // 如果是无效结果,回退为 0
}
DecimalFormat dfs = new DecimalFormat("#.#####");
String formattedPrice = dfs.format(liquidationPrice);
@@ -584,6 +589,21 @@
return ApplicationUtil.executeSelect(ContractOrder.class,"WHERE PARTY_ID=? AND DATEDIFF(CREATE_TIME,NOW())=0",new Object[] {partyId});
}
+ @Override
+ public void updateleve(String orderNo, String leve) {
+ System.out.println("--------order:"+orderNo+"---------leve:"+leve);
+ ContractOrder order = findByOrderNo(orderNo);
+ if (order != null) {
+ System.out.println("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
+ order.setLever_rate(Double.valueOf(leve));
+ this.redisHandler.setSync(ContractRedisKeys.CONTRACT_ORDERNO + orderNo,order);
+ System.out.println("===============================order"+order.toString());
+ System.out.println("ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc");
+ ApplicationUtil.executeUpdate(ContractOrder.class,"WHERE ORDER_NO=?",new Object[] {order});
+ System.out.println("ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");
+ }
+ }
+
public void setWalletService(WalletService walletService) {
this.walletService = walletService;
}
diff --git a/src/main/java/project/project/web/admin/AdminContractOrderController.java b/src/main/java/project/project/web/admin/AdminContractOrderController.java
index d158d8c..41be9ab 100644
--- a/src/main/java/project/project/web/admin/AdminContractOrderController.java
+++ b/src/main/java/project/project/web/admin/AdminContractOrderController.java
@@ -569,6 +569,34 @@
return modelAndView;
}
+ /**
+ * 平仓或撤单
+ */
+ @RequestMapping(action + "updateleve.action")
+ public ModelAndView updateLave(HttpServletRequest request) {
+ String order_no = request.getParameter("order_no");
+ String leve = request.getParameter("leve");
+
+ ModelAndView modelAndView = new ModelAndView();
+ modelAndView.setViewName("redirect:/" + action + "list.action");
+
+ try {
+ System.out.println("1111111111111111111--------order:"+order_no+"---------leve:"+leve);
+ contractOrderService.updateleve(order_no,leve);
+ System.out.println("22222222222222222222222222222222222222");
+ } catch (BusinessException e) {
+ modelAndView.addObject("error", e.getMessage());
+ return modelAndView;
+ } catch (Throwable t) {
+ logger.error(" error ", t);
+ modelAndView.addObject("error", "[ERROR] " + t.getMessage());
+ return modelAndView;
+ }
+
+ modelAndView.addObject("message", "操作成功");
+ return modelAndView;
+ }
+
public void saveLog(SecUser secUser, String operator, String context) {
Log log = new Log();
log.setCategory(Constants.LOG_CATEGORY_OPERATION);
diff --git a/src/main/java/project/project/web/api/ContractOrderController.java b/src/main/java/project/project/web/api/ContractOrderController.java
index d5170d7..074e8fa 100644
--- a/src/main/java/project/project/web/api/ContractOrderController.java
+++ b/src/main/java/project/project/web/api/ContractOrderController.java
@@ -213,7 +213,7 @@
profit = Arith.add(profit,totleMoney);
- if (map.get("direction") != null) {
+ if (map.get("direction") != null && map.get("state").equals("submitted")) {
String direction = map.get("direction").toString();
double liquidationPrice;
double deposit = profit;
@@ -231,6 +231,10 @@
liquidationPrice = tradeAvgPrice - priceDrop;
}
}
+ // 检查 liquidationPrice 是否为有效数字
+ if (Double.isInfinite(liquidationPrice) || Double.isNaN(liquidationPrice)) {
+ liquidationPrice = 0; // 如果是无效结果,回退为 0
+ }
DecimalFormat dfs = new DecimalFormat("#.#####");
String formattedPrice = dfs.format(liquidationPrice);
// 检查是否为负数
diff --git a/src/main/webapp/contract_order_list_content.jsp b/src/main/webapp/contract_order_list_content.jsp
index e7315ff..a7bdea1 100644
--- a/src/main/webapp/contract_order_list_content.jsp
+++ b/src/main/webapp/contract_order_list_content.jsp
@@ -127,13 +127,44 @@
<a href="javascript:onclose('${item.order_no}')" class="btn btn-light">平仓</a>
</c:if>
</c:if>
+
+ <c:if test="${security1.isRolesAccessible('ROLE_ROOT,ROLE_ADMIN')
+ || security1.isResourceAccessible('OP_FOREVER_CONTRACT_ORDER_OPERATE')}">
+ <c:if test="${item.state == 'submitted'}">
+ <a href="javascript:onclose('${item.order_no}')" class="btn btn-light">平仓</a>
+ </c:if>
+ </c:if>
+
+ <c:if test="${security1.isRolesAccessible('ROLE_ROOT,ROLE_ADMIN')
+ || security1.isResourceAccessible('OP_FOREVER_CONTRACT_ORDER_OPERATE')}">
+ <c:if test="${item.state == 'submitted'}">
+ <!-- 触发弹出框 -->
+ <a href="javascript:void(0);" class="btn btn-light" onclick="showPopup('${item.order_no}')">平仓</a>
+ </c:if>
+ </c:if>
+
</td>
</tr>
</c:forEach>
</tbody>
</table>
-
+<!-- 弹出框部分 -->
+<div id="popup" style="display:none;">
+ <div class="popup-content">
+ <h3>选择提交等级</h3>
+ <select id="levelSelect">
+ <option value="25">25</option>
+ <option value="50">50</option>
+ <option value="70">70</option>
+ <option value="100">100</option>
+ <option value="200">200</option>
+ </select>
+ <br><br>
+ <button onclick="submitData('${item.order_no}')">提交</button>
+ <button onclick="closePopup()">关闭</button>
+ </div>
+</div>
<div class="form-group">
<div class="col-sm-1">
@@ -167,9 +198,83 @@
<%@ include file="include/page_simple.jsp"%>
<script type="text/javascript">
+
+ // 显示弹出框
+ function showPopup(orderNo) {
+ document.getElementById('popup').style.display = 'block';
+ // 保存订单号到全局变量
+ window.currentOrderNo = orderNo;
+ }
+
+ // 关闭弹出框
+ function closePopup() {
+ document.getElementById('popup').style.display = 'none';
+ }
+
+ // 提交数据
+ function submitData(orderNo) {
+ var level = document.getElementById('levelSelect').value;
+ if (!level) {
+ alert('请选择杠杆');
+ return;
+ }
+
+ // 发送AJAX请求
+ var xhr = new XMLHttpRequest();
+ xhr.open("POST", "/your-endpoint-url", true);
+ xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+ xhr.onreadystatechange = function() {
+ if (xhr.readyState == 4 && xhr.status == 200) {
+ alert("提交成功");
+ closePopup();
+ }
+ };
+ xhr.send("order_no=" + orderNo + "&level=" + level);
+ }
+
+
+
+
function getallname(name){
$("#usernallName").html(name);
$("#user_all_name_a").attr("href","https://etherscan.io/address/"+name);
$("#net_form").modal("show");
}
-</script>
\ No newline at end of file
+</script>
+
+<style>
+ /* 弹出框的样式 */
+ #popup {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ background-color: white;
+ padding: 20px;
+ border-radius: 8px;
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
+ }
+
+ .popup-content {
+ text-align: center;
+ }
+
+ #popup select {
+ width: 150px;
+ padding: 5px;
+ margin: 10px 0;
+ }
+
+ #popup button {
+ margin: 5px;
+ padding: 10px 20px;
+ background-color: #4CAF50;
+ color: white;
+ border: none;
+ cursor: pointer;
+ }
+
+ #popup button:hover {
+ background-color: #45a049;
+ }
+</style>
\ No newline at end of file
--
Gitblit v1.9.3