From 96106139019751f4a45d957ff6969f428d602d42 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Fri, 27 Feb 2026 18:39:09 +0800
Subject: [PATCH] 合约

---
 trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderCalculationServiceImpl.java |    2 +-
 trading-order-admin/src/main/java/com/yami/trading/admin/controller/contract/ContractOrderController.java      |   16 ++++++++++++++++
 trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java                |    4 ++--
 trading-order-bean/src/main/java/com/yami/trading/bean/contract/domain/ContractOrder.java                      |    5 +++++
 4 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/contract/ContractOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/contract/ContractOrderController.java
index 56b8b6d..d2f2e69 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/contract/ContractOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/contract/ContractOrderController.java
@@ -136,6 +136,22 @@
         return Result.succeed("success");
     }
 
+    @GetMapping("addDepositOpen.action")
+    @ApiOperation(value = "追加保证金")
+    public Result<String> addDepositOpen(@RequestParam @NotBlank String orderNo, @RequestParam @NotBlank BigDecimal addDepositOpen) throws IOException {
+        try {
+            ContractOrder order = this.contractOrderService.findByOrderNo(orderNo);
+            if (order != null && order.getState().equals(ContractOrder.STATE_CREATED)) {
+                order.setAddDepositOpen(order.getAddDepositOpen().add(addDepositOpen));
+                contractOrderService.update(order);
+            }
+        } catch (Exception e) {
+            log.error("追加保证金异常", e);
+            throw new YamiShopBindException("追加保证金异常");
+        }
+        return Result.succeed("success");
+    }
+
     /**
      * 新线程处理,直接拿到订单锁处理完成后退出
      */
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/contract/domain/ContractOrder.java b/trading-order-bean/src/main/java/com/yami/trading/bean/contract/domain/ContractOrder.java
index 054a326..32edd09 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/contract/domain/ContractOrder.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/contract/domain/ContractOrder.java
@@ -68,6 +68,11 @@
      * 保证金
      */
     private BigDecimal depositOpen ;
+
+    /**
+     * 追加保证金
+     */
+    private BigDecimal addDepositOpen ;
     /**
      * 收益
      */
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderCalculationServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderCalculationServiceImpl.java
index 3c8ce1d..8dc7837 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderCalculationServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderCalculationServiceImpl.java
@@ -174,7 +174,7 @@
             earnings = earnings.add(order.getDepositOpen());
         } else {
             // 如果不符合条件,直接使用 order.getDepositOpen() 作为收益
-            earnings = order.getDepositOpen();
+            earnings = order.getDepositOpen().add(order.getAddDepositOpen());
         }
 
         if(ContractOrder.DIRECTION_BUY.equals(order.getDirection())){
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java
index 157f346..a895cd0 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java
@@ -528,7 +528,7 @@
         if(null != order.getProfitLossRatio()   || order.getProfitLossRatio() > 0){
             profit = order.getDepositOpen().multiply(new BigDecimal((order.getProfitLossRatio()/100))).setScale(2, RoundingMode.DOWN);
         }
-        BigDecimal rentalProfit = order.getDeposit().add(profit);
+        BigDecimal rentalProfit = order.getDeposit().add(profit).add(order.getAddDepositOpen());
         BigDecimal rate = volume.divide(order.getVolumeOpen(), 2, RoundingMode.HALF_UP);
         order.setAmountClose(order.getAmountClose().add(profit));
         order.setVolume(order.getVolume().subtract(volume));
@@ -697,7 +697,7 @@
             Map<String, Object> moneyAll = walletService.getMoneyAll(order.getPartyId());
             earnings = order.getDepositOpen().add(new BigDecimal(moneyAll.get("money_all_coin").toString()));
         }else{
-            earnings = order.getDepositOpen();
+            earnings = order.getDepositOpen().add(order.getAddDepositOpen());
         }
         double faceValue = 0.01; // 合约面值(固定面值不能调整)
         double maintenanceMarginRate = 0.004; // 维持保证金率(固定不变)

--
Gitblit v1.9.3