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 |   89 +++++++++++++++++++++++---------------------
 1 files changed, 47 insertions(+), 42 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 cebd32a..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");
@@ -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));
     }
 
 

--
Gitblit v1.9.3