RoomResult.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. package com.ym.pojo;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
  5. import com.microsvc.toolkit.middleware.rtc.message.RTCRoomConfig;
  6. import com.ym.mec.biz.dal.entity.CourseScheduleStudentMusicScore;
  7. import io.swagger.annotations.ApiModelProperty;
  8. import lombok.Data;
  9. import lombok.Getter;
  10. import lombok.Setter;
  11. import org.apache.commons.collections.CollectionUtils;
  12. import org.apache.commons.lang3.StringUtils;
  13. import java.util.ArrayList;
  14. import java.util.Date;
  15. import java.util.List;
  16. import java.util.Map;
  17. import java.util.function.Function;
  18. import java.util.stream.Collectors;
  19. /**
  20. * Created by weiqinxiao on 2019/2/28.
  21. */
  22. @Getter
  23. @Setter
  24. public class RoomResult {
  25. private @Getter @Setter String roomId;
  26. //课程结束后是否自动关闭课程
  27. private @Getter @Setter Boolean autoCloseFlag = true;
  28. //课程结束后多少分钟关闭网络教室
  29. private @Getter @Setter String autoCloseNetworkRoomTime;
  30. private @Getter @Setter Date startTime;
  31. private @Getter @Setter int surplusTime;
  32. //伴奏音量
  33. private @Getter @Setter int soundVolume = 100;
  34. private @Getter @Setter String imToken;
  35. private @Getter @Setter String authorization;
  36. private @Getter List<MemberResult> members = new ArrayList<>();
  37. private @Getter @Setter String display;
  38. private @Getter @Setter List<WhiteboardResult> whiteboards = new ArrayList<>();
  39. private @Getter @Setter MemberResult userInfo;
  40. private @Getter @Setter String randomNumeric = "0";
  41. @ApiModelProperty("RTC接入参数")
  42. private @Getter @Setter RTCRoomConfig rtcRoomConfig;
  43. @ApiModelProperty("直播间用户签名")
  44. private @Getter @Setter String userSig;
  45. @ApiModelProperty("群组id")
  46. private @Getter @Setter String groupId;
  47. @ApiModelProperty("服务提供商")
  48. private @Getter @Setter String serviceProvider;
  49. @ApiModelProperty("课程人数")
  50. private @Getter @Setter Integer studentNums;
  51. @ApiModelProperty("直播间编号")
  52. private String liveRoomId;
  53. @ApiModelProperty("声部编号")
  54. private String subjectId;
  55. @ApiModelProperty("os")
  56. private String os;
  57. public RoomResult rtcRoomConfig(RTCRoomConfig rtcRoomConfig) {
  58. this.rtcRoomConfig = rtcRoomConfig;
  59. return this;
  60. }
  61. public RoomResult userSig(String userSig) {
  62. this.userSig = userSig;
  63. return this;
  64. }
  65. public RoomResult subjectId(String subjectId) {
  66. this.subjectId = subjectId;
  67. return this;
  68. }
  69. @Data
  70. public static class MemberResult {
  71. String userId;
  72. String userName;
  73. String headUrl;
  74. int role;
  75. Date joinTime;
  76. boolean camera;
  77. boolean microphone;
  78. boolean handUpOn;
  79. ExamSongDownloadData examSongDownloadJson;
  80. List<CourseScheduleStudentMusicScore> scheduleStudentMusicScores;
  81. CustomMessage playMidiJson;
  82. }
  83. @Data
  84. public static class WhiteboardResult {
  85. String whiteboardId;
  86. String name;
  87. int curPg;
  88. }
  89. public void setMembers(List<RoomMember> roomMemberList, Map<Integer,String> midiMap,Map<Integer,String> examSongMap,List<CourseScheduleStudentMusicScore> scheduleStudentMusicScores) {
  90. for (RoomMember member : roomMemberList) {
  91. MemberResult result = new MemberResult();
  92. result.setUserId(member.getUid());
  93. result.setJoinTime(member.getJoinDt());
  94. result.setRole(member.getRole());
  95. result.setMicrophone(member.isMic());
  96. result.setCamera(member.isCamera());
  97. result.setUserName(member.getName());
  98. result.setHandUpOn(member.isHand());
  99. result.setHeadUrl(member.getHeadUrl());
  100. result.setPlayMidiJson(JSONObject.parseObject(midiMap.get(Integer.parseInt(member.getUid())),CustomMessage.class));
  101. if(CollectionUtils.isNotEmpty(scheduleStudentMusicScores)){
  102. result.setScheduleStudentMusicScores(scheduleStudentMusicScores.stream()
  103. .filter(e->e.getUserId().equals(Integer.parseInt(result.getUserId()))).collect(Collectors.toList()));
  104. }
  105. ExamSongDownloadData examSongDownloadData;
  106. String json = examSongMap.get(Integer.parseInt(member.getUid()));
  107. if(StringUtils.isEmpty(json)){
  108. examSongDownloadData = new ExamSongDownloadData();
  109. }else {
  110. examSongDownloadData = JSON.parseObject(json,ExamSongDownloadData.class);
  111. }
  112. result.setExamSongDownloadJson(examSongDownloadData);
  113. members.add(result);
  114. }
  115. }
  116. public void setWhiteboards(List<Whiteboard> whiteboardList) {
  117. for (Whiteboard wb : whiteboardList) {
  118. WhiteboardResult r = new WhiteboardResult();
  119. r.setName(wb.getName());
  120. r.setWhiteboardId(wb.getWbid());
  121. r.setCurPg(wb.getCurPg());
  122. whiteboards.add(r);
  123. }
  124. }
  125. }