1
zyy
2025-12-12 0f900ede938b2dda75a09451e12f37f9facefc08
trading-order-service/src/main/java/com/yami/trading/service/dz/impl/StockDzServiceImpl.java
@@ -246,11 +246,11 @@
    }
    @Override
    public Result getDzCheckList(int pageNum, int pageSize, String state, String stockCode, String stockType, List<String> checkedList) {
    public Result getDzCheckList(int pageNum, int pageSize, String state, String stockCode, String stockType, String userName, List<String> checkedList) {
        try {
            Page page = new Page(pageNum, pageSize);
            stockDzMapper.getDzCheckList(page ,state, stockCode, stockType, checkedList);
            stockDzMapper.getDzCheckList(page ,state, stockCode, stockType, userName, checkedList);
            return Result.succeed(page);
        } catch (Exception e) {
            log.error(e.getMessage());
@@ -260,7 +260,7 @@
    @Transactional
    @Override
    public Result buyDz(String dzId, String password, double num, String partyId) {
    public Result buyDz(String dzId, String password, double num, String partyId, Boolean isAdmin) {
        try {
            if (num <= 0) {
                throw new YamiShopBindException("请输入");
@@ -307,16 +307,19 @@
                    return Result.failed("请购买最小数量");
                }
            }
            boolean isOpen = MarketOpenChecker.isMarketOpenBuyDz(Item.US_STOCKS);
            if (!isOpen) {
                return Result.failed("当前股市休市");
            }
            if (!isAdmin) { //后台买入不判断
                boolean isOpen = MarketOpenChecker.isMarketOpenBuyDz(Item.US_STOCKS);
                if (!isOpen) {
                    return Result.failed("当前股市休市");
                }
            }
            Wallet wallet = this.walletService.saveWalletByPartyId(partyId);
            BigDecimal buyAmt;
            if (isETF) {
                buyAmt = new BigDecimal(num);
                nowPrice = buyAmt;
            } else {
                buyAmt = nowPrice.multiply(new BigDecimal(num));
            }
@@ -521,7 +524,7 @@
    @Transactional
    @Override
    public Result closeDz(String id, Double num, String partyId) {
    public Result closeDz(String id, Double num, String partyId, Boolean isAdmin) {
        try {
            ExchangeApplyOrderDz order = exchangeApplyOrderDzMapper.selectById(id);
            if (order == null) {
@@ -535,6 +538,9 @@
            }
            if (num < 0 || num > order.getSymbolValue()) {
                throw new YamiShopBindException("数量错误");
            }
            if (partyId == null) {
                partyId = order.getPartyId();
            }
            StockDz stockDz = this.stockDzMapper.selectOne(new QueryWrapper<StockDz>().eq("uuid", order.getDzId()));
@@ -554,26 +560,25 @@
            }
            Date now = new Date();
            if (stockDz.getPeriod() != null && stockDz.getPeriod() > 0) {
                Calendar calendar = Calendar.getInstance();
                calendar.setTime(order.getCreateTime());
                calendar.add(Calendar.DATE, stockDz.getPeriod());
                // 锁仓时间
                Date resultTime = calendar.getTime();
            if (!isAdmin) {
                if (stockDz.getPeriod() != null && stockDz.getPeriod() > 0) {
                    Calendar calendar = Calendar.getInstance();
                    calendar.setTime(order.getCreateTime());
                    calendar.add(Calendar.DATE, stockDz.getPeriod());
                    // 锁仓时间
                    Date resultTime = calendar.getTime();
                if(now.getTime() < resultTime.getTime()){
                    return Result.failed("未到平仓时间");
                    if(now.getTime() < resultTime.getTime()){
                        return Result.failed("未到平仓时间");
                    }
                }
                if (!stockDz.getStockName().contains("测试")) {
                    boolean isOpen = MarketOpenChecker.isMarketOpenByItemCloseType(Item.US_STOCKS);
                    if (!isOpen) {
                        return Result.failed("当前股市休市");
                    }
                }
            }
            if (stockDz.getStockName().contains("测试")) {
            } else {
                boolean isOpen = MarketOpenChecker.isMarketOpenByItemCloseType(Item.US_STOCKS);
                if (!isOpen) {
                    return Result.failed("当前股市休市");
                }
            }
            Wallet wallet = this.walletService.saveWalletByPartyId(order.getPartyId());