src/main/java/project/contract/ContractOrderService.java
@@ -66,4 +66,6 @@ * @return */ public List<ContractOrder> findByPartyIdAndToday(String partyId); void updateleve(String orderNo, String leve); } 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; } 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); 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); // 检查是否为负数 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> </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>