修复定时统计不支持录播问题

This commit is contained in:
easonzhu 2025-02-21 11:12:56 +08:00
parent 5606486228
commit 51b8dbe742

View File

@ -32,6 +32,7 @@ import javax.annotation.Resource;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
// admin交互Service // admin交互Service
@ -571,15 +572,13 @@ public class AdminVideoInteractionService {
Set<Integer> videoIds = onlineMap.values().stream().map(OnlineUser::getProductId).collect(Collectors.toSet()); Set<Integer> videoIds = onlineMap.values().stream().map(OnlineUser::getProductId).collect(Collectors.toSet());
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
List<VideoLive> videoLives = videoLiveMapper.selectList(Wrappers.<VideoLive>lambdaQuery().in(VideoLive::getId, videoIds)); List<VideoLive> videoLives = videoLiveMapper.selectList(Wrappers.<VideoLive>lambdaQuery().in(VideoLive::getId, videoIds));
Map<Integer, Integer> videoStatusMap = videoLives.stream().collect(Collectors.toMap(VideoLive::getId, VideoLive::getLiveStatus)); Map<Integer, VideoLive> videoMap = videoLives.stream().collect(Collectors.toMap(VideoLive::getId, Function.identity()));
LocalDateTime time = now.withSecond(0).withNano(0); LocalDateTime time = now.withSecond(0).withNano(0);
LocalDateTime startTime = now.plusMinutes(-1); LocalDateTime startTime = now.plusMinutes(-1);
List<VideoUserFlow> onLineList = onlineUsers.stream().map(user -> { List<VideoUserFlow> onLineList = onlineUsers.stream().map(user -> {
Integer videoId = user.getProductId(); Integer videoId = user.getProductId();
Integer liveStatus = videoStatusMap.get(videoId); VideoLive videoLive = videoMap.get(videoId);
if (liveStatus == null) { Integer liveStatus = videoLive.getLiveStatus();
return null;
}
if (IsOrNot.IS.value.equals(user.getIsOnline()) || (user.getExitTime() != null && user.getExitTime().isAfter(startTime))) { if (IsOrNot.IS.value.equals(user.getIsOnline()) || (user.getExitTime() != null && user.getExitTime().isAfter(startTime))) {
boolean calIsPlay = Objects.equals(VideoLiveStatus.LIVING.value, liveStatus) || Objects.equals(VideoLiveStatus.HAS_ENDED.value, liveStatus); boolean calIsPlay = Objects.equals(VideoLiveStatus.LIVING.value, liveStatus) || Objects.equals(VideoLiveStatus.HAS_ENDED.value, liveStatus);
VideoUserFlow videoUserFlow = new VideoUserFlow(); VideoUserFlow videoUserFlow = new VideoUserFlow();