|
@@ -866,11 +866,16 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
|
|
|
if (!roomTotalUser.containsKey(userId)) {
|
|
|
return;
|
|
|
}
|
|
|
+ String userJsonStr = roomTotalUser.get(userId);
|
|
|
+ log.info("opsRoom>>>> userJsonStr {}", userJsonStr);
|
|
|
//查询用户数据
|
|
|
- RoomUserInfoCache userInfo = JSONObject.toJavaObject(JSONObject.parseObject(roomTotalUser.get(userId)), RoomUserInfoCache.class);
|
|
|
- userInfo.setLastOutTime(now);
|
|
|
- String userJsonStr = JSONObject.toJSONString(userInfo);
|
|
|
- roomTotalUser.fastPut(userId, userJsonStr);
|
|
|
+ ImLiveBroadcastRoomMemberWrapper.RoomUserInfoVo userInfo = JSONObject.toJavaObject(JSONObject.parseObject(userJsonStr), ImLiveBroadcastRoomMemberWrapper.RoomUserInfoVo.class);
|
|
|
+ //如果有动态观看时间则证明主播开播过,需要计算当前用户观看时长
|
|
|
+ if (Objects.nonNull(userInfo.getDynamicLookTime())) {
|
|
|
+ userInfo.setTotalViewTime(this.getLookMinutes(userInfo.getDynamicLookTime(), userInfo.getTotalViewTime()));
|
|
|
+ userInfo.setDynamicLookTime(null);
|
|
|
+ }
|
|
|
+ roomTotalUser.fastPut(userId, JSONObject.toJSONString(userInfo));
|
|
|
//查询在线人员列表
|
|
|
RMap<Long, String> onlineUserInfo = this.getOnlineUserCache(roomUid);
|
|
|
if (!onlineUserInfo.isExists()) {
|
|
@@ -923,6 +928,17 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
|
|
|
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算观看时长差-分钟数不满一分钟为0
|
|
|
+ *
|
|
|
+ * @param startDT 开始时间
|
|
|
+ * @param nowMinutes 现在观看时长
|
|
|
+ */
|
|
|
+ private int getLookMinutes(Date startDT, Integer nowMinutes) {
|
|
|
+ return getLookMinutes(startDT, new Date(), nowMinutes);
|
|
|
+ }
|
|
|
+
|
|
|
private LiveRoom getByRoomUid(String roomUid) {
|
|
|
return this.lambdaQuery()
|
|
|
.eq(LiveRoom::getRoomUid, roomUid)
|