From bf362d7ee6ab091cd26d69be9095440e5000928c Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Thu, 04 Jun 2026 18:08:35 +0800
Subject: [PATCH] 1

---
 trading-order-admin/src/main/java/com/yami/trading/admin/controller/miner/MinerOrderController.java |   65 ++++++++++++++++----------------
 1 files changed, 32 insertions(+), 33 deletions(-)

diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/miner/MinerOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/miner/MinerOrderController.java
index 89009f7..d4aaff1 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/miner/MinerOrderController.java
+++ b/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");
@@ -450,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");
@@ -505,11 +502,22 @@
         //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());
+        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()))
@@ -553,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));
     }
 
 

--
Gitblit v1.9.3