新版仿ok交易所-后端
zyy
2026-02-27 96106139019751f4a45d957ff6969f428d602d42
合约
4 files modified
27 ■■■■ changed files
trading-order-admin/src/main/java/com/yami/trading/admin/controller/contract/ContractOrderController.java 16 ●●●●● patch | view | raw | blame | history
trading-order-bean/src/main/java/com/yami/trading/bean/contract/domain/ContractOrder.java 5 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderCalculationServiceImpl.java 2 ●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java 4 ●●●● patch | view | raw | blame | history
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");
    }
    /**
     * 新线程处理,直接拿到订单锁处理完成后退出
     */
trading-order-bean/src/main/java/com/yami/trading/bean/contract/domain/ContractOrder.java
@@ -68,6 +68,11 @@
     * 保证金
     */
    private BigDecimal depositOpen ;
    /**
     * 追加保证金
     */
    private BigDecimal addDepositOpen ;
    /**
     * 收益
     */
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())){
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; // 维持保证金率(固定不变)