Browse Source

房间留言,在线时长

lyhzzz 2 years ago
parent
commit
00f69d70cf

+ 28 - 24
src/main/java/com/fdkankan/tk/service/DataCountService.java

@@ -232,32 +232,14 @@ public class DataCountService {
                 });
             }
             List<RoomVisitLog> roomLives = roomVisitLogService.getByRoomId(record.getRoomId());
-            Long minute = 0L;
-            HashMap<Long,Long> dateMap = new HashMap<>();
-            for (RoomVisitLog roomLive : roomLives) {
-                Date overTime = roomLive.getOutRoomTime();
-                if(overTime == null){
-                    continue;
-                }
-                if(dateMap.get(overTime.getTime()) == null){
-                    dateMap.put(overTime.getTime(),roomLive.getInRoomTime().getTime());
-                }else {
-                    if(roomLive.getInRoomTime().getTime() < dateMap.get(overTime.getTime())){
-                        dateMap.put(overTime.getTime(),roomLive.getInRoomTime().getTime());
-                    }
-                }
-
-            }
-            for (Long key : dateMap.keySet()) {
-                minute +=  (key - dateMap.get(key)) /1000/60;
-            }
+            Long roomTime = getRoomTime(roomLives);
 
             RoomListDataVo roomListDataVo = new RoomListDataVo();
             roomListDataVo.setRoomTitle(record.getRoomTitle());
             roomListDataVo.setSceneNameList(sceneTileList);
             roomListDataVo.setCreateTime(record.getCreateTime());
             roomListDataVo.setRoomStatus(record.getRoomStatus());
-            roomListDataVo.setLookTime(minute);
+            roomListDataVo.setLookTime(roomTime);
             roomListDataVo.setLookManCount(record.getRoomViewCount());
             roomListDataVo.setShareCount(record.getShareCount());
             voList.add(roomListDataVo);
@@ -284,16 +266,38 @@ public class DataCountService {
                 danmakusMap.put(record.getRoomId()+record.getWxUserId(),danmakus);
             }
             List<String> collect = danmakus.stream().map(RoomDanmaku::getText).collect(Collectors.toList());
-            if(record.getFirstInRoomTime() != null && record.getLastOutRoomTime()!=null){
-                Long time = DateUtil.between(record.getFirstInRoomTime(),record.getLastOutRoomTime(),DateUnit.MINUTE);
-                record.setOnlineTime(time);
-            }
             record.setTextCount(Long.valueOf(danmakus.size()));
             record.setTexts(collect);
+
+            List<RoomVisitLog> logs  = roomVisitLogService.getByRoomIdAndUerId(record.getRoomId(),record.getWxUserId());
+            Long roomTime = getRoomTime(logs);
+            record.setOnlineTime(roomTime);
         }
         return page;
     }
 
 
+    private  Long getRoomTime(List<RoomVisitLog> logs){
+        Long minute = 0L;
+        HashMap<Long,Long> dateMap = new HashMap<>();
+        for (RoomVisitLog roomLive : logs) {
+            Date overTime = roomLive.getOutRoomTime();
+            if(overTime == null){
+                continue;
+            }
+            if(dateMap.get(overTime.getTime()) == null){
+                dateMap.put(overTime.getTime(),roomLive.getInRoomTime().getTime());
+            }else {
+                if(roomLive.getInRoomTime().getTime() < dateMap.get(overTime.getTime())){
+                    dateMap.put(overTime.getTime(),roomLive.getInRoomTime().getTime());
+                }
+            }
+
+        }
+        for (Long key : dateMap.keySet()) {
+            minute +=  (key - dateMap.get(key)) /1000/60;
+        }
+        return minute;
+    }
 
 }

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

@@ -34,4 +34,6 @@ public interface IRoomVisitLogService extends IService<RoomVisitLog> {
     List<RoomVisitLog> getByRoomId(String roomId);
 
     List<DataCount> getDataCountTop5(List<String> roomIds);
+
+    List<RoomVisitLog> getByRoomIdAndUerId(String roomId, String wxUserId);
 }

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

@@ -112,6 +112,16 @@ public class RoomVisitLogServiceImpl extends ServiceImpl<IRoomVisitLogMapper, Ro
     }
 
     @Override
+    public List<RoomVisitLog> getByRoomIdAndUerId(String roomId, String wxUserId) {
+        LambdaQueryWrapper<RoomVisitLog> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(RoomVisitLog::getRoomId,roomId);
+        wrapper.eq(RoomVisitLog::getIsHost,1);
+        wrapper.eq(RoomVisitLog::getVisitUserId,wxUserId);
+        wrapper.isNotNull(RoomVisitLog::getOutRoomTime);
+        return this.list(wrapper);
+    }
+
+    @Override
     public List<DataCount> getDataCountTop5(List<String> roomIds) {
         return this.getBaseMapper().getDataCountTop5(roomIds);
     }

+ 0 - 1
src/main/resources/mapper/tk/RoomDanmakuMapper.xml

@@ -18,7 +18,6 @@
         select rd.room_id,rd.user_id as wxUserId,rd.nick_name ,r.room_title,wx.phone_number,
         ( SELECT min(in_room_time) FROM t_room_visit_log WHERE room_id = rd.room_id and visit_user_id = rd.user_id) as firstInRoomTime,
         ( SELECT max(out_room_time) FROM t_room_visit_log WHERE room_id = rd.room_id and visit_user_id = rd.user_id) as lastOutRoomTime
-
         from t_room_danmaku rd
         LEFT JOIN t_room r  on rd.room_id = r.room_id
         LEFT JOIN t_wx_user wx  on rd.user_id = wx.wx_user_id