1
zj
2026-01-28 86587c1ffa0bdfa2a171dce96540c7617dd44dec
src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -106,6 +106,8 @@
    StockDzMapper stockDzMapper;
    @Autowired
    StockVipMapper stockVipMapper;
    @Autowired
    FundFlowMapper fundFlowMapper;
    @Transactional
@@ -779,6 +781,8 @@
        BigDecimal reckon_all = user_all_amt.add(all_profit);
        //修改用戶可用余額=當前可用余額+總盈虧+買入總金額+追加保證金
        BigDecimal reckon_enable = user_enable_amt.add(all_profit).add(freez_amt).add(userPosition.getMarginAdd());
        //锁定提现金额
        BigDecimal lockAmount = reckon_enable.subtract(user_enable_amt);
        log.info("用戶平倉後的總資金  = {} , 可用資金 = {}", reckon_all, reckon_enable);
        user.setUserAmt(reckon_all);
@@ -790,6 +794,18 @@
            log.error("用戶平倉】修改用戶金額出錯");
            throw new Exception("用戶平倉】修改用戶金額出錯");
        }
        if (lockAmount.compareTo(BigDecimal.ZERO) > 0) {
            Date date = new Date();
            FundFlow fundFlow = new FundFlow();
            fundFlow.setUserId(userPosition.getUserId());
            fundFlow.setAmount(lockAmount);
            fundFlow.setUsedAmount(BigDecimal.ZERO);
            fundFlow.setWithdrawDate(DateTimeUtil.addDayAndGetZeroTime(date, 1));
            fundFlow.setStatus(0);
            fundFlow.setCreateTime(date);
            fundFlowMapper.insert(fundFlow);
        }
        UserCashDetail ucd = new UserCashDetail();
        ucd.setPositionId(userPosition.getId());
@@ -1985,6 +2001,10 @@
            userPosition.setStockCode(userStockSubscribe.getNewCode());
            userPosition.setStockName(userStockSubscribe.getNewName());
            userPosition.setStockGid(stockSubscribe.getStockType() + userStockSubscribe.getNewCode());
            Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code", userStockSubscribe.getNewCode()));
            if (stock != null) {
                userPosition.setStockGid(stock.getStockGid());
            }
            userPosition.setBuyOrderId(GeneratePosition.getPositionId());
            userPosition.setBuyOrderTime(new Date());
@@ -2111,18 +2131,21 @@
            return ServerResponse.createByErrorMsg("下单失败,系统设置错误");
        }
        StockDz stockDz = null;
        stockDz = this.stockDzMapper.selectOne(new QueryWrapper<StockDz>().eq("stock_code", stockCode));
        String am_begin = siteSetting.getTransAmBeginhk();
        String am_end = siteSetting.getTransAmEndhk();
        String pm_begin = siteSetting.getTransPmBeginhk();
        String pm_end = siteSetting.getTransPmEndhk();
        boolean am_flag = BuyAndSellUtils.isTransTime(am_begin, am_end);
        boolean pm_flag = BuyAndSellUtils.isTransTime(pm_begin, pm_end);
        log.info("是否在大宗交易时间 = {}", Boolean.valueOf(pm_flag));
        stockDz = this.stockDzMapper.selectOne(new QueryWrapper<StockDz>().eq("stock_gid", stockCode));
//        String am_begin = siteSetting.getTransAmBeginhk();
//        String am_end = siteSetting.getTransAmEndhk();
//        String pm_begin = siteSetting.getTransPmBeginhk();
//        String pm_end = siteSetting.getTransPmEndhk();
//        boolean am_flag = BuyAndSellUtils.isTransTime(am_begin, am_end);
//        boolean pm_flag = BuyAndSellUtils.isTransTime(pm_begin, pm_end);
//        log.info("是否在大宗交易时间 = {}", Boolean.valueOf(pm_flag));
        //15-15:30
//        if (!pm_flag) {
//            return ServerResponse.createByErrorMsg("下单失败,不在交易时段内");
//        }
        if(stockDz.getStartTime().getTime() > new Date().getTime() || stockDz.getEndTime().getTime() < new Date().getTime()){
            return ServerResponse.createByErrorMsg("不在交易时间之内");
        }
        if (siteProduct.getHolidayDisplay()) {
            return ServerResponse.createByErrorMsg("周末或节假日不能交易!");
        }
@@ -2424,18 +2447,20 @@
            return ServerResponse.createByErrorMsg("下單失敗,系統設置錯誤");
        }
        StockVip stockVip = null;
        stockVip = this.stockVipMapper.selectOne(new QueryWrapper<StockVip>().eq("stock_code", stockCode));
        String am_begin = siteSetting.getTransAmBeginhk();
        String am_end = siteSetting.getTransAmEndhk();
        String pm_begin = siteSetting.getTransPmBeginhk();
        String pm_end = siteSetting.getTransPmEndhk();
        boolean am_flag = BuyAndSellUtils.isTransTime(am_begin, am_end);
        boolean pm_flag = BuyAndSellUtils.isTransTime(pm_begin, pm_end);
        log.info("是否在VIP交易时间 = {}", Boolean.valueOf(pm_flag));
        //15-15:30
        stockVip = this.stockVipMapper.selectOne(new QueryWrapper<StockVip>().eq("stock_gid", stockCode));
//        String am_begin = siteSetting.getTransAmBeginhk();
//        String am_end = siteSetting.getTransAmEndhk();
//        String pm_begin = siteSetting.getTransPmBeginhk();
//        String pm_end = siteSetting.getTransPmEndhk();
//        boolean am_flag = BuyAndSellUtils.isTransTime(am_begin, am_end);
//        boolean pm_flag = BuyAndSellUtils.isTransTime(pm_begin, pm_end);
//        log.info("是否在VIP交易时间 = {}", Boolean.valueOf(pm_flag));
//        if (!pm_flag) {
//            return ServerResponse.createByErrorMsg("下单失败,不在交易时段内");
//        }
        if(stockVip.getStartTime().getTime() > new Date().getTime() || stockVip.getEndTime().getTime() < new Date().getTime()){
            return ServerResponse.createByErrorMsg("不在交易时间之内");
        }
        if (siteProduct.getHolidayDisplay()) {
            return ServerResponse.createByErrorMsg("周末或节假日不能交易!");
        }