Procházet zdrojové kódy

演出列表过滤掉status不为1的

zc před 3 měsíci
rodič
revize
2a0afc8806

+ 29 - 1
alien-store/src/main/java/shop/alien/store/service/impl/PerformanceListServiceImpl.java

@@ -146,6 +146,34 @@ public class PerformanceListServiceImpl implements PerformanceListService {
                 .eq(BarPerformance::getReviewStatus, CommonConstant.PERFORMANCE_REVIEW_STATUS_APPROVED)
                 .eq(BarPerformance::getOnlineStatus, CommonConstant.PERFORMANCE_ONLINE_STATUS_ONLINE).eq(BarPerformance::getStatus, 1);
 
+        // 过滤已过期的演出
+        Date now = new Date();
+        // 获取今天的开始时间(00:00:00)
+        java.util.Calendar cal = java.util.Calendar.getInstance();
+        cal.setTime(now);
+        cal.set(java.util.Calendar.HOUR_OF_DAY, 0);
+        cal.set(java.util.Calendar.MINUTE, 0);
+        cal.set(java.util.Calendar.SECOND, 0);
+        cal.set(java.util.Calendar.MILLISECOND, 0);
+        Date todayStart = cal.getTime();
+
+        // 使用and条件,确保至少满足以下条件之一(即未过期):
+        // 1. 单次演出:结束时间 >= 当前时间
+        // 2. 定时演出(每天定时或每周定时):结束日期 > 今天 或 (结束日期 = 今天 AND 结束时间 >= 当前时分秒)
+        queryWrapper.and(wrapper -> {
+            // 单次演出:结束时间 >= 现在
+            wrapper.or(w -> w.eq(BarPerformance::getPerformanceFrequency, "0")
+                    .ge(BarPerformance::getSingleEndDatetime, now));
+            // 定时演出:结束日期 > 今天 或 (结束日期 = 今天 AND 结束时间 >= 当前时分秒)
+            wrapper.or(w -> w.in(BarPerformance::getPerformanceFrequency, "1", "2")
+                    .and(subWrapper -> {
+                        // 结束日期 > 今天
+                        subWrapper.gt(BarPerformance::getDailyEndDate, todayStart)
+                                // 或 (结束日期 = 今天 AND 结束时间 >= 当前时分秒)
+                                .or(subSubWrapper -> subSubWrapper.apply("DATE(daily_end_date) = CURDATE() AND daily_end_time >= TIME(NOW())"));
+                    }));
+        });
+
         // 排序规则:按创建时间降序
         queryWrapper.orderByDesc(BarPerformance::getCreatedTime);
 
@@ -609,7 +637,7 @@ public class PerformanceListServiceImpl implements PerformanceListService {
         cal.set(java.util.Calendar.MILLISECOND, 0);
         Date todayStart = cal.getTime();
 
-        cal.add(java.util.Calendar.DAY_OF_MONTH, 30);
+        cal.add(java.util.Calendar.DAY_OF_MONTH, 365);
         Date futureEnd = cal.getTime();
 
         // 遍历演出,生成日期映射