소스 검색

Merge branch 'feature/0803-im' of http://git.dayaedu.com/yonge/cooleshow

zouxuan 1 년 전
부모
커밋
1b74f9acda

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseCoursewareServiceImpl.java

@@ -76,8 +76,18 @@ public class CourseCoursewareServiceImpl extends ServiceImpl<CourseCoursewareDao
             return courseCoursewareVoIPage;
         }
         Map<Long, String> userIdUsernameMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getId, SysUser::getUsername));
+        //获取曲目关联的伴奏
+        List<Long> musicSheetIds = records.stream().map(e -> e.getMusicSheetId()).distinct().collect(Collectors.toList());
+        Map<Long, MusicSheetAccompaniment> accoompanimentMap = musicSheetAccompanimentDao.selectList(
+                        Wrappers.<MusicSheetAccompaniment>lambdaQuery()
+                                .in(MusicSheetAccompaniment::getMusicSheetId, musicSheetIds)).stream()
+                .collect(Collectors.groupingBy(MusicSheetAccompaniment::getMusicSheetId, Collectors.collectingAndThen(Collectors.toList(), e -> e.get(0))));
         for (CourseCoursewareVo record : records) {
             record.setUsername(userIdUsernameMap.get(record.getUserId()));
+            MusicSheetAccompaniment musicSheetAccompaniment = accoompanimentMap.get(record.getMusicSheetId());
+            if (musicSheetAccompaniment != null) {
+                record.setMusicSheetAccompanimentId(musicSheetAccompaniment.getId());
+            }
         }
 
         // 设置原音

+ 20 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/LiveRoomServiceImpl.java

@@ -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)