lyhzzz 2 년 전
부모
커밋
8866b7d550

+ 3 - 2
src/main/java/com/fdkankan/tk/response/UserMsgVo.java

@@ -3,6 +3,7 @@ package com.fdkankan.tk.response;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 @Data
 public class UserMsgVo {
@@ -14,8 +15,8 @@ public class UserMsgVo {
     private Long onlineTime;
     private Date firstInRoomTime;
     private Date lastOutRoomTime;
-    private Long msgCount;
-    private String msg;
+    private Long textCount;
+    private List<String> texts;
 
     private Integer liveId;
 }

+ 38 - 5
src/main/java/com/fdkankan/tk/service/DataCountService.java

@@ -206,12 +206,45 @@ public class DataCountService {
 
         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()) {
-            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);
     }

+ 2 - 0
src/main/java/com/fdkankan/tk/service/IRoomDanmakuService.java

@@ -23,4 +23,6 @@ public interface IRoomDanmakuService extends IService<RoomDanmaku> {
     List<DataCount> getDataCountTop5();
 
     Page<UserMsgVo> pageList(Page<Object> page, String roomId, String startTime, String endTime);
+
+    List<RoomDanmaku> getByRoomId(String roomId);
 }

+ 2 - 0
src/main/java/com/fdkankan/tk/service/IRoomVisitLogService.java

@@ -29,4 +29,6 @@ public interface IRoomVisitLogService extends IService<RoomVisitLog> {
     List<DataCount> getByDGroupRoomId(String tb, String roomId, String startTime, String endTime);
 
     List<DataCount> getGroupByRoomId();
+
+    List<RoomVisitLog> getByRoomId(String roomId);
 }

+ 8 - 0
src/main/java/com/fdkankan/tk/service/impl/RoomDanmakuServiceImpl.java

@@ -4,6 +4,7 @@ import java.util.Date;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.tk.common.util.RoomUtil;
 import com.fdkankan.tk.entity.RoomDanmaku;
@@ -83,4 +84,11 @@ public class RoomDanmakuServiceImpl extends ServiceImpl<IRoomDanmakuMapper, Room
     public Page<UserMsgVo> pageList(Page<Object> page, String roomId, String startTime, String endTime) {
         return this.getBaseMapper().pageList(page,roomId,startTime,endTime);
     }
+
+    @Override
+    public List<RoomDanmaku> getByRoomId(String roomId) {
+        LambdaQueryWrapper<RoomDanmaku> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(RoomDanmaku::getRoomId,roomId);
+        return this.list(wrapper);
+    }
 }

+ 7 - 0
src/main/java/com/fdkankan/tk/service/impl/RoomVisitLogServiceImpl.java

@@ -89,4 +89,11 @@ public class RoomVisitLogServiceImpl extends ServiceImpl<IRoomVisitLogMapper, Ro
     public List<DataCount> getGroupByRoomId() {
         return this.getBaseMapper().getGroupByRoomId();
     }
+
+    @Override
+    public List<RoomVisitLog> getByRoomId(String roomId) {
+        LambdaQueryWrapper<RoomVisitLog> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(RoomVisitLog::getRoomId,roomId);
+        return this.list(wrapper);
+    }
 }