| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | 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(); |
| | |
| | | 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; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |