From 125372b36a4cce2b43ad39a583f28a0fb962c918 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期一, 13 一月 2025 11:38:44 +0800
Subject: [PATCH] 12.18

---
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RedPackegeSetController.java |   39 ++++++++++++++++++++++++++++-----------
 1 files changed, 28 insertions(+), 11 deletions(-)

diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RedPackegeSetController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RedPackegeSetController.java
index 1cf964f..98df583 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RedPackegeSetController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RedPackegeSetController.java
@@ -13,6 +13,9 @@
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 
 /**
@@ -65,17 +68,8 @@
     public R<Void> addRedPackegeSet(@RequestBody RedPackegeSetDto redPackegeSets){
         redPackegeSetService.remove(null);
         List<RedPackegeSet> redPackegeSetList = redPackegeSets.getRedPackegeSets();
-        for (int i = 0; i < redPackegeSetList.size(); i++) {
-            RedPackegeSet redPackegeSet = redPackegeSetList.get(i);
-            LocalDateTime startTime = redPackegeSet.getStartTime();
-            LocalDateTime endTime = redPackegeSet.getEndTime();
-            for (RedPackegeSet redPackegeSet1 : redPackegeSetList) {
-                LocalDateTime startTime1 = redPackegeSet1.getStartTime();
-                LocalDateTime endTime1 = redPackegeSet1.getEndTime();
-                if (!(endTime.isBefore(startTime1) || startTime.isAfter(endTime1))) {
-                    return R.fail("时间有重叠,请重新配置");
-                }
-            }
+        if (hasOverlap(redPackegeSetList)) {
+            R.fail("时间段存在重叠,请重新配置");
         }
         redPackegeSetService.saveBatch(redPackegeSetList);
         return R.ok();
@@ -91,5 +85,28 @@
         return R.ok();
     }
 
+    private boolean hasOverlap(List<RedPackegeSet> redPackegeSetList) {
+        // 首先根据startTime对列表进行排序
+        Collections.sort(redPackegeSetList, Comparator.comparing(RedPackegeSet::getStartTime));
+
+        // 然后检查是否存在重叠
+        for (int i = 0; i < redPackegeSetList.size() - 1; i++) {
+            RedPackegeSet current = redPackegeSetList.get(i);
+            RedPackegeSet next = redPackegeSetList.get(i + 1);
+
+            // 如果当前时间段的结束时间晚于或等于下一个时间段的开始时间,则存在重叠
+            if (current.getEndTime().isAfter(next.getStartTime()) ||
+                    current.getEndTime().isEqual(next.getStartTime())) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+
+
+
+
 }
 

--
Gitblit v1.7.1