|
@@ -206,12 +206,45 @@ public class DataCountService {
|
|
|
|
|
|
Page<UserMsgVo> page = roomDanmakuService.pageList(new Page<>(pageNum,pageSize) ,roomId,startTime,endTime);
|
|
Page<UserMsgVo> page = roomDanmakuService.pageList(new Page<>(pageNum,pageSize) ,roomId,startTime,endTime);
|
|
|
|
|
|
|
|
+ HashMap<String,List<RoomVisitLog>> roomVisitLogsMap = new HashMap<>();
|
|
|
|
+ HashMap<String,List<RoomDanmaku>> danmakusMap = new HashMap<>();
|
|
|
|
+
|
|
for (UserMsgVo record : page.getRecords()) {
|
|
for (UserMsgVo record : page.getRecords()) {
|
|
- record.setOnlineTime(0L);
|
|
|
|
- record.setFirstInRoomTime(new Date());
|
|
|
|
- record.setLastOutRoomTime(new Date());
|
|
|
|
- record.setMsgCount(0L);
|
|
|
|
- record.setMsg("");
|
|
|
|
|
|
+ List<RoomVisitLog> roomVisitLogs = roomVisitLogsMap.get(record.getRoomId());
|
|
|
|
+ if(roomVisitLogs == null){
|
|
|
|
+ roomVisitLogs = roomVisitLogService.getByRoomId(record.getRoomId());
|
|
|
|
+ roomVisitLogsMap.put(record.getRoomId(),roomVisitLogs);
|
|
|
|
+ }
|
|
|
|
+ Long time = 0L;
|
|
|
|
+ Date firstOutTime = null;
|
|
|
|
+ Date endOutTime = null;
|
|
|
|
+ for (RoomVisitLog roomVisitLog : roomVisitLogs) {
|
|
|
|
+ if(roomVisitLog.getOutRoomTime() == null || roomVisitLog.getInRoomTime() == null){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ if(firstOutTime == null){
|
|
|
|
+ firstOutTime = roomVisitLog.getInRoomTime();
|
|
|
|
+ }else {
|
|
|
|
+ firstOutTime = firstOutTime.getTime() <= roomVisitLog.getInRoomTime().getTime() ? firstOutTime : roomVisitLog.getInRoomTime();
|
|
|
|
+ }
|
|
|
|
+ if(endOutTime == null){
|
|
|
|
+ endOutTime = roomVisitLog.getOutRoomTime();
|
|
|
|
+ }else {
|
|
|
|
+ endOutTime = endOutTime.getTime() >= roomVisitLog.getOutRoomTime().getTime() ? endOutTime : roomVisitLog.getOutRoomTime();
|
|
|
|
+ }
|
|
|
|
+ time += (roomVisitLog.getOutRoomTime().getTime() - roomVisitLog.getInRoomTime().getTime());
|
|
|
|
+ }
|
|
|
|
+ List<RoomDanmaku> danmakus = danmakusMap.get(record.getRoomId());
|
|
|
|
+ if(danmakus == null){
|
|
|
|
+ danmakus = roomDanmakuService.getByRoomId(record.getRoomId());
|
|
|
|
+ danmakusMap.put(record.getRoomId(),danmakus);
|
|
|
|
+ }
|
|
|
|
+ List<String> collect = danmakus.stream().map(RoomDanmaku::getText).collect(Collectors.toList());
|
|
|
|
+ record.setOnlineTime(time/1000/60);
|
|
|
|
+ record.setFirstInRoomTime(firstOutTime);
|
|
|
|
+ record.setLastOutRoomTime(endOutTime);
|
|
|
|
+ record.setTextCount(Long.valueOf(danmakus.size()));
|
|
|
|
+ record.setTexts(collect);
|
|
}
|
|
}
|
|
return PageInfo.PageInfo(page);
|
|
return PageInfo.PageInfo(page);
|
|
}
|
|
}
|