新版仿ok交易所-后端
1
zj
2026-06-04 bf362d7ee6ab091cd26d69be9095440e5000928c
trading-order-admin/src/main/java/com/yami/trading/admin/controller/miner/MinerOrderController.java
@@ -82,28 +82,25 @@
            datas = minerOrderService.pagedQuery(pageNo, 40, partyId, state).getRecords();
            for (Map<String, Object> data : datas) {
                int intervalDaysByTwoDate = 0;
                int remainMinutes = 0;
                if (null == data.get("stop_time")) {
                    if ("0" != data.get("cycle_close")) {
                        String can_close_time = DateUtils
                                .format(DateUtils.addDay(DateUtils.toDate(data.get("create_time").toString()),
                                        new Double(data.get("cycle_close").toString()).intValue()),
                                        DateUtils.DF_yyyyMMdd);
                        intervalDaysByTwoDate = DateUtils.getIntervalDaysByTwoDate(DateUtils.toDate(can_close_time),
                                new Date());
                        Date canCloseTime = DateUtils.addMinute(
                                DateUtils.toDate(data.get("create_time").toString()),
                                new Double(data.get("cycle_close").toString()).intValue());
                        long diffMs = canCloseTime.getTime() - System.currentTimeMillis();
                        remainMinutes = (int) Math.max(0, diffMs / (60 * 1000));
                    }
                } else {
                    intervalDaysByTwoDate = DateUtils.getIntervalDaysByTwoDate(
                            DateUtils.toDate(data.get("stop_time").toString()), new Date());
                    long diffMs = DateUtils.toDate(data.get("stop_time").toString()).getTime()
                            - System.currentTimeMillis();
                    remainMinutes = (int) Math.max(0, diffMs / (60 * 1000));
                }
                if (intervalDaysByTwoDate < 0) {
                    intervalDaysByTwoDate = 0;
                }
                data.put("days", intervalDaysByTwoDate);
                data.put("days", remainMinutes);
                DecimalFormat df = new DecimalFormat("#.##");
                data.put("profit", df.format(data.get("profit")));
                data.put("test", null != data.get("test") && "Y".equals(data.get("test").toString()));
                data.put("can_close", intervalDaysByTwoDate <= 0);
                data.put("can_close", remainMinutes <= 0);
                data.put("buyCurrency", "usdt");
                data.put("outputCurrency", "usdt");
@@ -115,15 +112,18 @@
                    data.put("cycle", data.get("cycle"));
                    data.put("all_rate", Arith.mul(minerTestProfit, Integer.valueOf(data.get("cycle").toString())));
                } else {
                    double dailyProfitRate = Arith.mul(Double.valueOf(data.get("daily_rate").toString()), 0.01d);
                    double displayDailyRate = data.get("show_daily_rate") != null
                            ? Double.valueOf(data.get("show_daily_rate").toString())
                            : Double.valueOf(data.get("daily_rate").toString());
                    double dailyProfitRate = Arith.mul(displayDailyRate, 0.01d);
                    double dailyProfitAmount = Arith.mul(dailyProfitRate, Double.valueOf(data.get("amount").toString()));
                    String dailyProfit = df.format(dailyProfitAmount);
                    // 当日收益
                    data.put("daily_profit", dailyProfit);
                    data.put("daily_rate", data.get("daily_rate"));
                    data.put("daily_rate", displayDailyRate);
                    // 这里的周期,体验矿机是周期,其他矿机是解锁周期(到期后需手动解锁)
                    data.put("cycle", data.get("cycle_close"));
                    double all_rate = Arith.mul(30, Double.valueOf(data.get("daily_rate").toString()));
                    double all_rate = Arith.mul(30, displayDailyRate);
                    data.put("all_rate", df.format(all_rate));
                }
            }
@@ -373,13 +373,15 @@
                map.put("all_rate", Arith.mul(minerTestProfit, miner.getCycle()));
            } else {
                double amount = Double.valueOf(amount_temp);
                double displayDailyRate = miner.getShow_daily_rate();
                map.put("amount", amount);
                map.put("stop_time", null);
                map.put("daily_rate", miner.getDaily_rate());
                double rate = Arith.mul(miner.getDaily_rate(), 0.01d);
                map.put("daily_rate", displayDailyRate);
                map.put("show_daily_rate", displayDailyRate);
                double rate = Arith.mul(displayDailyRate, 0.01d);
                map.put("profit_may", String.valueOf(df.format(Arith.mul(amount, Arith.mul(rate, 30d)))));
                map.put("cycle", miner.getCycle_close());
                double all_rate = Arith.mul(30d, miner.getDaily_rate());
                double all_rate = Arith.mul(30d, displayDailyRate);
                map.put("all_rate", df.format(all_rate));
            }
            map.put("investment_min", miner.getInvestment_min());
