Browse Source

优化人员观看时长统计

hgw 3 years ago
parent
commit
d9e98d947b

+ 8 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -473,6 +473,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
 
     //获取该直播间所有数据写入数据库-并清理缓存
     private void insertAndCleanLiveData(String roomUid, Integer speakerId) {
+        log.info("insertAndCleanLiveData >>>> roomUid : {}", roomUid);
         Date now = new Date();
         //总观看人数
         List<ImLiveBroadcastRoomMember> memberList = new ArrayList<>();
@@ -507,6 +508,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         if (speakerCache.isExists()) {
             ImLiveBroadcastRoomData liveData = new ImLiveBroadcastRoomData();
             RoomSpeakerInfo speakerInfo = speakerCache.get();
+            log.info("insertAndCleanLiveData >>>> speakerInfo : {}", JSONObject.toJSONString(speakerInfo));
             liveData.setTenantId(speakerInfo.getTenantId());
             liveData.setRoomUid(roomUid);
             liveData.setLikeNum(like);
@@ -1191,17 +1193,20 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
      * @param nowMinutes 现在观看时长
      */
     private int getLookMinutes(Date startDT, Date endDT, Integer nowMinutes) {
+        if (Objects.isNull(nowMinutes)) {
+            nowMinutes = 0;
+        }
         if (Objects.isNull(startDT)) {
-            return 0;
+            return nowMinutes;
         }
         if (startDT.getTime() > endDT.getTime()) {
-            return 0;
+            return nowMinutes;
         }
         //课程结束时间-课程开始时间
         long durationTime = endDT.getTime() - startDT.getTime();
         //相差多少分钟
         int minutesBetween = new Long(durationTime / 1000 / 60).intValue();
-        minutesBetween += Objects.isNull(nowMinutes) ? 0 : nowMinutes;
+        minutesBetween += nowMinutes;
         return Math.max(minutesBetween, 0);
     }