|
|
@@ -55,6 +55,11 @@ public class PerformanceListServiceImpl implements PerformanceListService {
|
|
|
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy.MM.dd");
|
|
|
|
|
|
/**
|
|
|
+ * 当日演出日期格式化:yyyy.M.d
|
|
|
+ */
|
|
|
+ private static final SimpleDateFormat TODAY_DATE_FORMAT = new SimpleDateFormat("yyyy.M.d");
|
|
|
+
|
|
|
+ /**
|
|
|
* 日期格式化:MM-dd(用于日期标题)
|
|
|
*/
|
|
|
private static final SimpleDateFormat DATE_TITLE_FORMAT = new SimpleDateFormat("MM-dd");
|
|
|
@@ -240,6 +245,7 @@ public class PerformanceListServiceImpl implements PerformanceListService {
|
|
|
vo.setPerformanceName(performance.getPerformanceName());
|
|
|
vo.setPerformancePoster(performance.getPerformancePoster());
|
|
|
vo.setPerformanceType(performance.getPerformanceType());
|
|
|
+ vo.setPerformanceFrequency(performance.getPerformanceFrequency());
|
|
|
|
|
|
// 设置演出者信息(过滤下线演出人员)
|
|
|
vo.setPerformersInfo(buildPerformersInfoFilterOffline(performance.getStaffConfigIds()));
|
|
|
@@ -256,6 +262,9 @@ public class PerformanceListServiceImpl implements PerformanceListService {
|
|
|
// 设置演出人员头像列表(过滤下线演出人员)
|
|
|
vo.setStaffImageList(queryStaffImageListFilterOffline(performance.getStaffConfigIds()));
|
|
|
|
|
|
+ // 设置当日演出时间
|
|
|
+ vo.setTodayPerformanceTime(buildTodayPerformanceTime(performance));
|
|
|
+
|
|
|
return vo;
|
|
|
}
|
|
|
|
|
|
@@ -271,6 +280,7 @@ public class PerformanceListServiceImpl implements PerformanceListService {
|
|
|
vo.setPerformanceName(performance.getPerformanceName());
|
|
|
vo.setPerformancePoster(performance.getPerformancePoster());
|
|
|
vo.setPerformanceType(performance.getPerformanceType());
|
|
|
+ vo.setPerformanceFrequency(performance.getPerformanceFrequency());
|
|
|
|
|
|
// 设置演出者信息(过滤下线演出人员)
|
|
|
vo.setPerformersInfo(buildPerformersInfoFilterOffline(performance.getStaffConfigIds()));
|
|
|
@@ -558,6 +568,97 @@ public class PerformanceListServiceImpl implements PerformanceListService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 构建当日演出时间
|
|
|
+ * <p>
|
|
|
+ * 仅单次演出(performance_frequency=0)且今天与演出时间有重叠时返回,格式:2026.6.3/ 09:00 – 2026.6.6/05:00
|
|
|
+ * 每天定时/每周定时演出已有 scheduleInfo 展示规律时间,不返回此字段
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @param performance 演出信息
|
|
|
+ * @return 当日演出时间,非当日单次演出返回null
|
|
|
+ */
|
|
|
+ private String buildTodayPerformanceTime(BarPerformance performance) {
|
|
|
+ if (performance == null
|
|
|
+ || !CommonConstant.PERFORMANCE_FREQUENCY_SINGLE.equals(performance.getPerformanceFrequency())) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ TodayTimeRange todayTimeRange = getTodayTimeRange();
|
|
|
+// if (!isSinglePerformanceToday(performance, todayTimeRange)) {
|
|
|
+// return null;
|
|
|
+// }
|
|
|
+
|
|
|
+ Date startTime = performance.getSingleStartDatetime();
|
|
|
+ Date endTime = performance.getSingleEndDatetime();
|
|
|
+ if (startTime == null || endTime == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ String startStr = TODAY_DATE_FORMAT.format(startTime) + "/ " + TIME_FORMAT.format(startTime);
|
|
|
+ String endStr = TODAY_DATE_FORMAT.format(endTime) + "/" + TIME_FORMAT.format(endTime);
|
|
|
+ return startStr + " – " + endStr;
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("构建当日演出时间异常,performanceId={},异常信息:{}", performance.getId(), e.getMessage(), e);
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断单次演出是否在今天
|
|
|
+ */
|
|
|
+ private boolean isSinglePerformanceToday(BarPerformance performance, TodayTimeRange todayTimeRange) {
|
|
|
+ Date singleStart = performance.getSingleStartDatetime();
|
|
|
+ Date singleEnd = performance.getSingleEndDatetime();
|
|
|
+ if (singleStart == null || singleEnd == null) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return !singleStart.after(todayTimeRange.getEnd()) && !singleEnd.before(todayTimeRange.getStart());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取今天的时间范围
|
|
|
+ */
|
|
|
+ private TodayTimeRange getTodayTimeRange() {
|
|
|
+ java.util.Calendar cal = java.util.Calendar.getInstance();
|
|
|
+
|
|
|
+ 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();
|
|
|
+
|
|
|
+ cal.set(java.util.Calendar.HOUR_OF_DAY, 23);
|
|
|
+ cal.set(java.util.Calendar.MINUTE, 59);
|
|
|
+ cal.set(java.util.Calendar.SECOND, 59);
|
|
|
+ cal.set(java.util.Calendar.MILLISECOND, 999);
|
|
|
+ Date todayEnd = cal.getTime();
|
|
|
+
|
|
|
+ return new TodayTimeRange(todayStart, todayEnd);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 今天的时间范围
|
|
|
+ */
|
|
|
+ private static class TodayTimeRange {
|
|
|
+ private final Date start;
|
|
|
+ private final Date end;
|
|
|
+
|
|
|
+ TodayTimeRange(Date start, Date end) {
|
|
|
+ this.start = start;
|
|
|
+ this.end = end;
|
|
|
+ }
|
|
|
+
|
|
|
+ Date getStart() {
|
|
|
+ return start;
|
|
|
+ }
|
|
|
+
|
|
|
+ Date getEnd() {
|
|
|
+ return end;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 构建日期范围
|
|
|
*
|
|
|
* @param performance 演出信息
|
|
|
@@ -1024,6 +1125,7 @@ public class PerformanceListServiceImpl implements PerformanceListService {
|
|
|
try {
|
|
|
// 查询演出基本信息
|
|
|
BarPerformance performance = barPerformanceMapper.selectById(id);
|
|
|
+ String todayPerformanceTime = buildTodayPerformanceTime(performance);
|
|
|
if (performance == null) {
|
|
|
log.warn("查询演出详情失败,演出不存在:id={}", id);
|
|
|
return null;
|
|
|
@@ -1045,7 +1147,7 @@ public class PerformanceListServiceImpl implements PerformanceListService {
|
|
|
vo.setPerformancePoster(performance.getPerformancePoster());
|
|
|
vo.setPerformanceType(performance.getPerformanceType());
|
|
|
vo.setPerformanceContent(performance.getPerformanceContent());
|
|
|
-
|
|
|
+ vo.setTodayPerformanceTime(todayPerformanceTime);
|
|
|
// 构建演出时间
|
|
|
vo.setPerformanceTime(buildPerformanceTime(performance));
|
|
|
|