@@ -445,8 +447,8 @@
                // 取时间
                Date date_now = new Date();
                double last_days = daysBetween(order.getCreate_time(), date_now);
                if ("1".equals(order.getState()) && last_days >= miner.getCycle_close()) {
                int elapsedMinutes = minutesBetween(order.getCreate_time(), date_now);
                if ("1".equals(order.getState()) && elapsedMinutes >= miner.getCycle_close()) {
                    // 解锁,不扣违约金
                    double default_money = 0;
                    order.setState("2");
@@ -480,7 +482,7 @@
        map.put("miner_name_cn", miner.getName_cn());
        Double miner_test_profit = sysparaService.find("miner_test_profit").getDouble();
        map.put("daily_rate", miner.getTest().equals("Y") ? miner_test_profit : miner.getDaily_rate());
        map.put("daily_rate", miner.getTest().equals("Y") ? miner_test_profit : miner.getShow_daily_rate());
        Date create_time = order.getCreate_time();
        map.put("create_timeStr", create_time);
        map.put("close_timeStr", order.getClose_time());
@@ -500,12 +502,24 @@
        //System.out.println("stop_timeStr => "+DateUtils.format(order.getStop_time(), DateUtils.DF_yyyyMMdd));
        Date date_now = new Date();// 取时间
        int daysBetween = order.getStop_time() == null ? 0 : daysBetween(date_now, order.getStop_time());
        daysBetween = Math.max(daysBetween, 0);
        map.put("days", daysBetween);
        int last_days = daysBetween(create_time, date_now);
        map.put("can_close", last_days >= miner.getCycle_close());
        double rate = Arith.mul(miner.getDaily_rate(), 0.01d);
        int remainMinutes = 0;
        if (order.getStop_time() != null) {
            long diffMs = order.getStop_time().getTime() - date_now.getTime();
            remainMinutes = (int) Math.max(0, diffMs / (60 * 1000));
        } else if (!miner.getTest().equals("Y") && miner.getCycle_close() > 0) {
            Date canCloseTime = DateUtils.addMinute(create_time, miner.getCycle_close());
            long diffMs = canCloseTime.getTime() - date_now.getTime();
            remainMinutes = (int) Math.max(0, diffMs / (60 * 1000));
        }
        map.put("days", remainMinutes);
        if (miner.getTest().equals("Y")) {
            map.put("can_close", order.getStop_time() != null && !date_now.before(order.getStop_time()));
        } else {
            int elapsedMinutes = minutesBetween(create_time, date_now);
            map.put("can_close", miner.getCycle_close() <= 0 || elapsedMinutes >= miner.getCycle_close());
        }
        double displayDailyRate = miner.getShow_daily_rate();
        double rate = Arith.mul(displayDailyRate, 0.01d);
        map.put("profit_may", miner.getTest().equals("Y") ? String.valueOf(Arith.mul(miner_test_profit, miner.getCycle()))
                : String.valueOf(Arith.mul(order.getAmount(), Arith.mul(rate, 30d))));
        map.put("order_no", order.getOrder_no());
@@ -518,7 +532,7 @@
        int cycle = miner.getTest().equals("Y") ? miner.getCycle() : miner.getCycle_close();
        map.put("cycle", cycle);
        double all_rate = Arith.mul(30, miner.getDaily_rate());
        double all_rate = Arith.mul(30, displayDailyRate);
        map.put("all_rate", miner.getTest().equals("Y") ? Arith.mul(miner_test_profit, miner.getCycle()) : df.format(all_rate));
        map.put("test", miner.getTest());
@@ -547,18 +561,9 @@
    }
    public static int daysBetween(Date smdate, Date bdate) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        smdate = sdf.parse(sdf.format(smdate));
        bdate = sdf.parse(sdf.format(bdate));
        Calendar cal = Calendar.getInstance();
        cal.setTime(smdate);
        long time1 = cal.getTimeInMillis();
        cal.setTime(bdate);
        long time2 = cal.getTimeInMillis();
        long between_days = (time2 - time1) / (1000 * 3600 * 24);
        return Integer.parseInt(String.valueOf(between_days));
    public static int minutesBetween(Date smdate, Date bdate) {
        long diff = bdate.getTime() - smdate.getTime();
        return (int) (diff / (60 * 1000));
    }