zj
2025-06-10 879a75e26e94d766e893e47d65a0b239e04ce94a
后台修改杠杆
5 files modified
167 ■■■■■ changed files
src/main/java/project/contract/ContractOrderService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/project/contract/internal/ContractOrderServiceImpl.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/project/project/web/admin/AdminContractOrderController.java 28 ●●●●● patch | view | raw | blame | history
src/main/java/project/project/web/api/ContractOrderController.java 6 ●●●● patch | view | raw | blame | history
src/main/webapp/contract_order_list_content.jsp 109 ●●●●● patch | view | raw | blame | history
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>