新版仿ok交易所-后端
1
zj
12 hours ago b28a97e1bf66e3279e78f31ce58122427787ceec
1
4 files modified
22 ■■■■■ changed files
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java 2 ●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderCalculationServiceImpl.java 5 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java 2 ●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/impl/WalletServiceImpl.java 13 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
@@ -231,7 +231,7 @@
            log.error("错误信息: {}", e.getMessage(), e);
            throw e; // 重新抛出自定义异常
        } catch (Exception e) {
            log.error("系统异常: {}", e.getMessage(), e);
            log.error("系统异常: {}", e.getMessage() != null ? e.getMessage() : e.getClass().getSimpleName(), e);
            throw new YamiShopBindException("Operation failed, please try again later");
        } finally {
            // 确保释放锁
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderCalculationServiceImpl.java
@@ -19,6 +19,7 @@
import java.math.RoundingMode;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@Slf4j
@Service
@@ -242,13 +243,13 @@
            if (ContractOrder.STATE_SUBMITTED.equals(contractOrder.getState())) {
                contractOrderService.wrapProfit(contractOrder);
            }
            if (order.getUuid().equals(contractOrder.getUuid())) {
            if (Objects.equals(order.getUuid(), contractOrder.getUuid())) {
                continue;
            }
            otherEquity = otherEquity.add(defaultZero(contractOrder.getProfit()).add(defaultZero(contractOrder.getDeposit())));
        }
        BigDecimal baseEquity = defaultZero(wallet.getMoney())
        BigDecimal baseEquity = defaultZero(wallet != null ? wallet.getMoney() : null)
                .add(otherEquity)
                .add(defaultZero(order.getDeposit()));
        BigDecimal priceOffset = baseEquity.divide(volumeFactor, 10, RoundingMode.HALF_UP);
trading-order-service/src/main/java/com/yami/trading/service/contract/ContractOrderService.java
@@ -855,7 +855,7 @@
            } else {
                applyLimitOpenToOrder(order, applyOrder);
            }
            //计算强平价格
            //计算强平价格(全仓模式下需合并已有持仓,uuid 可能尚未生成,比较时需用 Objects.equals)
            getStrongPrice(order);
            save(order);
            refreshOrder(applyOrder, order);
trading-order-service/src/main/java/com/yami/trading/service/impl/WalletServiceImpl.java
@@ -712,14 +712,17 @@
        BigDecimal orderVolume = BigDecimal.ONE;
        if (order.getLeverRate() != null && order.getLeverRate().compareTo(BigDecimal.ZERO) != 0) {
        if (order.getLeverRate() != null && order.getLeverRate().compareTo(BigDecimal.ZERO) != 0
                && order.getVolumeOpen() != null) {
            orderVolume = order.getVolumeOpen().divide(order.getLeverRate(), 2, BigDecimal.ROUND_HALF_UP);
        } else {
        } else if (order.getVolumeOpen() != null) {
            orderVolume = order.getVolumeOpen();
        }
        BigDecimal moneyContract = orderVolume.multiply(order.getUnitAmount()).add(order.getProfit());
        BigDecimal moneyContractDeposit = order.getDeposit();
        BigDecimal moneyContractProfit = order.getProfit();
        BigDecimal unitAmount = order.getUnitAmount() != null ? order.getUnitAmount() : BigDecimal.ZERO;
        BigDecimal profit = order.getProfit() != null ? order.getProfit() : BigDecimal.ZERO;
        BigDecimal moneyContract = orderVolume.multiply(unitAmount).add(profit);
        BigDecimal moneyContractDeposit = order.getDeposit() != null ? order.getDeposit() : BigDecimal.ZERO;
        BigDecimal moneyContractProfit = profit;
        moneysContract.put("money_contract", moneyContract);