From acccff9860b271d55c55dc87486f7c20b9896e6c Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 13 一月 2025 16:19:54 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/RedPackegeSetController.java |   91 +++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 86 insertions(+), 5 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 7ee1c06..d70cbd1 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
@@ -4,17 +4,19 @@
 import com.ruoyi.account.api.model.AppUser;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.RedPackegeSet;
+import com.ruoyi.other.dto.RedPackegeSetDto;
 import com.ruoyi.other.service.RedPackegeSetService;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
 
 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;
 
 /**
  * <p>
@@ -43,5 +45,84 @@
         }
     }
 
+
+    /**
+     * 获取红包配置
+     */
+    @ApiOperation(value = "获取红包配置", tags = {"管理后台-活动管理-签到红包"})
+    @GetMapping("/getRedPackegeSet")
+    public R<RedPackegeSetDto> getRedPackegeSet(){
+        List<RedPackegeSet> redPackegeSetList = redPackegeSetService.list();
+        RedPackegeSetDto redPackegeSetDto = new RedPackegeSetDto();
+        redPackegeSetDto.setRedPackegeSets(redPackegeSetList);
+        return R.ok(redPackegeSetDto);
+    }
+
+
+    /**
+     * 添加红包配置
+     */
+    @ApiOperation(value = "添加红包配置", tags = {"管理后台-活动管理-签到红包"})
+    @PostMapping("/addRedPackegeSet")
+    @Transactional(rollbackFor = Exception.class)
+    public R<Void> addRedPackegeSet(@RequestBody RedPackegeSetDto redPackegeSets){
+        List<RedPackegeSet> redPackegeSetList = redPackegeSets.getRedPackegeSets();
+        if (hasOverlap(redPackegeSetList)) {
+            return R.fail("时间段存在重叠,请重新配置");
+        }
+        redPackegeSetService.remove(null);
+        redPackegeSetService.saveBatch(redPackegeSetList);
+        return R.ok();
+    }
+
+    /**
+     * 删除红包配置
+     */
+    @ApiOperation(value = "删除红包配置", tags = {"管理后台-活动管理-签到红包"})
+    @GetMapping("/delRedPackegeSet")
+    public R<Void> delRedPackegeSet(){
+        redPackegeSetService.removeById(1);
+        return R.ok();
+    }
+
+    public static 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;
+    }
+
+    public static void main(String[] args) {
+        // 示例数据
+        RedPackegeSet redPackegeSet = new RedPackegeSet();
+        redPackegeSet.setStartTime(LocalDateTime.of(2025, 1, 13, 0, 0));
+        redPackegeSet.setEndTime(LocalDateTime.of(2025, 1, 14, 0, 0));
+
+        RedPackegeSet redPackegeSet2 = new RedPackegeSet();
+        redPackegeSet2.setStartTime(LocalDateTime.of(2025, 1, 13, 0, 0));
+        redPackegeSet2.setEndTime(LocalDateTime.of(2025, 1, 14, 0, 0));
+        List<RedPackegeSet> redPackegeSetList = Arrays.asList(
+                redPackegeSet,redPackegeSet2
+        );
+
+        boolean overlapExists = hasOverlap(redPackegeSetList);
+        System.out.println("是否存在重叠: " + overlapExists);
+    }
+
+
+
+
 }
 

--
Gitblit v1.7.1