3 Commits 23e5831c6f ... a0305ddca9

Author SHA1 Message Date
  dujian a0305ddca9 Merge remote-tracking branch 'origin/sit' into uat-20260202 6 days ago
  刘云鑫 495e8e0c64 bugfix:演出加字段 6 days ago
  zhangchen c9c8dec360 演出新增字段,当为单次演出的时候,返回新的字段 6 days ago

+ 7 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/PerformanceDetailVo.java

@@ -81,5 +81,12 @@ public class PerformanceDetailVo implements Serializable {
      */
     @ApiModelProperty(value = "演出图片")
     private String performanceDetail;
+
+    /**
+     * 当日演出时间(格式:2026.6.3/ 09:00 – 2026.6.6/05:00)
+     * 仅单次演出(performance_frequency=0)且今天与演出时间有重叠时有值
+     */
+    @ApiModelProperty(value = "当日演出时间(格式:2026.6.3/ 09:00 – 2026.6.6/05:00),仅单次演出且今天有演出时有值")
+    private String todayPerformanceTime;
 }
 

+ 13 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/PerformanceListVo.java

@@ -65,6 +65,12 @@ public class PerformanceListVo implements Serializable {
     private Integer performanceType;
 
     /**
+     * 演出频次(0-单次,1-每天定时,2-每周定时)
+     */
+    @ApiModelProperty(value = "演出频次(0-单次,1-每天定时,2-每周定时)")
+    private String performanceFrequency;
+
+    /**
      * 演出风格(字典表proficient_tag的dict_id,逗号分隔)
      */
     @ApiModelProperty(value = "演出风格(字典表proficient_tag的dict_id,逗号分隔)")
@@ -75,5 +81,12 @@ public class PerformanceListVo implements Serializable {
      */
     @ApiModelProperty(value = "演出人员头像列表(从store_staff_config表的staff_image字段获取)")
     private List<String> staffImageList;
+
+    /**
+     * 当日演出时间(格式:2026.6.3/ 09:00 – 2026.6.6/05:00)
+     * 仅单次演出(performance_frequency=0)且今天与演出时间有重叠时有值
+     */
+    @ApiModelProperty(value = "当日演出时间(格式:2026.6.3/ 09:00 – 2026.6.6/05:00),仅单次演出且今天有演出时有值")
+    private String todayPerformanceTime;
 }
 

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

@@ -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));