正在显示
6 个修改的文件
包含
990 行增加
和
893 行删除
| @@ -60,10 +60,10 @@ export default class MessageEntrance extends Emiter { | @@ -60,10 +60,10 @@ export default class MessageEntrance extends Emiter { | ||
| 60 | this.sdkInfo = _sdkInfo; | 60 | this.sdkInfo = _sdkInfo; |
| 61 | loger.warn(this.sdkInfo); | 61 | loger.warn(this.sdkInfo); |
| 62 | //检查是否是移动端 | 62 | //检查是否是移动端 |
| 63 | - GlobalConfig.isMobile=mdetect.isMobileUA(); | ||
| 64 | - if( GlobalConfig.isMobile){ | 63 | + GlobalConfig.isMobile = mdetect.isMobileUA(); |
| 64 | + if (GlobalConfig.isMobile) { | ||
| 65 | loger.warn("当前设备是移动设备"); | 65 | loger.warn("当前设备是移动设备"); |
| 66 | - }else { | 66 | + } else { |
| 67 | loger.warn("当前设备是PC"); | 67 | loger.warn("当前设备是PC"); |
| 68 | } | 68 | } |
| 69 | 69 | ||
| @@ -89,6 +89,7 @@ export default class MessageEntrance extends Emiter { | @@ -89,6 +89,7 @@ export default class MessageEntrance extends Emiter { | ||
| 89 | _sass.on(_sass.CLASS_SAVE_RECORD_INFO_SUCCESS, this._sassSaveClassRecordInfoSuccessHandler.bind(this)); //保存课堂录制信息 | 89 | _sass.on(_sass.CLASS_SAVE_RECORD_INFO_SUCCESS, this._sassSaveClassRecordInfoSuccessHandler.bind(this)); //保存课堂录制信息 |
| 90 | _sass.on(_sass.DELETE_DOCUMENT_SUCCESS, this._sassDeleteDocumentSuccess.bind(this)); //sass删除文档成功 | 90 | _sass.on(_sass.DELETE_DOCUMENT_SUCCESS, this._sassDeleteDocumentSuccess.bind(this)); //sass删除文档成功 |
| 91 | _sass.on(_sass.DELETE_MEDIASHARE_SUCCESS, this._sassDeleteMediaShareSuccess.bind(this)); //sass删除媒体文件成功 | 91 | _sass.on(_sass.DELETE_MEDIASHARE_SUCCESS, this._sassDeleteMediaShareSuccess.bind(this)); //sass删除媒体文件成功 |
| 92 | + _sass.on(_sass.DELETE_MUSICSHARE_SUCCESS, this._sassDeleteMusicShareSuccess.bind(this)); //sass删除MUSIC文件成功 | ||
| 92 | 93 | ||
| 93 | //选点模块 | 94 | //选点模块 |
| 94 | _ipManager = new IpManager(); | 95 | _ipManager = new IpManager(); |
| @@ -234,6 +235,10 @@ export default class MessageEntrance extends Emiter { | @@ -234,6 +235,10 @@ export default class MessageEntrance extends Emiter { | ||
| 234 | this.mediaSharedStop = this._sendMediaSharedStop.bind(this); //停止 | 235 | this.mediaSharedStop = this._sendMediaSharedStop.bind(this); //停止 |
| 235 | this.mediaSharedUpdate = this._sendMediaSharedUpdate.bind(this); //更新媒体的状态 | 236 | this.mediaSharedUpdate = this._sendMediaSharedUpdate.bind(this); //更新媒体的状态 |
| 236 | 237 | ||
| 238 | + //音频共享模块 | ||
| 239 | + this.musicSharedUpload = this._sendMusicSharedUpload.bind(this); //上传 | ||
| 240 | + this.musicSharedDelete = this._sassDeletMusicShare.bind(this); //删除,先通过Sass删除,删除成功之后才删除MCU的 | ||
| 241 | + | ||
| 237 | this.musicSharedPlay = this._sendMusicSharedPlay.bind(this); //Music播放 | 242 | this.musicSharedPlay = this._sendMusicSharedPlay.bind(this); //Music播放 |
| 238 | this.musicSharedStop = this._sendMusicSharedStop.bind(this); //Music停止 | 243 | this.musicSharedStop = this._sendMusicSharedStop.bind(this); //Music停止 |
| 239 | this.musicSharedUpdate = this._sendMusicSharedUpdate.bind(this); //Music更新媒体的状态 | 244 | this.musicSharedUpdate = this._sendMusicSharedUpdate.bind(this); //Music更新媒体的状态 |
| @@ -720,10 +725,10 @@ export default class MessageEntrance extends Emiter { | @@ -720,10 +725,10 @@ export default class MessageEntrance extends Emiter { | ||
| 720 | loger.log('加入课堂->.'); | 725 | loger.log('加入课堂->.'); |
| 721 | loger.warn("课堂服务信息->"); | 726 | loger.warn("课堂服务信息->"); |
| 722 | 727 | ||
| 723 | - loger.warn('MCU服务器地址->mcu->',GlobalConfig.MCUServerIP, GlobalConfig.MCUServerPort); | 728 | + loger.warn('MCU服务器地址->mcu->', GlobalConfig.MCUServerIP, GlobalConfig.MCUServerPort); |
| 724 | loger.warn('推流地址->MS->', GlobalConfig.MS_PUBLISH_IP, GlobalConfig.MS_PUBLISH_PORT); | 729 | loger.warn('推流地址->MS->', GlobalConfig.MS_PUBLISH_IP, GlobalConfig.MS_PUBLISH_PORT); |
| 725 | - loger.warn('RTMP播流地址->RTMP->',GlobalConfig.MS_PLAY_RTMP_IP, GlobalConfig.MS_PLAY_RTMP_PORT); | ||
| 726 | - loger.warn('HLS播流地址->HLS->',GlobalConfig.MS_PLAY_HLS_IP, GlobalConfig.MS_PLAY_HLS_PORT); | 730 | + loger.warn('RTMP播流地址->RTMP->', GlobalConfig.MS_PLAY_RTMP_IP, GlobalConfig.MS_PLAY_RTMP_PORT); |
| 731 | + loger.warn('HLS播流地址->HLS->', GlobalConfig.MS_PLAY_HLS_IP, GlobalConfig.MS_PLAY_HLS_PORT); | ||
| 727 | 732 | ||
| 728 | if (_mcu) { | 733 | if (_mcu) { |
| 729 | _mcu.joinMCU(GlobalConfig.getClassInfo()); | 734 | _mcu.joinMCU(GlobalConfig.getClassInfo()); |
| @@ -800,7 +805,7 @@ export default class MessageEntrance extends Emiter { | @@ -800,7 +805,7 @@ export default class MessageEntrance extends Emiter { | ||
| 800 | 805 | ||
| 801 | joinClassSuccessCallBackData.ssTunnelAppURL = GlobalConfig.ssTunnelAppURL; | 806 | joinClassSuccessCallBackData.ssTunnelAppURL = GlobalConfig.ssTunnelAppURL; |
| 802 | joinClassSuccessCallBackData.currentSceneTableId = GlobalConfig.currentSceneTableId; //文档区域的模块显示 | 807 | joinClassSuccessCallBackData.currentSceneTableId = GlobalConfig.currentSceneTableId; //文档区域的模块显示 |
| 803 | - joinClassSuccessCallBackData.serverAndLoacTimeDistanc=GlobalConfig.serverAndLoacTimeDistanc; | 808 | + joinClassSuccessCallBackData.serverAndLoacTimeDistanc = GlobalConfig.serverAndLoacTimeDistanc; |
| 804 | loger.log('加入课堂成功->'); | 809 | loger.log('加入课堂成功->'); |
| 805 | loger.log(joinClassSuccessCallBackData); | 810 | loger.log(joinClassSuccessCallBackData); |
| 806 | 811 | ||
| @@ -946,11 +951,17 @@ export default class MessageEntrance extends Emiter { | @@ -946,11 +951,17 @@ export default class MessageEntrance extends Emiter { | ||
| 946 | loger.log('删除文档成功->', _param); | 951 | loger.log('删除文档成功->', _param); |
| 947 | this._sendDocumentDelete(_param); | 952 | this._sendDocumentDelete(_param); |
| 948 | } | 953 | } |
| 954 | + | ||
| 949 | _sassDeleteMediaShareSuccess(_param) { | 955 | _sassDeleteMediaShareSuccess(_param) { |
| 950 | loger.log('删除媒体文件成功->', _param); | 956 | loger.log('删除媒体文件成功->', _param); |
| 951 | this._sendMediaSharedDelete(_param); | 957 | this._sendMediaSharedDelete(_param); |
| 952 | } | 958 | } |
| 953 | 959 | ||
| 960 | + _sassDeleteMusicShareSuccess(_param) { | ||
| 961 | + loger.log('删除Music文件成功->', _param); | ||
| 962 | + this._sendMusicSharedDelete(_param); | ||
| 963 | + } | ||
| 964 | + | ||
| 954 | //ConferApe | 965 | //ConferApe |
| 955 | //开始上课 | 966 | //开始上课 |
| 956 | _sendStartClass(_param) { | 967 | _sendStartClass(_param) { |
| @@ -1093,181 +1104,181 @@ export default class MessageEntrance extends Emiter { | @@ -1093,181 +1104,181 @@ export default class MessageEntrance extends Emiter { | ||
| 1093 | 1104 | ||
| 1094 | //获取课堂所有参数 api/meeting/detail.do? flash中的接口文件是 getClassParam.do | 1105 | //获取课堂所有参数 api/meeting/detail.do? flash中的接口文件是 getClassParam.do |
| 1095 | _sassGetClassParamSuccessHandler(_data) { | 1106 | _sassGetClassParamSuccessHandler(_data) { |
| 1096 | - loger.log('获取课堂课堂信息完成.'); | ||
| 1097 | - //包含整个课堂最全的信息,储存数据 | ||
| 1098 | - if (_data) { | ||
| 1099 | - GlobalConfig.mcuDelay = _data.h5Delay || 0; //mcu消息延迟的时间间隔,单位(秒),结合客户端传的messageDelay的值使用 | ||
| 1100 | - GlobalConfig.className = _data.meetingName || ""; | ||
| 1101 | - GlobalConfig.classBeginTime = _data.beginTime || ""; | ||
| 1102 | - GlobalConfig.classEndTime = _data.endTime || ""; | ||
| 1103 | - GlobalConfig.userIp = _data.userIp || ""; | ||
| 1104 | - | ||
| 1105 | - GlobalConfig.maxVideoChannels = _data.maxVideoChannels; | ||
| 1106 | - GlobalConfig.maxAudioChannels = _data.maxAudioChannels; | ||
| 1107 | - GlobalConfig.maxMediaChannels = Math.max(GlobalConfig.maxVideoChannels, GlobalConfig.maxAudioChannels); | ||
| 1108 | - | ||
| 1109 | - GlobalConfig.ssTunnelAppURL = _data.ssTunnelAppURL || ''; //屏幕共享插件的地址 | ||
| 1110 | - | ||
| 1111 | - //视频质量相关设置,每次加入课堂都按最新的获取设置 | ||
| 1112 | - GlobalConfig.fps = _data.fps || 15; | ||
| 1113 | - GlobalConfig.gop = _data.gop || 3; | ||
| 1114 | - GlobalConfig.videoQuality = parseInt(_data.videoQuality); | ||
| 1115 | - GlobalConfig.curVideoQuality = GlobalConfig.videoQuality; | ||
| 1116 | - | ||
| 1117 | - //是否自动开始(身份是host的时候才用到的) | ||
| 1118 | - GlobalConfig.isAutoStartClass = _data.autoRecord || 0; | ||
| 1119 | - | ||
| 1120 | - GlobalConfig.serverTime = _data.serverTime || new Date().getTime(); //获取服务器时间戳 | ||
| 1121 | - GlobalConfig.serverAndLoacTimeDistanc = (new Date().getTime() - GlobalConfig.serverTime) / 1000; //当前系统时间和服务器时间的差值 (秒) | ||
| 1122 | - loger.warn("服务器时间:" + GlobalConfig.serverTime + " 系统时间:" + new Date().getTime() + " 时间差:" + GlobalConfig.serverAndLoacTimeDistanc); | ||
| 1123 | - | ||
| 1124 | - GlobalConfig.setDocListPrepare(_data.docListPrepare); //提前上传的文档列表 | ||
| 1125 | - GlobalConfig.setRecordList(_data.recordList); //录制回放地址 | ||
| 1126 | - GlobalConfig.setDocList(_data.docList); //文档地址 | ||
| 1127 | - GlobalConfig.setMsList(_data.msList); //推流播流服务器地址(需要对列表中的地址进行分类,里面包含了推流和拉流的地址,目前主要是乐视的需要区分开) | ||
| 1128 | - GlobalConfig.setRsList(_data.rsList); //播放m3u8格式的地址(录制回放时使用) | ||
| 1129 | - GlobalConfig.setMcuList(_data.mcuList); //mcu | ||
| 1130 | - GlobalConfig.setMusicList(_data.musicList); // | ||
| 1131 | - GlobalConfig.setMusicListPrepare(_data.musicListPrepare); //提前上传的声音文件列表 | ||
| 1132 | - GlobalConfig.setVideoCDNAddr(_data.videoCDNAddr); //cdn加速的拉流地址,直播的时候才使用 | ||
| 1133 | - GlobalConfig.setMediaShareList(_data.sharedMediaList); //提前上传的媒体共享文件列表 | ||
| 1134 | - | ||
| 1135 | - //MCU地址 | ||
| 1136 | - if (_data.mcuList && _data.mcuList.length > 0) { | ||
| 1137 | - //随机选择一个 | ||
| 1138 | - let index = parseInt(Math.random() * _data.mcuList.length); | ||
| 1139 | - GlobalConfig.MCUServerIP = _data.mcuList[index].ip || ""; | ||
| 1140 | - GlobalConfig.MCUServerPort = _data.mcuList[index].port || ""; | ||
| 1141 | - loger.log('初始->MCU->.', GlobalConfig.MCUServerIP, GlobalConfig.MCUServerPort); | ||
| 1142 | - } | 1107 | + loger.log('获取课堂课堂信息完成.'); |
| 1108 | + //包含整个课堂最全的信息,储存数据 | ||
| 1109 | + if (_data) { | ||
| 1110 | + GlobalConfig.mcuDelay = _data.h5Delay || 0; //mcu消息延迟的时间间隔,单位(秒),结合客户端传的messageDelay的值使用 | ||
| 1111 | + GlobalConfig.className = _data.meetingName || ""; | ||
| 1112 | + GlobalConfig.classBeginTime = _data.beginTime || ""; | ||
| 1113 | + GlobalConfig.classEndTime = _data.endTime || ""; | ||
| 1114 | + GlobalConfig.userIp = _data.userIp || ""; | ||
| 1143 | 1115 | ||
| 1144 | - //录制回放时m3u8播流地址 | ||
| 1145 | - if (_data.rsList && _data.rsList.length > 0) { | ||
| 1146 | - let index = parseInt(Math.random() * _data.rsList.length); | ||
| 1147 | - GlobalConfig.RS_RECORD_PLAY_IP = _data.rsList[index].ip || ""; | ||
| 1148 | - GlobalConfig.RS_RECORD_PLAY_PORT = _data.rsList[index].port || ""; | ||
| 1149 | - loger.log('初始->RS->.', GlobalConfig.RS_RECORD_PLAY_IP, GlobalConfig.RS_RECORD_PLAY_PORT); | ||
| 1150 | - } | 1116 | + GlobalConfig.maxVideoChannels = _data.maxVideoChannels; |
| 1117 | + GlobalConfig.maxAudioChannels = _data.maxAudioChannels; | ||
| 1118 | + GlobalConfig.maxMediaChannels = Math.max(GlobalConfig.maxVideoChannels, GlobalConfig.maxAudioChannels); | ||
| 1151 | 1119 | ||
| 1152 | - //上课中音视频推流地址 | ||
| 1153 | - if (GlobalConfig.msList && GlobalConfig.msList.length > 0) { | ||
| 1154 | - let index = parseInt(Math.random() * GlobalConfig.msList.length); | ||
| 1155 | - GlobalConfig.MS_PUBLISH_IP = GlobalConfig.msList[index].ip || ""; | ||
| 1156 | - GlobalConfig.MS_PUBLISH_PORT = GlobalConfig.msList[index].port || ""; | ||
| 1157 | - } | ||
| 1158 | - loger.log('初始->MS->.', GlobalConfig.MS_PUBLISH_IP, GlobalConfig.MS_PUBLISH_PORT); | ||
| 1159 | - | ||
| 1160 | - //播流的地址和推流地址需要分开的时候,单独设置拉流的地址 rtmp(目前乐视使用) | ||
| 1161 | - if (GlobalConfig.pullRtmpList && GlobalConfig.pullRtmpList.length > 0) { | ||
| 1162 | - //有单独的rtmp拉流地址 | ||
| 1163 | - let index = parseInt(Math.random() * GlobalConfig.pullRtmpList.length); | ||
| 1164 | - GlobalConfig.MS_PLAY_RTMP_IP = GlobalConfig.pullRtmpList[index].ip || ""; | ||
| 1165 | - GlobalConfig.MS_PLAY_RTMP_PORT = GlobalConfig.pullRtmpList[index].port || ""; | ||
| 1166 | - } else { | ||
| 1167 | - //如果没有单独的rtmp拉流地址,和推流地址一样即可 | ||
| 1168 | - GlobalConfig.MS_PLAY_RTMP_IP = GlobalConfig.MS_PUBLISH_IP; | ||
| 1169 | - GlobalConfig.MS_PLAY_RTMP_PORT = GlobalConfig.MS_PUBLISH_PORT; | ||
| 1170 | - } | 1120 | + GlobalConfig.ssTunnelAppURL = _data.ssTunnelAppURL || ''; //屏幕共享插件的地址 |
| 1171 | 1121 | ||
| 1172 | - loger.log('初始->MSPull->.', GlobalConfig.MS_PLAY_RTMP_IP, GlobalConfig.MS_PLAY_RTMP_PORT); | 1122 | + //视频质量相关设置,每次加入课堂都按最新的获取设置 |
| 1123 | + GlobalConfig.fps = _data.fps || 15; | ||
| 1124 | + GlobalConfig.gop = _data.gop || 3; | ||
| 1125 | + GlobalConfig.videoQuality = parseInt(_data.videoQuality); | ||
| 1126 | + GlobalConfig.curVideoQuality = GlobalConfig.videoQuality; | ||
| 1127 | + | ||
| 1128 | + //是否自动开始(身份是host的时候才用到的) | ||
| 1129 | + GlobalConfig.isAutoStartClass = _data.autoRecord || 0; | ||
| 1130 | + | ||
| 1131 | + GlobalConfig.serverTime = _data.serverTime || new Date().getTime(); //获取服务器时间戳 | ||
| 1132 | + GlobalConfig.serverAndLoacTimeDistanc = (new Date().getTime() - GlobalConfig.serverTime) / 1000; //当前系统时间和服务器时间的差值 (秒) | ||
| 1133 | + loger.warn("服务器时间:" + GlobalConfig.serverTime + " 系统时间:" + new Date().getTime() + " 时间差:" + GlobalConfig.serverAndLoacTimeDistanc); | ||
| 1134 | + | ||
| 1135 | + GlobalConfig.setDocListPrepare(_data.docListPrepare); //提前上传的文档列表 | ||
| 1136 | + GlobalConfig.setRecordList(_data.recordList); //录制回放地址 | ||
| 1137 | + GlobalConfig.setDocList(_data.docList); //文档地址 | ||
| 1138 | + GlobalConfig.setMsList(_data.msList); //推流播流服务器地址(需要对列表中的地址进行分类,里面包含了推流和拉流的地址,目前主要是乐视的需要区分开) | ||
| 1139 | + GlobalConfig.setRsList(_data.rsList); //播放m3u8格式的地址(录制回放时使用) | ||
| 1140 | + GlobalConfig.setMcuList(_data.mcuList); //mcu | ||
| 1141 | + GlobalConfig.setMusicList(_data.musicList); // | ||
| 1142 | + GlobalConfig.setMusicListPrepare(_data.musicListPrepare); //提前上传的声音文件列表 | ||
| 1143 | + GlobalConfig.setVideoCDNAddr(_data.videoCDNAddr); //cdn加速的拉流地址,直播的时候才使用 | ||
| 1144 | + GlobalConfig.setMediaShareList(_data.sharedMediaList); //提前上传的媒体共享文件列表 | ||
| 1145 | + | ||
| 1146 | + //MCU地址 | ||
| 1147 | + if (_data.mcuList && _data.mcuList.length > 0) { | ||
| 1148 | + //随机选择一个 | ||
| 1149 | + let index = parseInt(Math.random() * _data.mcuList.length); | ||
| 1150 | + GlobalConfig.MCUServerIP = _data.mcuList[index].ip || ""; | ||
| 1151 | + GlobalConfig.MCUServerPort = _data.mcuList[index].port || ""; | ||
| 1152 | + loger.log('初始->MCU->.', GlobalConfig.MCUServerIP, GlobalConfig.MCUServerPort); | ||
| 1153 | + } | ||
| 1173 | 1154 | ||
| 1174 | - //播流的地址和推流地址需要分开的时候,单独设置拉流的地址 hls(目前乐视使用) | ||
| 1175 | - if (GlobalConfig.hlsList && GlobalConfig.hlsList.length > 0) { | ||
| 1176 | - //有单独的hls拉流地址 | ||
| 1177 | - let index = parseInt(Math.random() * GlobalConfig.hlsList.length); | ||
| 1178 | - GlobalConfig.MS_PLAY_HLS_IP = GlobalConfig.hlsList[index].ip || ""; | ||
| 1179 | - GlobalConfig.MS_PLAY_HLS_PORT = GlobalConfig.hlsList[index].port || ""; | ||
| 1180 | - } else { | ||
| 1181 | - //没有单独的hls拉流地址,和录制回放地址一样即可 | ||
| 1182 | - GlobalConfig.MS_PLAY_HLS_IP = GlobalConfig.RS_RECORD_PLAY_IP; | ||
| 1183 | - GlobalConfig.MS_PLAY_HLS_PORT = GlobalConfig.RS_RECORD_PLAY_PORT; | ||
| 1184 | - } | ||
| 1185 | - loger.log('初始->MSHls->.', GlobalConfig.MS_PLAY_HLS_IP, GlobalConfig.MS_PLAY_HLS_PORT); | ||
| 1186 | - | ||
| 1187 | - //直播的时候,拉流(rtmp和hls)需要从 videoCDNAddr中获取 | ||
| 1188 | - //20170531-新规则,所有课堂类型都支持加速 | ||
| 1189 | - // if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2&&GlobalConfig.videoCDNAddrList.length>0){ | ||
| 1190 | - | ||
| 1191 | - //20170629-直播课堂和移动端设备的时候支持 | ||
| 1192 | - if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2||GlobalConfig.isMobile){ | ||
| 1193 | - if (GlobalConfig.videoCDNAddrList.length > 0) { | ||
| 1194 | - //videoCDNAddrList中rtmppush和hls是混在一起的,需要分离开; | ||
| 1195 | - let listLen = GlobalConfig.videoCDNAddrList.length; | ||
| 1196 | - for (let i = 0; i < listLen; i++) { | ||
| 1197 | - let ipItem = GlobalConfig.videoCDNAddrList[i]; | ||
| 1198 | - if (ipItem) { | ||
| 1199 | - if (ipItem.indexOf('hls') >= 0) { | ||
| 1200 | - //直播的时候m3u8拉流地址 | ||
| 1201 | - GlobalConfig.MS_PLAY_HLS_IP = ipItem; //ip包含了端口 | ||
| 1202 | - GlobalConfig.MS_PLAY_HLS_PORT = ""; | ||
| 1203 | - loger.log('videoCDNAddr>初始->MSHls', GlobalConfig.MS_PLAY_HLS_IP); | ||
| 1204 | - } else if (ipItem.indexOf('rtmppull') >= 0) { | ||
| 1205 | - //直播的时候rtmp拉流地址 | ||
| 1206 | - GlobalConfig.MS_PLAY_RTMP_IP = ipItem; //ip包含了端口 | ||
| 1207 | - GlobalConfig.MS_PLAY_RTMP_PORT = ''; | ||
| 1208 | - loger.log('videoCDNAddr->初始->MSPull', GlobalConfig.MS_PLAY_RTMP_IP); | ||
| 1209 | - } | 1155 | + //录制回放时m3u8播流地址 |
| 1156 | + if (_data.rsList && _data.rsList.length > 0) { | ||
| 1157 | + let index = parseInt(Math.random() * _data.rsList.length); | ||
| 1158 | + GlobalConfig.RS_RECORD_PLAY_IP = _data.rsList[index].ip || ""; | ||
| 1159 | + GlobalConfig.RS_RECORD_PLAY_PORT = _data.rsList[index].port || ""; | ||
| 1160 | + loger.log('初始->RS->.', GlobalConfig.RS_RECORD_PLAY_IP, GlobalConfig.RS_RECORD_PLAY_PORT); | ||
| 1161 | + } | ||
| 1162 | + | ||
| 1163 | + //上课中音视频推流地址 | ||
| 1164 | + if (GlobalConfig.msList && GlobalConfig.msList.length > 0) { | ||
| 1165 | + let index = parseInt(Math.random() * GlobalConfig.msList.length); | ||
| 1166 | + GlobalConfig.MS_PUBLISH_IP = GlobalConfig.msList[index].ip || ""; | ||
| 1167 | + GlobalConfig.MS_PUBLISH_PORT = GlobalConfig.msList[index].port || ""; | ||
| 1168 | + } | ||
| 1169 | + loger.log('初始->MS->.', GlobalConfig.MS_PUBLISH_IP, GlobalConfig.MS_PUBLISH_PORT); | ||
| 1170 | + | ||
| 1171 | + //播流的地址和推流地址需要分开的时候,单独设置拉流的地址 rtmp(目前乐视使用) | ||
| 1172 | + if (GlobalConfig.pullRtmpList && GlobalConfig.pullRtmpList.length > 0) { | ||
| 1173 | + //有单独的rtmp拉流地址 | ||
| 1174 | + let index = parseInt(Math.random() * GlobalConfig.pullRtmpList.length); | ||
| 1175 | + GlobalConfig.MS_PLAY_RTMP_IP = GlobalConfig.pullRtmpList[index].ip || ""; | ||
| 1176 | + GlobalConfig.MS_PLAY_RTMP_PORT = GlobalConfig.pullRtmpList[index].port || ""; | ||
| 1177 | + } else { | ||
| 1178 | + //如果没有单独的rtmp拉流地址,和推流地址一样即可 | ||
| 1179 | + GlobalConfig.MS_PLAY_RTMP_IP = GlobalConfig.MS_PUBLISH_IP; | ||
| 1180 | + GlobalConfig.MS_PLAY_RTMP_PORT = GlobalConfig.MS_PUBLISH_PORT; | ||
| 1181 | + } | ||
| 1182 | + | ||
| 1183 | + loger.log('初始->MSPull->.', GlobalConfig.MS_PLAY_RTMP_IP, GlobalConfig.MS_PLAY_RTMP_PORT); | ||
| 1184 | + | ||
| 1185 | + //播流的地址和推流地址需要分开的时候,单独设置拉流的地址 hls(目前乐视使用) | ||
| 1186 | + if (GlobalConfig.hlsList && GlobalConfig.hlsList.length > 0) { | ||
| 1187 | + //有单独的hls拉流地址 | ||
| 1188 | + let index = parseInt(Math.random() * GlobalConfig.hlsList.length); | ||
| 1189 | + GlobalConfig.MS_PLAY_HLS_IP = GlobalConfig.hlsList[index].ip || ""; | ||
| 1190 | + GlobalConfig.MS_PLAY_HLS_PORT = GlobalConfig.hlsList[index].port || ""; | ||
| 1191 | + } else { | ||
| 1192 | + //没有单独的hls拉流地址,和录制回放地址一样即可 | ||
| 1193 | + GlobalConfig.MS_PLAY_HLS_IP = GlobalConfig.RS_RECORD_PLAY_IP; | ||
| 1194 | + GlobalConfig.MS_PLAY_HLS_PORT = GlobalConfig.RS_RECORD_PLAY_PORT; | ||
| 1195 | + } | ||
| 1196 | + loger.log('初始->MSHls->.', GlobalConfig.MS_PLAY_HLS_IP, GlobalConfig.MS_PLAY_HLS_PORT); | ||
| 1197 | + | ||
| 1198 | + //直播的时候,拉流(rtmp和hls)需要从 videoCDNAddr中获取 | ||
| 1199 | + //20170531-新规则,所有课堂类型都支持加速 | ||
| 1200 | + // if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2&&GlobalConfig.videoCDNAddrList.length>0){ | ||
| 1201 | + | ||
| 1202 | + //20170629-直播课堂和移动端设备的时候支持 | ||
| 1203 | + if (GlobalConfig.classType == ApeConsts.CLASS_TYPE_2 || GlobalConfig.isMobile) { | ||
| 1204 | + if (GlobalConfig.videoCDNAddrList.length > 0) { | ||
| 1205 | + //videoCDNAddrList中rtmppush和hls是混在一起的,需要分离开; | ||
| 1206 | + let listLen = GlobalConfig.videoCDNAddrList.length; | ||
| 1207 | + for (let i = 0; i < listLen; i++) { | ||
| 1208 | + let ipItem = GlobalConfig.videoCDNAddrList[i]; | ||
| 1209 | + if (ipItem) { | ||
| 1210 | + if (ipItem.indexOf('hls') >= 0) { | ||
| 1211 | + //直播的时候m3u8拉流地址 | ||
| 1212 | + GlobalConfig.MS_PLAY_HLS_IP = ipItem; //ip包含了端口 | ||
| 1213 | + GlobalConfig.MS_PLAY_HLS_PORT = ""; | ||
| 1214 | + loger.log('videoCDNAddr>初始->MSHls', GlobalConfig.MS_PLAY_HLS_IP); | ||
| 1215 | + } else if (ipItem.indexOf('rtmppull') >= 0) { | ||
| 1216 | + //直播的时候rtmp拉流地址 | ||
| 1217 | + GlobalConfig.MS_PLAY_RTMP_IP = ipItem; //ip包含了端口 | ||
| 1218 | + GlobalConfig.MS_PLAY_RTMP_PORT = ''; | ||
| 1219 | + loger.log('videoCDNAddr->初始->MSPull', GlobalConfig.MS_PLAY_RTMP_IP); | ||
| 1210 | } | 1220 | } |
| 1211 | } | 1221 | } |
| 1212 | - } else { | ||
| 1213 | - loger.error('videoCDNAddr数据无效->',GlobalConfig.videoCDNAddr); | ||
| 1214 | } | 1222 | } |
| 1215 | - }else { | ||
| 1216 | - loger.warn('非直播课堂或不是移动端->不需要videoCDN加速'); | ||
| 1217 | - } | ||
| 1218 | - | ||
| 1219 | - //文档地址 | ||
| 1220 | - if (_data.docList && _data.docList.length > 0) { | ||
| 1221 | - //doc上传地址,随机获取一个 | ||
| 1222 | - let index = parseInt(Math.random() * _data.docList.length); | ||
| 1223 | - loger.log("docServer->", _data.docList[index]); | ||
| 1224 | - GlobalConfig.DOCServerIP = _data.docList[index].ip || ""; | ||
| 1225 | - GlobalConfig.DOCServerPort = _data.docList[index].port || ""; | ||
| 1226 | - loger.log('初始->DOC->.', GlobalConfig.DOCServerIP, GlobalConfig.DOCServerPort); | 1223 | + } else { |
| 1224 | + loger.error('videoCDNAddr数据无效->', GlobalConfig.videoCDNAddr); | ||
| 1227 | } | 1225 | } |
| 1226 | + } else { | ||
| 1227 | + loger.warn('非直播课堂或不是移动端->不需要videoCDN加速'); | ||
| 1228 | + } | ||
| 1228 | 1229 | ||
| 1229 | - //record | ||
| 1230 | - if (_data.recordList && _data.recordList.length > 0) { | ||
| 1231 | - let index = parseInt(Math.random() * _data.recordList.length); | ||
| 1232 | - GlobalConfig.RecordServerIP = _data.recordList[index].ip || ""; | ||
| 1233 | - GlobalConfig.RecordServerPort = _data.recordList[index].port || ""; | ||
| 1234 | - loger.log('初始->RECORD->.', GlobalConfig.RecordServerIP, GlobalConfig.RecordServerPort); | ||
| 1235 | - } | 1230 | + //文档地址 |
| 1231 | + if (_data.docList && _data.docList.length > 0) { | ||
| 1232 | + //doc上传地址,随机获取一个 | ||
| 1233 | + let index = parseInt(Math.random() * _data.docList.length); | ||
| 1234 | + loger.log("docServer->", _data.docList[index]); | ||
| 1235 | + GlobalConfig.DOCServerIP = _data.docList[index].ip || ""; | ||
| 1236 | + GlobalConfig.DOCServerPort = _data.docList[index].port || ""; | ||
| 1237 | + loger.log('初始->DOC->.', GlobalConfig.DOCServerIP, GlobalConfig.DOCServerPort); | ||
| 1238 | + } | ||
| 1236 | 1239 | ||
| 1240 | + //record | ||
| 1241 | + if (_data.recordList && _data.recordList.length > 0) { | ||
| 1242 | + let index = parseInt(Math.random() * _data.recordList.length); | ||
| 1243 | + GlobalConfig.RecordServerIP = _data.recordList[index].ip || ""; | ||
| 1244 | + GlobalConfig.RecordServerPort = _data.recordList[index].port || ""; | ||
| 1245 | + loger.log('初始->RECORD->.', GlobalConfig.RecordServerIP, GlobalConfig.RecordServerPort); | ||
| 1237 | } | 1246 | } |
| 1238 | - //这里需要考虑是否加延迟处理,课堂信息刚获取完成,客户端需要根据数据创建界面UI,等创建完成后再加入课堂是最合适的(目前没有加延迟) | ||
| 1239 | - this._emit(MessageTypes.CLASS_GET_INFO_SUCCESS, GlobalConfig.getClassInfo()); | ||
| 1240 | - | ||
| 1241 | - if (_data.currentInfo) { | ||
| 1242 | - //根据从Sass获取的数据信息,同步最后一次保存的课堂状态信息 | ||
| 1243 | - loger.log("本地同步最后一次保存过的课堂状态信息"); | ||
| 1244 | - try { | ||
| 1245 | - GlobalConfig.setClassStatusInfo(JSON.parse(_data.currentInfo)); | ||
| 1246 | - } catch (err) { | ||
| 1247 | - GlobalConfig.setClassStatusInfo(_data.currentInfo); | ||
| 1248 | - } | ||
| 1249 | - loger.log(GlobalConfig.classStatusInfo); | ||
| 1250 | - } else { | ||
| 1251 | - loger.log("还没有保存过课堂状信息"); | 1247 | + |
| 1248 | + } | ||
| 1249 | + //这里需要考虑是否加延迟处理,课堂信息刚获取完成,客户端需要根据数据创建界面UI,等创建完成后再加入课堂是最合适的(目前没有加延迟) | ||
| 1250 | + this._emit(MessageTypes.CLASS_GET_INFO_SUCCESS, GlobalConfig.getClassInfo()); | ||
| 1251 | + | ||
| 1252 | + if (_data.currentInfo) { | ||
| 1253 | + //根据从Sass获取的数据信息,同步最后一次保存的课堂状态信息 | ||
| 1254 | + loger.log("本地同步最后一次保存过的课堂状态信息"); | ||
| 1255 | + try { | ||
| 1256 | + GlobalConfig.setClassStatusInfo(JSON.parse(_data.currentInfo)); | ||
| 1257 | + } catch (err) { | ||
| 1258 | + GlobalConfig.setClassStatusInfo(_data.currentInfo); | ||
| 1252 | } | 1259 | } |
| 1260 | + loger.log(GlobalConfig.classStatusInfo); | ||
| 1261 | + } else { | ||
| 1262 | + loger.log("还没有保存过课堂状信息"); | ||
| 1263 | + } | ||
| 1253 | 1264 | ||
| 1254 | - //录制回放不需要获取ip信息和选点 | ||
| 1255 | - if (GlobalConfig.isRecordPlayBack) { | ||
| 1256 | - if (_recordPlayback) { | ||
| 1257 | - //开启录制回放流程 | ||
| 1258 | - loger.log("开启录制回放流程"); | ||
| 1259 | - _recordPlayback.readyRecordPlay(); | ||
| 1260 | - } else { | ||
| 1261 | - loger.warn("开启录制回放流程失败->还未创建模块"); | ||
| 1262 | - } | 1265 | + //录制回放不需要获取ip信息和选点 |
| 1266 | + if (GlobalConfig.isRecordPlayBack) { | ||
| 1267 | + if (_recordPlayback) { | ||
| 1268 | + //开启录制回放流程 | ||
| 1269 | + loger.log("开启录制回放流程"); | ||
| 1270 | + _recordPlayback.readyRecordPlay(); | ||
| 1263 | } else { | 1271 | } else { |
| 1264 | - //根据用户的userIp获取信息,选点 | ||
| 1265 | - this.getUserIpInfo(); | 1272 | + loger.warn("开启录制回放流程失败->还未创建模块"); |
| 1266 | } | 1273 | } |
| 1274 | + } else { | ||
| 1275 | + //根据用户的userIp获取信息,选点 | ||
| 1276 | + this.getUserIpInfo(); | ||
| 1267 | } | 1277 | } |
| 1278 | + } | ||
| 1268 | 1279 | ||
| 1269 | - //ChatApe | ||
| 1270 | - // 发送聊天消息 | 1280 | + //ChatApe |
| 1281 | + // 发送聊天消息 | ||
| 1271 | _sendChatMsg(_messageInfo) { | 1282 | _sendChatMsg(_messageInfo) { |
| 1272 | if (!_mcu.connected) { | 1283 | if (!_mcu.connected) { |
| 1273 | loger.warn(GlobalConfig.getCurrentStatus()); | 1284 | loger.warn(GlobalConfig.getCurrentStatus()); |
| @@ -1675,7 +1686,33 @@ export default class MessageEntrance extends Emiter { | @@ -1675,7 +1686,33 @@ export default class MessageEntrance extends Emiter { | ||
| 1675 | } | 1686 | } |
| 1676 | } | 1687 | } |
| 1677 | 1688 | ||
| 1678 | - //删除 | 1689 | + // 删除Music |
| 1690 | + _sassDeletMusicShare(_param) { | ||
| 1691 | + if (!_mcu.connected) { | ||
| 1692 | + loger.warn(GlobalConfig.getCurrentStatus()); | ||
| 1693 | + return; | ||
| 1694 | + } | ||
| 1695 | + | ||
| 1696 | + //判断传入的参数是否存在 | ||
| 1697 | + if (_param == null || EngineUtils.isEmptyObject(_param)) { | ||
| 1698 | + loger.error('删除媒体文件失败->参数错误', _param); | ||
| 1699 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_MUSICSHARE_DELETE_FAILED_PARAM); | ||
| 1700 | + return; | ||
| 1701 | + } | ||
| 1702 | + //判断必要的参数字段值 | ||
| 1703 | + if (_param.itemIdx == null || isNaN(_param.itemIdx) || _param.fileId == null || _param.fileId == "") { | ||
| 1704 | + loger.error('删除媒体文件失败->', _param); | ||
| 1705 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_MUSICSHARE_DELETE_FAILED_PARAM); | ||
| 1706 | + return; | ||
| 1707 | + } | ||
| 1708 | + loger.log('删除媒体文件->', _param); | ||
| 1709 | + | ||
| 1710 | + if (_sass) { | ||
| 1711 | + _sass.sassDeletMusicShare(_param); | ||
| 1712 | + } | ||
| 1713 | + } | ||
| 1714 | + | ||
| 1715 | + //删除媒体 | ||
| 1679 | _sendMediaSharedDelete(_param) { | 1716 | _sendMediaSharedDelete(_param) { |
| 1680 | if (!_mcu.connected) { | 1717 | if (!_mcu.connected) { |
| 1681 | loger.warn(GlobalConfig.getCurrentStatus()); | 1718 | loger.warn(GlobalConfig.getCurrentStatus()); |
| @@ -1686,6 +1723,17 @@ export default class MessageEntrance extends Emiter { | @@ -1686,6 +1723,17 @@ export default class MessageEntrance extends Emiter { | ||
| 1686 | } | 1723 | } |
| 1687 | } | 1724 | } |
| 1688 | 1725 | ||
| 1726 | + //删除媒体 | ||
| 1727 | + _sendMusicSharedDelete(_param) { | ||
| 1728 | + if (!_mcu.connected) { | ||
| 1729 | + loger.warn(GlobalConfig.getCurrentStatus()); | ||
| 1730 | + return; | ||
| 1731 | + } | ||
| 1732 | + if (_musicShareApe) { | ||
| 1733 | + _musicShareApe.musicSharedDelete(_param); | ||
| 1734 | + } | ||
| 1735 | + } | ||
| 1736 | + | ||
| 1689 | //音乐更新 | 1737 | //音乐更新 |
| 1690 | _sendMusicSharedUpdate(_param) { | 1738 | _sendMusicSharedUpdate(_param) { |
| 1691 | if (!_mcu.connected) { | 1739 | if (!_mcu.connected) { |
| @@ -1934,7 +1982,7 @@ export default class MessageEntrance extends Emiter { | @@ -1934,7 +1982,7 @@ export default class MessageEntrance extends Emiter { | ||
| 1934 | 1982 | ||
| 1935 | joinClassSuccessCallBackData.ssTunnelAppURL = GlobalConfig.ssTunnelAppURL; | 1983 | joinClassSuccessCallBackData.ssTunnelAppURL = GlobalConfig.ssTunnelAppURL; |
| 1936 | joinClassSuccessCallBackData.currentSceneTableId = GlobalConfig.currentSceneTableId; //文档区域的模块显示 | 1984 | joinClassSuccessCallBackData.currentSceneTableId = GlobalConfig.currentSceneTableId; //文档区域的模块显示 |
| 1937 | - joinClassSuccessCallBackData.serverAndLoacTimeDistanc=GlobalConfig.serverAndLoacTimeDistanc; | 1985 | + joinClassSuccessCallBackData.serverAndLoacTimeDistanc = GlobalConfig.serverAndLoacTimeDistanc; |
| 1938 | loger.log(joinClassSuccessCallBackData); | 1986 | loger.log(joinClassSuccessCallBackData); |
| 1939 | //和加入课堂成功使用同样的消息处理 | 1987 | //和加入课堂成功使用同样的消息处理 |
| 1940 | this._emit(MessageTypes.CLASS_JOIN_SUCCESS, joinClassSuccessCallBackData); | 1988 | this._emit(MessageTypes.CLASS_JOIN_SUCCESS, joinClassSuccessCallBackData); |
| @@ -89,6 +89,10 @@ MessageTypes.DOC_BROADCAST = "doc_broadcast"; // | @@ -89,6 +89,10 @@ MessageTypes.DOC_BROADCAST = "doc_broadcast"; // | ||
| 89 | MessageTypes.MEDIA_SHARED_DELETE = "media_shared_delete"; //删除媒体文件 | 89 | MessageTypes.MEDIA_SHARED_DELETE = "media_shared_delete"; //删除媒体文件 |
| 90 | MessageTypes.MEDIA_SHARED_UPDATE = "media_shared_update"; //更新媒体文件(添加、变更) | 90 | MessageTypes.MEDIA_SHARED_UPDATE = "media_shared_update"; //更新媒体文件(添加、变更) |
| 91 | 91 | ||
| 92 | +//音频共享 | ||
| 93 | +MessageTypes.MUSIC_SHARED_DELETE = "music_shared_delete"; //删除音频文件 | ||
| 94 | +MessageTypes.MUSIC_SHARED_UPDATE = "music_shared_update"; //更新音频文件(添加、变更) | ||
| 95 | + | ||
| 92 | //答题卡和点名共用 | 96 | //答题卡和点名共用 |
| 93 | MessageTypes.START_ANSWER_QUESTION = "start_answer_question"; //开始答题 | 97 | MessageTypes.START_ANSWER_QUESTION = "start_answer_question"; //开始答题 |
| 94 | MessageTypes.UPDATE_ANSWER_QUESTION = "update_answer_question"; //更新答题数据 | 98 | MessageTypes.UPDATE_ANSWER_QUESTION = "update_answer_question"; //更新答题数据 |
| @@ -151,6 +155,10 @@ MessageTypes.ERR_SDK_FAILED = 700; // sdk还没初始化 | @@ -151,6 +155,10 @@ MessageTypes.ERR_SDK_FAILED = 700; // sdk还没初始化 | ||
| 151 | MessageTypes.ERR_INTERFACE_NONE = 701; //调用的接口不存在 | 155 | MessageTypes.ERR_INTERFACE_NONE = 701; //调用的接口不存在 |
| 152 | MessageTypes.ERR_INTERFACE_PARAMS_ERROR = 702; //调用的接口,传递的参数不正确 | 156 | MessageTypes.ERR_INTERFACE_PARAMS_ERROR = 702; //调用的接口,传递的参数不正确 |
| 153 | 157 | ||
| 158 | +//音频共享 | ||
| 159 | +MessageTypes.ERR_MUSICSHARE_DELETE_FAILED = 720; //删除媒体共享文件失败 | ||
| 160 | +MessageTypes.ERR_MUSICSHARE_DELETE_FAILED_PARAM = 721; //删除媒体共享文件,参数错误 | ||
| 161 | + | ||
| 154 | MessageTypes.ERR_INIT_RECORD_PLAY_BACK_FAILED = 910; //初始化录制回放失败 | 162 | MessageTypes.ERR_INIT_RECORD_PLAY_BACK_FAILED = 910; //初始化录制回放失败 |
| 155 | MessageTypes.ERR_GET_RECORD_PLAY_BACK_DATA_FAILED = 911; //获取录制回放数据失败 | 163 | MessageTypes.ERR_GET_RECORD_PLAY_BACK_DATA_FAILED = 911; //获取录制回放数据失败 |
| 156 | 164 |
| @@ -13,757 +13,797 @@ const loger = Loger.getLoger('Sass'); | @@ -13,757 +13,797 @@ const loger = Loger.getLoger('Sass'); | ||
| 13 | 13 | ||
| 14 | let confInfo = {}; | 14 | let confInfo = {}; |
| 15 | class Sass extends Emiter { | 15 | class Sass extends Emiter { |
| 16 | - constructor() { | ||
| 17 | - super(); | ||
| 18 | - } | ||
| 19 | - | ||
| 20 | - ///////////////////////////////////////Sass 接口/////////////////////////////////////////////////// | ||
| 21 | - //Sass init初始化获取课堂校验信息----------------------------------------------------------------- | ||
| 22 | - getJoinParams(_initInfo) { | ||
| 23 | - /* 获取用于加入课堂的参数 | ||
| 24 | - /3m/api/meeting/joinParams.do | ||
| 25 | - 参数 (application/x-www-form-urlencoded): | ||
| 26 | - 名称 类型 可选 默认值 说明 | ||
| 27 | - meetingNumber String 否 null 课堂号 | ||
| 28 | - userID String 是 0 用户id | ||
| 29 | - 返回 (application/json): | ||
| 30 | - code int 0 正常 | ||
| 31 | - 1 课堂号必填 | ||
| 32 | - 2 无效的课堂号 | ||
| 33 | - 3 没有对应的站点 | ||
| 34 | - 4 站点已过期 | ||
| 35 | - siteId String 站点号 | ||
| 36 | - passwordRequired Boolean 是否需要输入密码 | ||
| 37 | - md5 String 用于后续加入课堂验证 | ||
| 38 | - msType int 媒体服务器类型 | ||
| 39 | - classType 课堂类型 | ||
| 40 | - */ | ||
| 41 | - let url = `http://${_initInfo.portal}/3m/api/meeting/joinParams.do?meetingNumber=${_initInfo.classId}&userID=${_initInfo.userId}`; | ||
| 42 | - loger.log('1.初始化init获取课堂校验信息.'); | ||
| 43 | - loger.log(url); | ||
| 44 | - loger.log(_initInfo); | ||
| 45 | - fetch(url, { | ||
| 46 | - timeout: 5000 | ||
| 47 | - }) | ||
| 48 | - .then(ret => { | ||
| 49 | - if (ret.ok) { | ||
| 50 | - return ret.json(); | ||
| 51 | - } else { | ||
| 52 | - loger.error(`初始化init获取课堂校验信息-网络异常.状态码:${ret.status}`); | ||
| 53 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_INIT_NETWORK); | ||
| 54 | - throw ''; | ||
| 55 | - } | ||
| 56 | - }) | ||
| 57 | - .then(ret => { | ||
| 58 | - // code int 0 正常 | ||
| 59 | - // 1 课堂号必填 | ||
| 60 | - //2 无效的课堂号 | ||
| 61 | - //3 没有对应的站点 | ||
| 62 | - //4 站点已过期 | ||
| 63 | - if (ret.code === 0) { | ||
| 64 | - loger.log('初始化init获取课堂校验信息-完成'); | ||
| 65 | - this._emit(Sass.CLASS_INIT_SUCCESS, ret); | ||
| 66 | - } else if (ret.code === 1) { | ||
| 67 | - //loger.warn('Sass获取课堂校验信息失败.'); | ||
| 68 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_INIT_FAILED_1); | ||
| 69 | - } else if (ret.code === 2) { | ||
| 70 | - //loger.warn('Sass获取课堂校验信息失败.'); | ||
| 71 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_INIT_FAILED_2); | ||
| 72 | - } else if (ret.code === 3) { | ||
| 73 | - //loger.warn('Sass获取课堂校验信息失败.'); | ||
| 74 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_INIT_FAILED_3); | ||
| 75 | - } else if (ret.code === 4) { | ||
| 76 | - //loger.warn('Sass获取课堂校验信息失败.'); | ||
| 77 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_INIT_FAILED_4); | ||
| 78 | - } else { | ||
| 79 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_INIT_FAILED, ret); | ||
| 80 | - } | ||
| 81 | - }) | ||
| 82 | - .catch(err => { | ||
| 83 | - loger.error(`初始化init获取课堂校验信息-异常.状态码:${err}`); | ||
| 84 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_INIT_PROTOCOL, err); | ||
| 85 | - }); | ||
| 86 | - } | ||
| 87 | - | ||
| 88 | - // Sass校验开始-->密码校验(如果需要密码)--->MD5校验---------------------------------------------------- | ||
| 89 | - passwordAndMd5Checking(_param) { | ||
| 90 | - loger.log('2.开始Sass校验'); | ||
| 91 | - loger.log(_param); | ||
| 92 | - confInfo = _param; | ||
| 93 | - // 密码校验 | ||
| 94 | - if (confInfo.passwordRequired === 'true' || confInfo.passwordRequired === true) { | ||
| 95 | - this.sendPWDChecking(); | ||
| 96 | - return; | 16 | + constructor() { |
| 17 | + super(); | ||
| 18 | + } | ||
| 19 | + | ||
| 20 | + ///////////////////////////////////////Sass 接口/////////////////////////////////////////////////// | ||
| 21 | + //Sass init初始化获取课堂校验信息----------------------------------------------------------------- | ||
| 22 | + getJoinParams(_initInfo) { | ||
| 23 | + /* 获取用于加入课堂的参数 | ||
| 24 | + /3m/api/meeting/joinParams.do | ||
| 25 | + 参数 (application/x-www-form-urlencoded): | ||
| 26 | + 名称 类型 可选 默认值 说明 | ||
| 27 | + meetingNumber String 否 null 课堂号 | ||
| 28 | + userID String 是 0 用户id | ||
| 29 | + 返回 (application/json): | ||
| 30 | + code int 0 正常 | ||
| 31 | + 1 课堂号必填 | ||
| 32 | + 2 无效的课堂号 | ||
| 33 | + 3 没有对应的站点 | ||
| 34 | + 4 站点已过期 | ||
| 35 | + siteId String 站点号 | ||
| 36 | + passwordRequired Boolean 是否需要输入密码 | ||
| 37 | + md5 String 用于后续加入课堂验证 | ||
| 38 | + msType int 媒体服务器类型 | ||
| 39 | + classType 课堂类型 | ||
| 40 | + */ | ||
| 41 | + let url = `http://${_initInfo.portal}/3m/api/meeting/joinParams.do?meetingNumber=${_initInfo.classId}&userID=${_initInfo.userId}`; | ||
| 42 | + loger.log('1.初始化init获取课堂校验信息.'); | ||
| 43 | + loger.log(url); | ||
| 44 | + loger.log(_initInfo); | ||
| 45 | + fetch(url, { | ||
| 46 | + timeout: 5000 | ||
| 47 | + }) | ||
| 48 | + .then(ret => { | ||
| 49 | + if (ret.ok) { | ||
| 50 | + return ret.json(); | ||
| 51 | + } else { | ||
| 52 | + loger.error(`初始化init获取课堂校验信息-网络异常.状态码:${ret.status}`); | ||
| 53 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_INIT_NETWORK); | ||
| 54 | + throw ''; | ||
| 97 | } | 55 | } |
| 98 | - // MD5校验 | ||
| 99 | - this.sendMD5Checking(); | ||
| 100 | - } | ||
| 101 | - | ||
| 102 | - // 入会密码校验--------------------------------------------------------------------------------------- | ||
| 103 | - sendPWDChecking() { | ||
| 104 | - //let url = `http://${classInfo.portal}/3m/getCheckMeetinig.do?siteId=${classInfo.siteId}&classId=${classInfo.classId}&password=${classInfo.password}`; | ||
| 105 | - /* | ||
| 106 | - /3m/api/meeting/signIn.do | ||
| 107 | - siteId 站点号 | ||
| 108 | - classId 课堂号(meetingNumber) | ||
| 109 | - isTeacher 是否是老师:1 是 0 否 | ||
| 110 | - password 输入的密码 | ||
| 111 | - // 请求格式 http://112.126.80.182/3m/api/meeting/signIn.do?siteId=h5test&classId=526661904&password=111111&isTeacher=0 | ||
| 112 | - */ | ||
| 113 | - //判断是否是老师 | ||
| 114 | - let isTeacher = 0; | ||
| 115 | - if (confInfo.userRole == ApeConsts.host) { | ||
| 116 | - isTeacher = 1 | 56 | + }) |
| 57 | + .then(ret => { | ||
| 58 | + // code int 0 正常 | ||
| 59 | + // 1 课堂号必填 | ||
| 60 | + //2 无效的课堂号 | ||
| 61 | + //3 没有对应的站点 | ||
| 62 | + //4 站点已过期 | ||
| 63 | + if (ret.code === 0) { | ||
| 64 | + loger.log('初始化init获取课堂校验信息-完成'); | ||
| 65 | + this._emit(Sass.CLASS_INIT_SUCCESS, ret); | ||
| 66 | + } else if (ret.code === 1) { | ||
| 67 | + //loger.warn('Sass获取课堂校验信息失败.'); | ||
| 68 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_INIT_FAILED_1); | ||
| 69 | + } else if (ret.code === 2) { | ||
| 70 | + //loger.warn('Sass获取课堂校验信息失败.'); | ||
| 71 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_INIT_FAILED_2); | ||
| 72 | + } else if (ret.code === 3) { | ||
| 73 | + //loger.warn('Sass获取课堂校验信息失败.'); | ||
| 74 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_INIT_FAILED_3); | ||
| 75 | + } else if (ret.code === 4) { | ||
| 76 | + //loger.warn('Sass获取课堂校验信息失败.'); | ||
| 77 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_INIT_FAILED_4); | ||
| 78 | + } else { | ||
| 79 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_INIT_FAILED, ret); | ||
| 117 | } | 80 | } |
| 118 | - | ||
| 119 | - let url = `http://${confInfo.portal}/3m/api/meeting/signIn.do?siteId=${confInfo.siteId}&classId=${confInfo.classId}&isTeacher=${isTeacher}&password=${confInfo.password}`; | ||
| 120 | - loger.log('3.课堂密码校验', url); | ||
| 121 | - fetch(url, { | ||
| 122 | - timeout: 5000 | ||
| 123 | - }) | ||
| 124 | - .then(ret => { | ||
| 125 | - if (ret.status === 200) { | ||
| 126 | - return ret.text(); | ||
| 127 | - } else { | ||
| 128 | - loger.error(`课堂密码校验-网络异常.状态码:${ret.status}`); | ||
| 129 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_JOIN_NETWORK); | ||
| 130 | - throw ''; | ||
| 131 | - } | ||
| 132 | - }) | ||
| 133 | - .then(ret => { | ||
| 134 | - let rectObj = JSON.parse(ret); | ||
| 135 | - if (rectObj.flag === 'false' || rectObj.flag === false) { | ||
| 136 | - loger.error(`课堂密码校验-失败.`); | ||
| 137 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_PASSWORD_WRONG); | ||
| 138 | - return; | ||
| 139 | - } | ||
| 140 | - if (rectObj.flag === 'true' || rectObj.flag === true) { | ||
| 141 | - loger.log(`课堂密码校验-成功.`); | ||
| 142 | - this.sendMD5Checking(); | ||
| 143 | - return; | ||
| 144 | - } | ||
| 145 | - loger.error(`课堂密码校验-协议异常.`, rectObj); | ||
| 146 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_JOIN_PROTOCOL); | ||
| 147 | - }) | ||
| 148 | - .catch(err => { | ||
| 149 | - loger.error(`课堂密码校验-异常.状态码:${err}`); | ||
| 150 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_JOIN_FAILED); | ||
| 151 | - }); | ||
| 152 | - } | ||
| 153 | - | ||
| 154 | - //MD5校验----------------------------------------------------------------------------------------- | ||
| 155 | - sendMD5Checking() { | ||
| 156 | - let url = `http://${confInfo.portal}/3m/meeting/md5CheckMeeting.do?siteId=${confInfo.siteId}&meetingNumber=${confInfo.classId}&userId=${confInfo.userId}&userName=${confInfo.userName}&userType=${confInfo.userType}&nopassword=${confInfo.passwordRequired}&md5=${confInfo.md5}`; | ||
| 157 | - loger.log('4.MD5校验', url); | ||
| 158 | - fetch(url, { | ||
| 159 | - timeout: 5000 | ||
| 160 | - }) | ||
| 161 | - .then(ret => { | ||
| 162 | - if (ret.status === 200) { | ||
| 163 | - return ret.json(); | ||
| 164 | - } else { | ||
| 165 | - loger.error(`MD5校验-网络异常.状态码:${ret.status}`); | ||
| 166 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_JOIN_NETWORK); | ||
| 167 | - throw ''; | ||
| 168 | - } | ||
| 169 | - }) | ||
| 170 | - .then(ret => { | ||
| 171 | - if (ret.flag == "true" || ret.flag == true) { | ||
| 172 | - loger.log('MD5校验完成'); | ||
| 173 | - loger.log(ret); | ||
| 174 | - this._emit(Sass.SUCCESS, ret); | ||
| 175 | - } else { | ||
| 176 | - loger.log('MD5校验-失败.'); | ||
| 177 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_MD5_WRONG); | ||
| 178 | - | ||
| 179 | - } | ||
| 180 | - }) | ||
| 181 | - .catch(err => { | ||
| 182 | - loger.error(`MD5校验-异常.状态码:${err}`); | ||
| 183 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_JOIN_FAILED); | ||
| 184 | - }); | 81 | + }) |
| 82 | + .catch(err => { | ||
| 83 | + loger.error(`初始化init获取课堂校验信息-异常.状态码:${err}`); | ||
| 84 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_INIT_PROTOCOL, err); | ||
| 85 | + }); | ||
| 86 | + } | ||
| 87 | + | ||
| 88 | + // Sass校验开始-->密码校验(如果需要密码)--->MD5校验---------------------------------------------------- | ||
| 89 | + passwordAndMd5Checking(_param) { | ||
| 90 | + loger.log('2.开始Sass校验'); | ||
| 91 | + loger.log(_param); | ||
| 92 | + confInfo = _param; | ||
| 93 | + // 密码校验 | ||
| 94 | + if (confInfo.passwordRequired === 'true' || confInfo.passwordRequired === true) { | ||
| 95 | + this.sendPWDChecking(); | ||
| 96 | + return; | ||
| 185 | } | 97 | } |
| 98 | + // MD5校验 | ||
| 99 | + this.sendMD5Checking(); | ||
| 100 | + } | ||
| 186 | 101 | ||
| 187 | - // 获取课堂基本详情------------------------------------------------------------------------------------ | ||
| 188 | - getClassDetail() { | ||
| 189 | - let url = `http://${GlobalConfig.portal}/3m/meeting/getClassH5.do?classNumber=${GlobalConfig.classId}`; | ||
| 190 | - loger.log('获取Class详情.', url); | ||
| 191 | - fetch(url, { | ||
| 192 | - timeout: 5000 | ||
| 193 | - }) | ||
| 194 | - .then(ret => { | ||
| 195 | - if (ret.ok) { | ||
| 196 | - return ret.json(); | ||
| 197 | - } else { | ||
| 198 | - loger.error(`获取Class详情-网络异常.状态码:${ret.status}`); | ||
| 199 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_GET_CLASS_DETAIL); | ||
| 200 | - throw ''; | ||
| 201 | - } | ||
| 202 | - }) | ||
| 203 | - .then(ret => { | ||
| 204 | - if (ret.errorCode === 0) { | ||
| 205 | - loger.log('获取Class详情完成'); | ||
| 206 | - this._emit(Sass.CLASS_GET_CLASS_DETAIL, ret); | ||
| 207 | - } else { | ||
| 208 | - loger.warn('获取Class详情失败.'); | ||
| 209 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_GET_CLASS_DETAIL); | ||
| 210 | - } | ||
| 211 | - }) | ||
| 212 | - .catch(err => { | ||
| 213 | - loger.error(`获取Class详情异常.状态码:${err}`); | ||
| 214 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_GET_CLASS_DETAIL); | ||
| 215 | - }); | 102 | + // 入会密码校验--------------------------------------------------------------------------------------- |
| 103 | + sendPWDChecking() { | ||
| 104 | + //let url = `http://${classInfo.portal}/3m/getCheckMeetinig.do?siteId=${classInfo.siteId}&classId=${classInfo.classId}&password=${classInfo.password}`; | ||
| 105 | + /* | ||
| 106 | + /3m/api/meeting/signIn.do | ||
| 107 | + siteId 站点号 | ||
| 108 | + classId 课堂号(meetingNumber) | ||
| 109 | + isTeacher 是否是老师:1 是 0 否 | ||
| 110 | + password 输入的密码 | ||
| 111 | + // 请求格式 http://112.126.80.182/3m/api/meeting/signIn.do?siteId=h5test&classId=526661904&password=111111&isTeacher=0 | ||
| 112 | + */ | ||
| 113 | + //判断是否是老师 | ||
| 114 | + let isTeacher = 0; | ||
| 115 | + if (confInfo.userRole == ApeConsts.host) { | ||
| 116 | + isTeacher = 1 | ||
| 216 | } | 117 | } |
| 217 | 118 | ||
| 218 | - //获取课堂课堂的完整信息-------------------------------------------------------------------------------- | ||
| 219 | - getClassParam() { | ||
| 220 | - /* | ||
| 221 | - 参数 (application/x-www-form-urlencoded): | ||
| 222 | - 名称 类型 可选 默认值 说明 | ||
| 223 | - meetingNumber String 否 null 课堂号 | ||
| 224 | - timestamp String 否 null 时间戳 | ||
| 225 | - authId String 否 null 验证信息 md5(meetingNumber + timestamp) | ||
| 226 | - 返回 (application/json): | ||
| 227 | - 名称 类型 说明 | ||
| 228 | - code int 0 正常 | ||
| 229 | - 1 课堂号必填 | ||
| 230 | - 2 无效的课堂号 | ||
| 231 | - 3 没有对应的站点 | ||
| 232 | - 4 站点已过期 | ||
| 233 | - siteId String 站点号 | ||
| 234 | - meetingNumber String 课堂号 对应的是classId | ||
| 235 | - */ | ||
| 236 | - var timestamp = new Date().getTime(); | ||
| 237 | - var authId = MD5(GlobalConfig.classId + "" + timestamp);//课堂号+时间戳 的字符串,转成MD5 | ||
| 238 | - let url = `http://${GlobalConfig.portal}/3m/api/meeting/detail.do?meetingNumber=${GlobalConfig.classId}×tamp=${timestamp}&authId=${authId}`; | ||
| 239 | - loger.log('5.获取课堂课堂的完整信息 '); | ||
| 240 | - loger.log(url); | ||
| 241 | - fetch(url, { | ||
| 242 | - timeout: 5000 | ||
| 243 | - }) | ||
| 244 | - .then(ret => { | ||
| 245 | - if (ret.ok) { | ||
| 246 | - return ret.json(); | ||
| 247 | - } else { | ||
| 248 | - loger.error(`获取课堂课堂的完整信息-网络异常.状态码:${ret.status}`); | ||
| 249 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_GET_CLASS_PARAML); | ||
| 250 | - | ||
| 251 | - throw ''; | ||
| 252 | - } | ||
| 253 | - }) | ||
| 254 | - .then(ret => { | ||
| 255 | - if (ret.code === 0) { | ||
| 256 | - loger.log('获取课堂课堂的完整信息完成'); | ||
| 257 | - this._emit(Sass.CLASS_GET_CLASS_PARAM, ret); | ||
| 258 | - } else { | ||
| 259 | - loger.warn('获取课堂课堂的完整信息 失败.'); | ||
| 260 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_GET_CLASS_PARAML); | ||
| 261 | - } | ||
| 262 | - }) | ||
| 263 | - .catch(err => { | ||
| 264 | - loger.error(`获取课堂课堂的完整信息异常.状态码:${err}`); | ||
| 265 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_GET_CLASS_PARAML); | ||
| 266 | - }); | ||
| 267 | - } | 119 | + let url = `http://${confInfo.portal}/3m/api/meeting/signIn.do?siteId=${confInfo.siteId}&classId=${confInfo.classId}&isTeacher=${isTeacher}&password=${confInfo.password}`; |
| 120 | + loger.log('3.课堂密码校验', url); | ||
| 121 | + fetch(url, { | ||
| 122 | + timeout: 5000 | ||
| 123 | + }) | ||
| 124 | + .then(ret => { | ||
| 125 | + if (ret.status === 200) { | ||
| 126 | + return ret.text(); | ||
| 127 | + } else { | ||
| 128 | + loger.error(`课堂密码校验-网络异常.状态码:${ret.status}`); | ||
| 129 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_JOIN_NETWORK); | ||
| 130 | + throw ''; | ||
| 131 | + } | ||
| 132 | + }) | ||
| 133 | + .then(ret => { | ||
| 134 | + let rectObj = JSON.parse(ret); | ||
| 135 | + if (rectObj.flag === 'false' || rectObj.flag === false) { | ||
| 136 | + loger.error(`课堂密码校验-失败.`); | ||
| 137 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_PASSWORD_WRONG); | ||
| 138 | + return; | ||
| 139 | + } | ||
| 140 | + if (rectObj.flag === 'true' || rectObj.flag === true) { | ||
| 141 | + loger.log(`课堂密码校验-成功.`); | ||
| 142 | + this.sendMD5Checking(); | ||
| 143 | + return; | ||
| 144 | + } | ||
| 145 | + loger.error(`课堂密码校验-协议异常.`, rectObj); | ||
| 146 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_JOIN_PROTOCOL); | ||
| 147 | + }) | ||
| 148 | + .catch(err => { | ||
| 149 | + loger.error(`课堂密码校验-异常.状态码:${err}`); | ||
| 150 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_JOIN_FAILED); | ||
| 151 | + }); | ||
| 152 | + } | ||
| 153 | + | ||
| 154 | + //MD5校验----------------------------------------------------------------------------------------- | ||
| 155 | + sendMD5Checking() { | ||
| 156 | + let url = `http://${confInfo.portal}/3m/meeting/md5CheckMeeting.do?siteId=${confInfo.siteId}&meetingNumber=${confInfo.classId}&userId=${confInfo.userId}&userName=${confInfo.userName}&userType=${confInfo.userType}&nopassword=${confInfo.passwordRequired}&md5=${confInfo.md5}`; | ||
| 157 | + loger.log('4.MD5校验', url); | ||
| 158 | + fetch(url, { | ||
| 159 | + timeout: 5000 | ||
| 160 | + }) | ||
| 161 | + .then(ret => { | ||
| 162 | + if (ret.status === 200) { | ||
| 163 | + return ret.json(); | ||
| 164 | + } else { | ||
| 165 | + loger.error(`MD5校验-网络异常.状态码:${ret.status}`); | ||
| 166 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_JOIN_NETWORK); | ||
| 167 | + throw ''; | ||
| 168 | + } | ||
| 169 | + }) | ||
| 170 | + .then(ret => { | ||
| 171 | + if (ret.flag == "true" || ret.flag == true) { | ||
| 172 | + loger.log('MD5校验完成'); | ||
| 173 | + loger.log(ret); | ||
| 174 | + this._emit(Sass.SUCCESS, ret); | ||
| 175 | + } else { | ||
| 176 | + loger.log('MD5校验-失败.'); | ||
| 177 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_MD5_WRONG); | ||
| 268 | 178 | ||
| 269 | - //删除文档----------------------------------------------------------------------------------------------------- | 179 | + } |
| 180 | + }) | ||
| 181 | + .catch(err => { | ||
| 182 | + loger.error(`MD5校验-异常.状态码:${err}`); | ||
| 183 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_JOIN_FAILED); | ||
| 184 | + }); | ||
| 185 | + } | ||
| 186 | + | ||
| 187 | + // 获取课堂基本详情------------------------------------------------------------------------------------ | ||
| 188 | + getClassDetail() { | ||
| 189 | + let url = `http://${GlobalConfig.portal}/3m/meeting/getClassH5.do?classNumber=${GlobalConfig.classId}`; | ||
| 190 | + loger.log('获取Class详情.', url); | ||
| 191 | + fetch(url, { | ||
| 192 | + timeout: 5000 | ||
| 193 | + }) | ||
| 194 | + .then(ret => { | ||
| 195 | + if (ret.ok) { | ||
| 196 | + return ret.json(); | ||
| 197 | + } else { | ||
| 198 | + loger.error(`获取Class详情-网络异常.状态码:${ret.status}`); | ||
| 199 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_GET_CLASS_DETAIL); | ||
| 200 | + throw ''; | ||
| 201 | + } | ||
| 202 | + }) | ||
| 203 | + .then(ret => { | ||
| 204 | + if (ret.errorCode === 0) { | ||
| 205 | + loger.log('获取Class详情完成'); | ||
| 206 | + this._emit(Sass.CLASS_GET_CLASS_DETAIL, ret); | ||
| 207 | + } else { | ||
| 208 | + loger.warn('获取Class详情失败.'); | ||
| 209 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_GET_CLASS_DETAIL); | ||
| 210 | + } | ||
| 211 | + }) | ||
| 212 | + .catch(err => { | ||
| 213 | + loger.error(`获取Class详情异常.状态码:${err}`); | ||
| 214 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_GET_CLASS_DETAIL); | ||
| 215 | + }); | ||
| 216 | + } | ||
| 217 | + | ||
| 218 | + //获取课堂课堂的完整信息-------------------------------------------------------------------------------- | ||
| 219 | + getClassParam() { | ||
| 270 | /* | 220 | /* |
| 271 | - 删除课堂中的文档,即删除课堂与文档的关联 | ||
| 272 | - /api/document/deleteRelation.do | ||
| 273 | - 参数 | ||
| 274 | - docId 文档的唯一id | ||
| 275 | - classId 课堂号 | ||
| 276 | - timestamp 时间戳 | ||
| 277 | - authId md5(docId+classId+timestamp) | 221 | + 参数 (application/x-www-form-urlencoded): |
| 222 | + 名称 类型 可选 默认值 说明 | ||
| 223 | + meetingNumber String 否 null 课堂号 | ||
| 224 | + timestamp String 否 null 时间戳 | ||
| 225 | + authId String 否 null 验证信息 md5(meetingNumber + timestamp) | ||
| 278 | 返回 (application/json): | 226 | 返回 (application/json): |
| 279 | - 0 成功, 1 验证信息错误 | 227 | + 名称 类型 说明 |
| 228 | + code int 0 正常 | ||
| 229 | + 1 课堂号必填 | ||
| 230 | + 2 无效的课堂号 | ||
| 231 | + 3 没有对应的站点 | ||
| 232 | + 4 站点已过期 | ||
| 233 | + siteId String 站点号 | ||
| 234 | + meetingNumber String 课堂号 对应的是classId | ||
| 280 | */ | 235 | */ |
| 281 | - sassDeleteDocument(_param) { | ||
| 282 | - if(GlobalConfig.isRecordPlayBack){ | ||
| 283 | - loger.log('录制回放中,能删除文档'); | ||
| 284 | - return; | 236 | + var timestamp = new Date().getTime(); |
| 237 | + var authId = MD5(GlobalConfig.classId + "" + timestamp); //课堂号+时间戳 的字符串,转成MD5 | ||
| 238 | + let url = `http://${GlobalConfig.portal}/3m/api/meeting/detail.do?meetingNumber=${GlobalConfig.classId}×tamp=${timestamp}&authId=${authId}`; | ||
| 239 | + loger.log('5.获取课堂课堂的完整信息 '); | ||
| 240 | + loger.log(url); | ||
| 241 | + fetch(url, { | ||
| 242 | + timeout: 5000 | ||
| 243 | + }) | ||
| 244 | + .then(ret => { | ||
| 245 | + if (ret.ok) { | ||
| 246 | + return ret.json(); | ||
| 247 | + } else { | ||
| 248 | + loger.error(`获取课堂课堂的完整信息-网络异常.状态码:${ret.status}`); | ||
| 249 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_GET_CLASS_PARAML); | ||
| 250 | + | ||
| 251 | + throw ''; | ||
| 285 | } | 252 | } |
| 286 | - var timestamp = new Date().getTime(); | ||
| 287 | - var authId = MD5(_param.docId + "" + _param.classId + "" + timestamp);// docId+classId+timestamp的字符串,转成MD5 | ||
| 288 | - let url = `http://${GlobalConfig.portal}/3m/api/document/deleteRelation.do?docId=${_param.docId}&classId=${GlobalConfig.classId}×tamp=${timestamp}&authId=${authId}`; | ||
| 289 | - loger.log('sassDeleteDocument', url); | ||
| 290 | - | ||
| 291 | - fetch(url, { | ||
| 292 | - timeout: 5000 | ||
| 293 | - }) | ||
| 294 | - .then(ret => { | ||
| 295 | - if (ret.ok) { | ||
| 296 | - return ret.json(); | ||
| 297 | - } else { | ||
| 298 | - loger.error(`删除文档-网络异常.状态码:${ret.status}`); | ||
| 299 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_DOC_DELETE_FAILED); | ||
| 300 | - | ||
| 301 | - throw ''; | ||
| 302 | - } | ||
| 303 | - }) | ||
| 304 | - .then(ret => { | ||
| 305 | - if (ret.code === 0) { | ||
| 306 | - loger.log('删除文档-完成'); | ||
| 307 | - this._emit(Sass.DELETE_DOCUMENT_SUCCESS, _param); | ||
| 308 | - } else { | ||
| 309 | - loger.warn('删除文档-失败.') | ||
| 310 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_DOC_DELETE_FAILED); | ||
| 311 | - } | ||
| 312 | - }) | ||
| 313 | - .catch(err => { | ||
| 314 | - loger.error(`删除文档-异常.状态码:${err}`); | ||
| 315 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_DOC_DELETE_FAILED); | ||
| 316 | - }); | 253 | + }) |
| 254 | + .then(ret => { | ||
| 255 | + if (ret.code === 0) { | ||
| 256 | + loger.log('获取课堂课堂的完整信息完成'); | ||
| 257 | + this._emit(Sass.CLASS_GET_CLASS_PARAM, ret); | ||
| 258 | + } else { | ||
| 259 | + loger.warn('获取课堂课堂的完整信息 失败.'); | ||
| 260 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_GET_CLASS_PARAML); | ||
| 261 | + } | ||
| 262 | + }) | ||
| 263 | + .catch(err => { | ||
| 264 | + loger.error(`获取课堂课堂的完整信息异常.状态码:${err}`); | ||
| 265 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_GET_CLASS_PARAML); | ||
| 266 | + }); | ||
| 267 | + } | ||
| 268 | + | ||
| 269 | + //删除文档----------------------------------------------------------------------------------------------------- | ||
| 270 | + /* | ||
| 271 | + 删除课堂中的文档,即删除课堂与文档的关联 | ||
| 272 | + /api/document/deleteRelation.do | ||
| 273 | + 参数 | ||
| 274 | + docId 文档的唯一id | ||
| 275 | + classId 课堂号 | ||
| 276 | + timestamp 时间戳 | ||
| 277 | + authId md5(docId+classId+timestamp) | ||
| 278 | + 返回 (application/json): | ||
| 279 | + 0 成功, 1 验证信息错误 | ||
| 280 | + */ | ||
| 281 | + sassDeleteDocument(_param) { | ||
| 282 | + if (GlobalConfig.isRecordPlayBack) { | ||
| 283 | + loger.log('录制回放中,能删除文档'); | ||
| 284 | + return; | ||
| 317 | } | 285 | } |
| 318 | - | ||
| 319 | - //删除媒体共享文件 | ||
| 320 | - sassDeletMediaShare(_param) { | ||
| 321 | - if(GlobalConfig.isRecordPlayBack){ | ||
| 322 | - loger.log('录制回放中,能删除文件'); | ||
| 323 | - return; | 286 | + var timestamp = new Date().getTime(); |
| 287 | + var authId = MD5(_param.docId + "" + _param.classId + "" + timestamp); // docId+classId+timestamp的字符串,转成MD5 | ||
| 288 | + let url = `http://${GlobalConfig.portal}/3m/api/document/deleteRelation.do?docId=${_param.docId}&classId=${GlobalConfig.classId}×tamp=${timestamp}&authId=${authId}`; | ||
| 289 | + loger.log('sassDeleteDocument', url); | ||
| 290 | + | ||
| 291 | + fetch(url, { | ||
| 292 | + timeout: 5000 | ||
| 293 | + }) | ||
| 294 | + .then(ret => { | ||
| 295 | + if (ret.ok) { | ||
| 296 | + return ret.json(); | ||
| 297 | + } else { | ||
| 298 | + loger.error(`删除文档-网络异常.状态码:${ret.status}`); | ||
| 299 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_DOC_DELETE_FAILED); | ||
| 300 | + | ||
| 301 | + throw ''; | ||
| 324 | } | 302 | } |
| 325 | - var timestamp = new Date().getTime(); | ||
| 326 | - var authId = MD5(_param.fileId + "" + _param.classId + "" + timestamp);// docId+classId+timestamp的字符串,转成MD5 | ||
| 327 | - let url = `http://${GlobalConfig.portal}/3m/api/sharedMedia/deleteRelation.do?fileId=${_param.fileId}&classId=${GlobalConfig.classId}×tamp=${timestamp}&authId=${authId}`; | ||
| 328 | - loger.log('删除媒体共享文件', url); | ||
| 329 | - | ||
| 330 | - fetch(url, { | ||
| 331 | - timeout: 5000 | ||
| 332 | - }) | ||
| 333 | - .then(ret => { | ||
| 334 | - if (ret.ok) { | ||
| 335 | - return ret.json(); | ||
| 336 | - } else { | ||
| 337 | - loger.error(`删除媒体共享文件-网络异常.状态码:${ret.status}`); | ||
| 338 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_MEDIASHARE_DELETE_FAILED); | ||
| 339 | - | ||
| 340 | - throw ''; | ||
| 341 | - } | ||
| 342 | - }) | ||
| 343 | - .then(ret => { | ||
| 344 | - //code 0 成功, 1 验证信息错误 | ||
| 345 | - if (ret.code === 0) { | ||
| 346 | - loger.log('删除媒体共享文件 完成'); | ||
| 347 | - this._emit(Sass.DELETE_MEDIASHARE_SUCCESS, _param); | ||
| 348 | - } else { | ||
| 349 | - loger.warn('删除媒体共享文件 失败.'); | ||
| 350 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_MEDIASHARE_DELETE_FAILED); | ||
| 351 | - } | ||
| 352 | - }) | ||
| 353 | - .catch(err => { | ||
| 354 | - loger.error(`删除媒体共享文件-异常.状态码:${err}`); | ||
| 355 | - this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_MEDIASHARE_DELETE_FAILED); | ||
| 356 | - }); | 303 | + }) |
| 304 | + .then(ret => { | ||
| 305 | + if (ret.code === 0) { | ||
| 306 | + loger.log('删除文档-完成'); | ||
| 307 | + this._emit(Sass.DELETE_DOCUMENT_SUCCESS, _param); | ||
| 308 | + } else { | ||
| 309 | + loger.warn('删除文档-失败.') | ||
| 310 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_DOC_DELETE_FAILED); | ||
| 311 | + } | ||
| 312 | + }) | ||
| 313 | + .catch(err => { | ||
| 314 | + loger.error(`删除文档-异常.状态码:${err}`); | ||
| 315 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_DOC_DELETE_FAILED); | ||
| 316 | + }); | ||
| 317 | + } | ||
| 318 | + | ||
| 319 | + //删除Music共享文件 | ||
| 320 | + sassDeletMusicShare(_param) { | ||
| 321 | + if (GlobalConfig.isRecordPlayBack) { | ||
| 322 | + loger.log('录制回放中,能删除文件'); | ||
| 323 | + return; | ||
| 357 | } | 324 | } |
| 358 | - | ||
| 359 | - | ||
| 360 | - //保存课堂的当前信息----------------------------------------------------- | ||
| 361 | - /*保存课堂的当前信息,首次是插入,后面是更新 | ||
| 362 | - /api/meeting/saveInfo.do | ||
| 363 | - 参数(application/x-www-form-urlencoded): | ||
| 364 | - info Json字符串课堂信息,由前端自己维护 | ||
| 365 | - classId 课堂号 | ||
| 366 | - timestamp 时间戳 | ||
| 367 | - authId 做基本验证,md5(classId+timestamp) | ||
| 368 | - | ||
| 369 | - 返回 (application/json): | ||
| 370 | - code 0 成功 1 课堂号为空 2 无效的课堂号 3 验证信息错误*/ | ||
| 371 | - | ||
| 372 | - saveClassStatusInfo(_param) { | ||
| 373 | - if(GlobalConfig.isRecordPlayBack){ | ||
| 374 | - loger.log('录制回放中,不需要保存课堂信息'); | ||
| 375 | - return; | 325 | + console.warn('删除Music共享实现...'); |
| 326 | + var timestamp = new Date().getTime(); | ||
| 327 | + var authId = MD5(_param.fileId + "" + _param.classId + "" + timestamp); // docId+classId+timestamp的字符串,转成MD5 | ||
| 328 | + let url = `http://${GlobalConfig.portal}/3m/api/media/deleteRelation.do?mediaId=${_param.fileId}&classId=${GlobalConfig.classId}×tamp=${timestamp}&authId=${authId}`; | ||
| 329 | + loger.log('删除媒体共享文件', url); | ||
| 330 | + | ||
| 331 | + fetch(url, { | ||
| 332 | + timeout: 5000 | ||
| 333 | + }) | ||
| 334 | + .then(ret => { | ||
| 335 | + if (ret.ok) { | ||
| 336 | + return ret.json(); | ||
| 337 | + } else { | ||
| 338 | + loger.error(`删除媒体共享文件-网络异常.状态码:${ret.status}`); | ||
| 339 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_MUSICSHARE_DELETE_FAILED); | ||
| 340 | + | ||
| 341 | + throw ''; | ||
| 376 | } | 342 | } |
| 377 | - //{"classStatusInfo":classStatusInfo} | ||
| 378 | - var timestamp = new Date().getTime(); | ||
| 379 | - var authId = MD5(GlobalConfig.classId + "" + timestamp);// (classId+timestamp)的字符串,转成MD5 | ||
| 380 | - let classStatusInfo = JSON.stringify(_param.classStatusInfo); | ||
| 381 | - let url = `http://${GlobalConfig.portal}/3m/api/meeting/saveInfo.do`; | ||
| 382 | - loger.log('saveClassStatusInfo', url); | ||
| 383 | - fetch(url, { | ||
| 384 | - method: 'POST', | ||
| 385 | - headers: { | ||
| 386 | - "Content-Type": "application/x-www-form-urlencoded" | ||
| 387 | - }, | ||
| 388 | - body: `classId=${GlobalConfig.classId}&info=${classStatusInfo}×tamp=${timestamp}&authId=${authId}`, | ||
| 389 | - timeout: 5000 | ||
| 390 | - }) | ||
| 391 | - .then(ret => { | ||
| 392 | - if (ret.ok) { | ||
| 393 | - return ret.json(); | ||
| 394 | - } else { | ||
| 395 | - loger.error(`saveClassStatusInfo-网络异常.状态码:${ret.status}`); | ||
| 396 | - //this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_DOC_DELETE_FAILED); | ||
| 397 | - throw ''; | ||
| 398 | - } | ||
| 399 | - }) | ||
| 400 | - .then(ret => { | ||
| 401 | - if (ret.code === 0) { | ||
| 402 | - loger.log('saveClassStatusInfo 完成'); | ||
| 403 | - this._emit(Sass.CLASS_SAVE_STATUS_INFO_SUCCESS, _param); | ||
| 404 | - } else if (ret.code === 1) { | ||
| 405 | - loger.log('saveClassStatusInfo 失败 课堂号为空'); | ||
| 406 | - } else if (ret.code === 2) { | ||
| 407 | - loger.log('saveClassStatusInfo 失败 无效的课堂号'); | ||
| 408 | - } else if (ret.code === 3) { | ||
| 409 | - loger.log('saveClassStatusInfo 失败 验证信息错误'); | ||
| 410 | - } else { | ||
| 411 | - loger.warn('saveClassStatusInfo 失败.', ret); | ||
| 412 | - //this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_DOC_DELETE_FAILED); | ||
| 413 | - } | ||
| 414 | - }) | ||
| 415 | - .catch(err => { | ||
| 416 | - loger.error(`saveClassStatusInfo.状态码:${err}`); | ||
| 417 | - //this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_DOC_DELETE_FAILED); | ||
| 418 | - }); | 343 | + }) |
| 344 | + .then(ret => { | ||
| 345 | + //code 0 成功, 1 验证信息错误 | ||
| 346 | + if (ret.code === 0) { | ||
| 347 | + loger.log('删除媒体共享文件 完成'); | ||
| 348 | + this._emit(Sass.DELETE_MUSICSHARE_SUCCESS, _param); | ||
| 349 | + } else { | ||
| 350 | + loger.warn('删除媒体共享文件 失败.'); | ||
| 351 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_MUSICSHARE_DELETE_FAILED); | ||
| 352 | + } | ||
| 353 | + }) | ||
| 354 | + .catch(err => { | ||
| 355 | + loger.error(`删除媒体共享文件-异常.状态码:${err}`); | ||
| 356 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_MUSICSHARE_DELETE_FAILED); | ||
| 357 | + }); | ||
| 358 | + } | ||
| 359 | + | ||
| 360 | + //删除媒体共享文件 | ||
| 361 | + sassDeletMediaShare(_param) { | ||
| 362 | + if (GlobalConfig.isRecordPlayBack) { | ||
| 363 | + loger.log('录制回放中,能删除文件'); | ||
| 364 | + return; | ||
| 419 | } | 365 | } |
| 420 | - | ||
| 421 | - //保存录制的信息,主要是录制文件的名称,必须和MCU录制的文件名相同 | ||
| 422 | - saveClassRecordContrlInfo(_param) { | ||
| 423 | - if(GlobalConfig.isRecordPlayBack){ | ||
| 424 | - loger.log('录制回放中,不需要保存'); | ||
| 425 | - return; | 366 | + var timestamp = new Date().getTime(); |
| 367 | + var authId = MD5(_param.fileId + "" + _param.classId + "" + timestamp); // docId+classId+timestamp的字符串,转成MD5 | ||
| 368 | + let url = `http://${GlobalConfig.portal}/3m/api/sharedMedia/deleteRelation.do?fileId=${_param.fileId}&classId=${GlobalConfig.classId}×tamp=${timestamp}&authId=${authId}`; | ||
| 369 | + loger.log('删除媒体共享文件', url); | ||
| 370 | + | ||
| 371 | + fetch(url, { | ||
| 372 | + timeout: 5000 | ||
| 373 | + }) | ||
| 374 | + .then(ret => { | ||
| 375 | + if (ret.ok) { | ||
| 376 | + return ret.json(); | ||
| 377 | + } else { | ||
| 378 | + loger.error(`删除媒体共享文件-网络异常.状态码:${ret.status}`); | ||
| 379 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_MEDIASHARE_DELETE_FAILED); | ||
| 380 | + | ||
| 381 | + throw ''; | ||
| 426 | } | 382 | } |
| 427 | - loger.log('保存开始录制信息'); | ||
| 428 | - let key = "3mang123A"; | ||
| 429 | - let siteID = GlobalConfig.siteId; | ||
| 430 | - let meetingID = GlobalConfig.classId; | ||
| 431 | - let userID = GlobalConfig.userId; | ||
| 432 | - let userName = GlobalConfig.userName; | ||
| 433 | - let meetingName = GlobalConfig.className; | ||
| 434 | - let startTime = GlobalConfig.classBeginTime; | ||
| 435 | - let endTime = GlobalConfig.classEndTime; | ||
| 436 | - let playUrl = ""; | ||
| 437 | - let streamName = GlobalConfig.recordFileName; | ||
| 438 | - let confRecordFileName = GlobalConfig.recordFileName; | ||
| 439 | - let downloadUrl = ""; | ||
| 440 | - let recordStatus = GlobalConfig.classStatus; | ||
| 441 | - let recordTimestamp = GlobalConfig.classTimestamp; | ||
| 442 | - | ||
| 443 | - let timestamp = new Date().getTime(); | ||
| 444 | - let authId = MD5(key + siteID + meetingID + timestamp); | ||
| 445 | - let url = `http://${GlobalConfig.portal}/3m/recordingMeeting/insertRecordingMeeting.do`; | ||
| 446 | - loger.log('saveClassRecordContrlInfo', url); | ||
| 447 | - | ||
| 448 | - fetch( encodeURI(url), { | ||
| 449 | - method: 'POST', | ||
| 450 | - headers: { | ||
| 451 | - "Content-Type": "application/x-www-form-urlencoded" | ||
| 452 | - }, | ||
| 453 | - body: `siteID=${siteID}&meetingID=${meetingID}&userID=${userID}&userName=${userName}&meetingName=${meetingName}&startTime=${startTime}&endTime=${endTime}&playUrl=${playUrl}&streamName=${streamName}&downloadUrl=${downloadUrl}&configFile=${confRecordFileName}×tamp=${timestamp}&recordTimestamp=${recordTimestamp}&authId=${authId}`, | ||
| 454 | - timeout: 5000 | ||
| 455 | - }) | ||
| 456 | - | ||
| 457 | - .then(ret => { | ||
| 458 | - if (ret.ok) { | ||
| 459 | - return ret.json(); | ||
| 460 | - } else { | ||
| 461 | - loger.error(`保存开始录制信息-网络异常.状态码:${ret.status}`); | ||
| 462 | - throw ''; | ||
| 463 | - } | ||
| 464 | - }) | ||
| 465 | - .then(ret => { | ||
| 466 | - if (ret.errorCode === 0) { | ||
| 467 | - loger.log('保存开始录制信息 完成'); | ||
| 468 | - this._emit(Sass.CLASS_SAVE_RECORD_INFO_SUCCESS, _param); | ||
| 469 | - } else { | ||
| 470 | - loger.warn('保存开始录制信息 失败.', ret); | ||
| 471 | - } | ||
| 472 | - }) | ||
| 473 | - .catch(err => { | ||
| 474 | - loger.error(`保存开始录制信息异常.状态码:${err}`); | ||
| 475 | - }); | 383 | + }) |
| 384 | + .then(ret => { | ||
| 385 | + //code 0 成功, 1 验证信息错误 | ||
| 386 | + if (ret.code === 0) { | ||
| 387 | + loger.log('删除媒体共享文件 完成'); | ||
| 388 | + this._emit(Sass.DELETE_MEDIASHARE_SUCCESS, _param); | ||
| 389 | + } else { | ||
| 390 | + loger.warn('删除媒体共享文件 失败.'); | ||
| 391 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_MEDIASHARE_DELETE_FAILED); | ||
| 392 | + } | ||
| 393 | + }) | ||
| 394 | + .catch(err => { | ||
| 395 | + loger.error(`删除媒体共享文件-异常.状态码:${err}`); | ||
| 396 | + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_MEDIASHARE_DELETE_FAILED); | ||
| 397 | + }); | ||
| 398 | + } | ||
| 399 | + | ||
| 400 | + //保存课堂的当前信息----------------------------------------------------- | ||
| 401 | + /*保存课堂的当前信息,首次是插入,后面是更新 | ||
| 402 | + /api/meeting/saveInfo.do | ||
| 403 | + 参数(application/x-www-form-urlencoded): | ||
| 404 | + info Json字符串课堂信息,由前端自己维护 | ||
| 405 | + classId 课堂号 | ||
| 406 | + timestamp 时间戳 | ||
| 407 | + authId 做基本验证,md5(classId+timestamp) | ||
| 408 | + | ||
| 409 | + 返回 (application/json): | ||
| 410 | + code 0 成功 1 课堂号为空 2 无效的课堂号 3 验证信息错误*/ | ||
| 411 | + | ||
| 412 | + saveClassStatusInfo(_param) { | ||
| 413 | + if (GlobalConfig.isRecordPlayBack) { | ||
| 414 | + loger.log('录制回放中,不需要保存课堂信息'); | ||
| 415 | + return; | ||
| 476 | } | 416 | } |
| 477 | - | ||
| 478 | - | ||
| 479 | - //答题卡------------------------------------------------------- | ||
| 480 | - //创建答题数据 | ||
| 481 | - creatQuestion(_param){ | ||
| 482 | - if(GlobalConfig.isRecordPlayBack){ | ||
| 483 | - loger.log('录制回放中->创建答题数据->不做操作'); | ||
| 484 | - return; | 417 | + //{"classStatusInfo":classStatusInfo} |
| 418 | + var timestamp = new Date().getTime(); | ||
| 419 | + var authId = MD5(GlobalConfig.classId + "" + timestamp); // (classId+timestamp)的字符串,转成MD5 | ||
| 420 | + let classStatusInfo = JSON.stringify(_param.classStatusInfo); | ||
| 421 | + let url = `http://${GlobalConfig.portal}/3m/api/meeting/saveInfo.do`; | ||
| 422 | + loger.log('saveClassStatusInfo', url); | ||
| 423 | + fetch(url, { | ||
| 424 | + method: 'POST', | ||
| 425 | + headers: { | ||
| 426 | + "Content-Type": "application/x-www-form-urlencoded" | ||
| 427 | + }, | ||
| 428 | + body: `classId=${GlobalConfig.classId}&info=${classStatusInfo}×tamp=${timestamp}&authId=${authId}`, | ||
| 429 | + timeout: 5000 | ||
| 430 | + }) | ||
| 431 | + .then(ret => { | ||
| 432 | + if (ret.ok) { | ||
| 433 | + return ret.json(); | ||
| 434 | + } else { | ||
| 435 | + loger.error(`saveClassStatusInfo-网络异常.状态码:${ret.status}`); | ||
| 436 | + //this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_DOC_DELETE_FAILED); | ||
| 437 | + throw ''; | ||
| 485 | } | 438 | } |
| 486 | - /* { | ||
| 487 | - "type": 1,//1单选,2多选,3判断,4点名 | ||
| 488 | - "content": "题目",//没有就传"" | ||
| 489 | - "timeLimit": 88,//有效时间(秒) | ||
| 490 | - "correct": "[]",//正确答案,没有就传[] | ||
| 491 | - "options": {},//选项数组,没有就传[] | ||
| 492 | - "option": []//学生选择的答案,没有就传[] | ||
| 493 | - }*/ | ||
| 494 | - if(!_param){ | ||
| 495 | - loger.warn('创建答题数据->参数错误->param:',_param); | ||
| 496 | - this._emit(Sass.SASS_CREAT_QUESTION_FAILED); | ||
| 497 | - return; | 439 | + }) |
| 440 | + .then(ret => { | ||
| 441 | + if (ret.code === 0) { | ||
| 442 | + loger.log('saveClassStatusInfo 完成'); | ||
| 443 | + this._emit(Sass.CLASS_SAVE_STATUS_INFO_SUCCESS, _param); | ||
| 444 | + } else if (ret.code === 1) { | ||
| 445 | + loger.log('saveClassStatusInfo 失败 课堂号为空'); | ||
| 446 | + } else if (ret.code === 2) { | ||
| 447 | + loger.log('saveClassStatusInfo 失败 无效的课堂号'); | ||
| 448 | + } else if (ret.code === 3) { | ||
| 449 | + loger.log('saveClassStatusInfo 失败 验证信息错误'); | ||
| 450 | + } else { | ||
| 451 | + loger.warn('saveClassStatusInfo 失败.', ret); | ||
| 452 | + //this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_DOC_DELETE_FAILED); | ||
| 453 | + } | ||
| 454 | + }) | ||
| 455 | + .catch(err => { | ||
| 456 | + loger.error(`saveClassStatusInfo.状态码:${err}`); | ||
| 457 | + //this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_DOC_DELETE_FAILED); | ||
| 458 | + }); | ||
| 459 | + } | ||
| 460 | + | ||
| 461 | + //保存录制的信息,主要是录制文件的名称,必须和MCU录制的文件名相同 | ||
| 462 | + saveClassRecordContrlInfo(_param) { | ||
| 463 | + if (GlobalConfig.isRecordPlayBack) { | ||
| 464 | + loger.log('录制回放中,不需要保存'); | ||
| 465 | + return; | ||
| 466 | + } | ||
| 467 | + loger.log('保存开始录制信息'); | ||
| 468 | + let key = "3mang123A"; | ||
| 469 | + let siteID = GlobalConfig.siteId; | ||
| 470 | + let meetingID = GlobalConfig.classId; | ||
| 471 | + let userID = GlobalConfig.userId; | ||
| 472 | + let userName = GlobalConfig.userName; | ||
| 473 | + let meetingName = GlobalConfig.className; | ||
| 474 | + let startTime = GlobalConfig.classBeginTime; | ||
| 475 | + let endTime = GlobalConfig.classEndTime; | ||
| 476 | + let playUrl = ""; | ||
| 477 | + let streamName = GlobalConfig.recordFileName; | ||
| 478 | + let confRecordFileName = GlobalConfig.recordFileName; | ||
| 479 | + let downloadUrl = ""; | ||
| 480 | + let recordStatus = GlobalConfig.classStatus; | ||
| 481 | + let recordTimestamp = GlobalConfig.classTimestamp; | ||
| 482 | + | ||
| 483 | + let timestamp = new Date().getTime(); | ||
| 484 | + let authId = MD5(key + siteID + meetingID + timestamp); | ||
| 485 | + let url = `http://${GlobalConfig.portal}/3m/recordingMeeting/insertRecordingMeeting.do`; | ||
| 486 | + loger.log('saveClassRecordContrlInfo', url); | ||
| 487 | + | ||
| 488 | + fetch(encodeURI(url), { | ||
| 489 | + method: 'POST', | ||
| 490 | + headers: { | ||
| 491 | + "Content-Type": "application/x-www-form-urlencoded" | ||
| 492 | + }, | ||
| 493 | + body: `siteID=${siteID}&meetingID=${meetingID}&userID=${userID}&userName=${userName}&meetingName=${meetingName}&startTime=${startTime}&endTime=${endTime}&playUrl=${playUrl}&streamName=${streamName}&downloadUrl=${downloadUrl}&configFile=${confRecordFileName}×tamp=${timestamp}&recordTimestamp=${recordTimestamp}&authId=${authId}`, | ||
| 494 | + timeout: 5000 | ||
| 495 | + }) | ||
| 496 | + | ||
| 497 | + .then(ret => { | ||
| 498 | + if (ret.ok) { | ||
| 499 | + return ret.json(); | ||
| 500 | + } else { | ||
| 501 | + loger.error(`保存开始录制信息-网络异常.状态码:${ret.status}`); | ||
| 502 | + throw ''; | ||
| 498 | } | 503 | } |
| 499 | - let classId=GlobalConfig.classId;//课堂号 | ||
| 500 | - var timestamp = new Date().getTime(); | ||
| 501 | - let authId = MD5(classId+""+timestamp); | ||
| 502 | - | ||
| 503 | - let type = parseInt(_param.type);//1单选,2多选,3判断,4点名 | ||
| 504 | - let content =_param.content||""; | ||
| 505 | - let timeLimit = parseInt(_param.timeLimit); | ||
| 506 | - let correct = _param.correct.toString(); | ||
| 507 | - let options = JSON.stringify(_param.options); | ||
| 508 | - | ||
| 509 | - let url = `http://${GlobalConfig.portal}/3m/api/question/add.do`; | ||
| 510 | - loger.log('创建答题数据', url); | ||
| 511 | - | ||
| 512 | - fetch( encodeURI(url), { | ||
| 513 | - method: 'POST', | ||
| 514 | - headers: { | ||
| 515 | - "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" | ||
| 516 | - }, | ||
| 517 | - //classId=1×tamp=2&authId=3&content=&options=["A","B","C","D"]&type=1&correct=0&timeLimit=60 | ||
| 518 | - body: `classId=${classId}×tamp=${timestamp}&authId=${authId}&content=${content}&options=${options}&type=${type}&correct=${correct}&timeLimit=${timeLimit}`, | ||
| 519 | - timeout: 5000 | 504 | + }) |
| 505 | + .then(ret => { | ||
| 506 | + if (ret.errorCode === 0) { | ||
| 507 | + loger.log('保存开始录制信息 完成'); | ||
| 508 | + this._emit(Sass.CLASS_SAVE_RECORD_INFO_SUCCESS, _param); | ||
| 509 | + } else { | ||
| 510 | + loger.warn('保存开始录制信息 失败.', ret); | ||
| 511 | + } | ||
| 512 | + }) | ||
| 513 | + .catch(err => { | ||
| 514 | + loger.error(`保存开始录制信息异常.状态码:${err}`); | ||
| 515 | + }); | ||
| 516 | + } | ||
| 517 | + | ||
| 518 | + //答题卡------------------------------------------------------- | ||
| 519 | + //创建答题数据 | ||
| 520 | + creatQuestion(_param) { | ||
| 521 | + if (GlobalConfig.isRecordPlayBack) { | ||
| 522 | + loger.log('录制回放中->创建答题数据->不做操作'); | ||
| 523 | + return; | ||
| 524 | + } | ||
| 525 | + /* { | ||
| 526 | + "type": 1,//1单选,2多选,3判断,4点名 | ||
| 527 | + "content": "题目",//没有就传"" | ||
| 528 | + "timeLimit": 88,//有效时间(秒) | ||
| 529 | + "correct": "[]",//正确答案,没有就传[] | ||
| 530 | + "options": {},//选项数组,没有就传[] | ||
| 531 | + "option": []//学生选择的答案,没有就传[] | ||
| 532 | + }*/ | ||
| 533 | + if (!_param) { | ||
| 534 | + loger.warn('创建答题数据->参数错误->param:', _param); | ||
| 535 | + this._emit(Sass.SASS_CREAT_QUESTION_FAILED); | ||
| 536 | + return; | ||
| 537 | + } | ||
| 538 | + let classId = GlobalConfig.classId; //课堂号 | ||
| 539 | + var timestamp = new Date().getTime(); | ||
| 540 | + let authId = MD5(classId + "" + timestamp); | ||
| 541 | + | ||
| 542 | + let type = parseInt(_param.type); //1单选,2多选,3判断,4点名 | ||
| 543 | + let content = _param.content || ""; | ||
| 544 | + let timeLimit = parseInt(_param.timeLimit); | ||
| 545 | + let correct = _param.correct.toString(); | ||
| 546 | + let options = JSON.stringify(_param.options); | ||
| 547 | + | ||
| 548 | + let url = `http://${GlobalConfig.portal}/3m/api/question/add.do`; | ||
| 549 | + loger.log('创建答题数据', url); | ||
| 550 | + | ||
| 551 | + fetch(encodeURI(url), { | ||
| 552 | + method: 'POST', | ||
| 553 | + headers: { | ||
| 554 | + "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" | ||
| 555 | + }, | ||
| 556 | + //classId=1×tamp=2&authId=3&content=&options=["A","B","C","D"]&type=1&correct=0&timeLimit=60 | ||
| 557 | + body: `classId=${classId}×tamp=${timestamp}&authId=${authId}&content=${content}&options=${options}&type=${type}&correct=${correct}&timeLimit=${timeLimit}`, | ||
| 558 | + timeout: 5000 | ||
| 559 | + }) | ||
| 560 | + | ||
| 561 | + .then(ret => { | ||
| 562 | + if (ret.ok) { | ||
| 563 | + return ret.json(); | ||
| 564 | + } else { | ||
| 565 | + loger.error(`创建答题数据-网络异常.状态码:${ret.status}`); | ||
| 566 | + this._emit(Sass.SASS_CREAT_QUESTION_FAILED); | ||
| 567 | + throw ''; | ||
| 568 | + } | ||
| 520 | }) | 569 | }) |
| 521 | - | ||
| 522 | - .then(ret => { | ||
| 523 | - if (ret.ok) { | ||
| 524 | - return ret.json(); | ||
| 525 | - } else { | ||
| 526 | - loger.error(`创建答题数据-网络异常.状态码:${ret.status}`); | ||
| 527 | - this._emit(Sass.SASS_CREAT_QUESTION_FAILED); | ||
| 528 | - throw ''; | ||
| 529 | - } | ||
| 530 | - }) | ||
| 531 | - .then(ret => { | ||
| 532 | - if (ret.code== 0) { | ||
| 533 | - //errorCode int 0 正常 1 没有指定的课堂 4 验证信息错误(authId) | ||
| 534 | - // {"code":0,"id":1} | ||
| 535 | - let question={}; | ||
| 536 | - question.questionId=ret.id; | ||
| 537 | - question.type=type; | ||
| 538 | - question.content=_param.content||[]; | ||
| 539 | - question.timeLimit=timeLimit; | ||
| 540 | - question.correct=_param.correct||[]; | ||
| 541 | - question.options=_param.options||[]; | ||
| 542 | - loger.log('创建答题数据->完成->',question); | ||
| 543 | - this._emit(Sass.SASS_CREAT_QUESTION_SUCCESS, question); | ||
| 544 | - } else { | ||
| 545 | - loger.warn('创建答题数据->失败.', ret); | ||
| 546 | - this._emit(Sass.SASS_CREAT_QUESTION_FAILED); | ||
| 547 | - } | ||
| 548 | - }) | ||
| 549 | - .catch(err => { | ||
| 550 | - loger.error(`创建答题数据->状态码:${err}`); | ||
| 551 | - this._emit(Sass.SASS_CREAT_QUESTION_FAILED); | ||
| 552 | - }); | 570 | + .then(ret => { |
| 571 | + if (ret.code == 0) { | ||
| 572 | + //errorCode int 0 正常 1 没有指定的课堂 4 验证信息错误(authId) | ||
| 573 | + // {"code":0,"id":1} | ||
| 574 | + let question = {}; | ||
| 575 | + question.questionId = ret.id; | ||
| 576 | + question.type = type; | ||
| 577 | + question.content = _param.content || []; | ||
| 578 | + question.timeLimit = timeLimit; | ||
| 579 | + question.correct = _param.correct || []; | ||
| 580 | + question.options = _param.options || []; | ||
| 581 | + loger.log('创建答题数据->完成->', question); | ||
| 582 | + this._emit(Sass.SASS_CREAT_QUESTION_SUCCESS, question); | ||
| 583 | + } else { | ||
| 584 | + loger.warn('创建答题数据->失败.', ret); | ||
| 585 | + this._emit(Sass.SASS_CREAT_QUESTION_FAILED); | ||
| 586 | + } | ||
| 587 | + }) | ||
| 588 | + .catch(err => { | ||
| 589 | + loger.error(`创建答题数据->状态码:${err}`); | ||
| 590 | + this._emit(Sass.SASS_CREAT_QUESTION_FAILED); | ||
| 591 | + }); | ||
| 553 | } | 592 | } |
| 554 | //保存答题数据 | 593 | //保存答题数据 |
| 555 | - sendAnswer(_param){ | ||
| 556 | - if(GlobalConfig.isRecordPlayBack){ | ||
| 557 | - loger.log('录制回放中->保存答题数据->不做操作'); | ||
| 558 | - return; | ||
| 559 | - } | ||
| 560 | - if(!_param){ | ||
| 561 | - loger.warn('保存答题数据->参数错误->param:',_param); | 594 | + sendAnswer(_param) { |
| 595 | + if (GlobalConfig.isRecordPlayBack) { | ||
| 596 | + loger.log('录制回放中->保存答题数据->不做操作'); | ||
| 597 | + return; | ||
| 598 | + } | ||
| 599 | + if (!_param) { | ||
| 600 | + loger.warn('保存答题数据->参数错误->param:', _param); | ||
| 601 | + this._emit(Sass.SASS_SEND_ANSWER_FAILED); | ||
| 602 | + return; | ||
| 603 | + } | ||
| 604 | + /*classId String课堂号 | ||
| 605 | + timestamp 时间戳 | ||
| 606 | + authId String验证信息md5(classId+timestamp) | ||
| 607 | + | ||
| 608 | + questionId long 题目id | ||
| 609 | + answer String 选择的选项的索引,如果是多选,用英文逗号分隔。例如:'0,3' | ||
| 610 | + userId String 用户id | ||
| 611 | + userName String 用户名字*/ | ||
| 612 | + | ||
| 613 | + let classId = GlobalConfig.classId; //课堂号 | ||
| 614 | + var timestamp = new Date().getTime(); | ||
| 615 | + let authId = MD5(classId + "" + timestamp); | ||
| 616 | + | ||
| 617 | + let type = parseInt(_param.type); //1单选,2多选,3判断,4点名 | ||
| 618 | + | ||
| 619 | + let questionId = parseInt(_param.questionId); //题目id | ||
| 620 | + let answer = _param.answer.toString(); | ||
| 621 | + let userId = _param.userId; | ||
| 622 | + let userName = _param.userName; | ||
| 623 | + | ||
| 624 | + let url = `http://${GlobalConfig.portal}/3m/api/question/answer.do`; | ||
| 625 | + loger.log('保存答题数据', url); | ||
| 626 | + | ||
| 627 | + fetch(encodeURI(url), { | ||
| 628 | + method: 'POST', | ||
| 629 | + headers: { | ||
| 630 | + "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" | ||
| 631 | + }, | ||
| 632 | + //classId=1×tamp=2&authId=3&questionId=1&answer=0&userId=111&userName=zhang3 | ||
| 633 | + body: `classId=${classId}×tamp=${timestamp}&authId=${authId}&questionId=${questionId}&answer=${answer}&userId=${userId}&userName=${userName}`, | ||
| 634 | + timeout: 5000 | ||
| 635 | + }) | ||
| 636 | + | ||
| 637 | + .then(ret => { | ||
| 638 | + if (ret.ok) { | ||
| 639 | + return ret.json(); | ||
| 640 | + } else { | ||
| 641 | + loger.error(`保存答题数据-网络异常.状态码:${ret.status}`); | ||
| 562 | this._emit(Sass.SASS_SEND_ANSWER_FAILED); | 642 | this._emit(Sass.SASS_SEND_ANSWER_FAILED); |
| 563 | - return; | ||
| 564 | - } | ||
| 565 | - /*classId String课堂号 | ||
| 566 | - timestamp 时间戳 | ||
| 567 | - authId String验证信息md5(classId+timestamp) | ||
| 568 | - | ||
| 569 | - questionId long 题目id | ||
| 570 | - answer String 选择的选项的索引,如果是多选,用英文逗号分隔。例如:'0,3' | ||
| 571 | - userId String 用户id | ||
| 572 | - userName String 用户名字*/ | ||
| 573 | - | ||
| 574 | - let classId=GlobalConfig.classId;//课堂号 | ||
| 575 | - var timestamp = new Date().getTime(); | ||
| 576 | - let authId = MD5(classId+""+timestamp); | ||
| 577 | - | ||
| 578 | - let type = parseInt(_param.type);//1单选,2多选,3判断,4点名 | ||
| 579 | - | ||
| 580 | - let questionId = parseInt(_param.questionId);//题目id | ||
| 581 | - let answer = _param.answer.toString(); | ||
| 582 | - let userId = _param.userId; | ||
| 583 | - let userName = _param.userName; | ||
| 584 | - | ||
| 585 | - let url = `http://${GlobalConfig.portal}/3m/api/question/answer.do`; | ||
| 586 | - loger.log('保存答题数据', url); | ||
| 587 | - | ||
| 588 | - fetch( encodeURI(url), { | ||
| 589 | - method: 'POST', | ||
| 590 | - headers: { | ||
| 591 | - "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" | ||
| 592 | - }, | ||
| 593 | - //classId=1×tamp=2&authId=3&questionId=1&answer=0&userId=111&userName=zhang3 | ||
| 594 | - body: `classId=${classId}×tamp=${timestamp}&authId=${authId}&questionId=${questionId}&answer=${answer}&userId=${userId}&userName=${userName}`, | ||
| 595 | - timeout: 5000 | 643 | + throw ''; |
| 644 | + } | ||
| 596 | }) | 645 | }) |
| 597 | - | ||
| 598 | - .then(ret => { | ||
| 599 | - if (ret.ok) { | ||
| 600 | - return ret.json(); | ||
| 601 | - } else { | ||
| 602 | - loger.error(`保存答题数据-网络异常.状态码:${ret.status}`); | ||
| 603 | - this._emit(Sass.SASS_SEND_ANSWER_FAILED); | ||
| 604 | - throw ''; | ||
| 605 | - } | ||
| 606 | - }) | ||
| 607 | - .then(ret => { | ||
| 608 | - if (ret.code== 0) { | ||
| 609 | - // 0 正常 1 没有指定的课堂 4 验证信息错误(authId) 5 没有指定的题目 6 题目不属于该课堂 | ||
| 610 | - //{"code":0} | ||
| 611 | - let question=_param; | ||
| 612 | - loger.log('保存答题数据->完成'); | ||
| 613 | - this._emit(Sass.SASS_SEND_ANSWER_SUCCESS, question); | ||
| 614 | - } else { | ||
| 615 | - loger.warn('保存答题数据->失败.', ret); | ||
| 616 | - this._emit(Sass.SASS_SEND_ANSWER_FAILED); | ||
| 617 | - } | ||
| 618 | - }) | ||
| 619 | - .catch(err => { | ||
| 620 | - loger.error(`保存答题数据->状态码:${err}`); | ||
| 621 | - this._emit(Sass.SASS_SEND_ANSWER_FAILED); | ||
| 622 | - }); | 646 | + .then(ret => { |
| 647 | + if (ret.code == 0) { | ||
| 648 | + // 0 正常 1 没有指定的课堂 4 验证信息错误(authId) 5 没有指定的题目 6 题目不属于该课堂 | ||
| 649 | + //{"code":0} | ||
| 650 | + let question = _param; | ||
| 651 | + loger.log('保存答题数据->完成'); | ||
| 652 | + this._emit(Sass.SASS_SEND_ANSWER_SUCCESS, question); | ||
| 653 | + } else { | ||
| 654 | + loger.warn('保存答题数据->失败.', ret); | ||
| 655 | + this._emit(Sass.SASS_SEND_ANSWER_FAILED); | ||
| 656 | + } | ||
| 657 | + }) | ||
| 658 | + .catch(err => { | ||
| 659 | + loger.error(`保存答题数据->状态码:${err}`); | ||
| 660 | + this._emit(Sass.SASS_SEND_ANSWER_FAILED); | ||
| 661 | + }); | ||
| 623 | } | 662 | } |
| 624 | //查询题目数据 | 663 | //查询题目数据 |
| 625 | - getQuestion(_param){ | ||
| 626 | - if(GlobalConfig.isRecordPlayBack){ | ||
| 627 | - loger.log('录制回放中->查询题目数据->不做操作'); | ||
| 628 | - return; | ||
| 629 | - } | ||
| 630 | - if(!_param){ | ||
| 631 | - loger.warn('查询题目数据->参数错误->param:',_param); | 664 | + getQuestion(_param) { |
| 665 | + if (GlobalConfig.isRecordPlayBack) { | ||
| 666 | + loger.log('录制回放中->查询题目数据->不做操作'); | ||
| 667 | + return; | ||
| 668 | + } | ||
| 669 | + if (!_param) { | ||
| 670 | + loger.warn('查询题目数据->参数错误->param:', _param); | ||
| 671 | + this._emit(Sass.SASS_GET_QUESTION_FAILED); | ||
| 672 | + return; | ||
| 673 | + } | ||
| 674 | + //questionId long 题目id | ||
| 675 | + | ||
| 676 | + let questionId = parseInt(_param.questionId); //题目id | ||
| 677 | + let url = `http://${GlobalConfig.portal}/3m/api/question/get.do`; | ||
| 678 | + loger.log('查询题目数据', url); | ||
| 679 | + //接口中用的是GET | ||
| 680 | + fetch(encodeURI(url), { | ||
| 681 | + method: 'POST', | ||
| 682 | + headers: { | ||
| 683 | + "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" | ||
| 684 | + }, | ||
| 685 | + body: `questionId=${questionId}`, | ||
| 686 | + timeout: 5000 | ||
| 687 | + }) | ||
| 688 | + | ||
| 689 | + .then(ret => { | ||
| 690 | + if (ret.ok) { | ||
| 691 | + return ret.json(); | ||
| 692 | + } else { | ||
| 693 | + loger.error(`查询题目数据-网络异常.状态码:${ret.status}`); | ||
| 632 | this._emit(Sass.SASS_GET_QUESTION_FAILED); | 694 | this._emit(Sass.SASS_GET_QUESTION_FAILED); |
| 633 | - return; | ||
| 634 | - } | ||
| 635 | - //questionId long 题目id | ||
| 636 | - | ||
| 637 | - let questionId = parseInt(_param.questionId);//题目id | ||
| 638 | - let url = `http://${GlobalConfig.portal}/3m/api/question/get.do`; | ||
| 639 | - loger.log('查询题目数据', url); | ||
| 640 | - //接口中用的是GET | ||
| 641 | - fetch( encodeURI(url), { | ||
| 642 | - method: 'POST', | ||
| 643 | - headers: { | ||
| 644 | - "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" | ||
| 645 | - }, | ||
| 646 | - body: `questionId=${questionId}`, | ||
| 647 | - timeout: 5000 | 695 | + throw ''; |
| 696 | + } | ||
| 648 | }) | 697 | }) |
| 649 | - | ||
| 650 | - .then(ret => { | ||
| 651 | - if (ret.ok) { | ||
| 652 | - return ret.json(); | ||
| 653 | - } else { | ||
| 654 | - loger.error(`查询题目数据-网络异常.状态码:${ret.status}`); | ||
| 655 | - this._emit(Sass.SASS_GET_QUESTION_FAILED); | ||
| 656 | - throw ''; | ||
| 657 | - } | ||
| 658 | - }) | ||
| 659 | - .then(ret => { | ||
| 660 | - if (ret.code== 0) { | ||
| 661 | - //0 正常 5 没有指定的题目 | ||
| 662 | - //{"timeLimit":90,"code":0,"options":"[\"A\",\"B\",\"C\"]","id":22,"type":2,"content":"题目"} | ||
| 663 | - loger.log('查询题目数据->完成'); | ||
| 664 | - let question={}; | ||
| 665 | - question.questionId=ret.id||questionId; | ||
| 666 | - question.type=ret.type; | ||
| 667 | - question.timeLimit=ret.timeLimit; | ||
| 668 | - question.options=ret.options; | ||
| 669 | - question.content=ret.content; | ||
| 670 | - | ||
| 671 | - this._emit(Sass.SASS_GET_QUESTION_SUCCESS, question); | ||
| 672 | - } else { | ||
| 673 | - loger.warn('查询题目数据->失败.', ret); | ||
| 674 | - this._emit(Sass.SASS_GET_QUESTION_FAILED); | ||
| 675 | - } | ||
| 676 | - }) | ||
| 677 | - .catch(err => { | ||
| 678 | - loger.error(`查询题目数据->状态码:${err}`); | ||
| 679 | - this._emit(Sass.SASS_GET_QUESTION_FAILED); | ||
| 680 | - }); | 698 | + .then(ret => { |
| 699 | + if (ret.code == 0) { | ||
| 700 | + //0 正常 5 没有指定的题目 | ||
| 701 | + //{"timeLimit":90,"code":0,"options":"[\"A\",\"B\",\"C\"]","id":22,"type":2,"content":"题目"} | ||
| 702 | + loger.log('查询题目数据->完成'); | ||
| 703 | + let question = {}; | ||
| 704 | + question.questionId = ret.id || questionId; | ||
| 705 | + question.type = ret.type; | ||
| 706 | + question.timeLimit = ret.timeLimit; | ||
| 707 | + question.options = ret.options; | ||
| 708 | + question.content = ret.content; | ||
| 709 | + | ||
| 710 | + this._emit(Sass.SASS_GET_QUESTION_SUCCESS, question); | ||
| 711 | + } else { | ||
| 712 | + loger.warn('查询题目数据->失败.', ret); | ||
| 713 | + this._emit(Sass.SASS_GET_QUESTION_FAILED); | ||
| 714 | + } | ||
| 715 | + }) | ||
| 716 | + .catch(err => { | ||
| 717 | + loger.error(`查询题目数据->状态码:${err}`); | ||
| 718 | + this._emit(Sass.SASS_GET_QUESTION_FAILED); | ||
| 719 | + }); | ||
| 681 | } | 720 | } |
| 682 | //查询答题结果数据 | 721 | //查询答题结果数据 |
| 683 | - getQuestionResult(_param){ | ||
| 684 | - if(GlobalConfig.isRecordPlayBack){ | ||
| 685 | - loger.log('录制回放中->查询答题结果数据->不做操作'); | ||
| 686 | - return; | 722 | + getQuestionResult(_param) { |
| 723 | + if (GlobalConfig.isRecordPlayBack) { | ||
| 724 | + loger.log('录制回放中->查询答题结果数据->不做操作'); | ||
| 725 | + return; | ||
| 726 | + } | ||
| 727 | + if (!_param) { | ||
| 728 | + loger.warn('查询答题结果数据->参数错误->param:', _param); | ||
| 729 | + this._emit(Sass.SASS_GET_QUESTION_RESULT_FAILED); | ||
| 730 | + return; | ||
| 731 | + } | ||
| 732 | + //questionId long 题目id | ||
| 733 | + | ||
| 734 | + let questionId = parseInt(_param.questionId); //题目id | ||
| 735 | + let url = `http://${GlobalConfig.portal}/3m/api/question/results.do`; | ||
| 736 | + loger.log('查询答题结果数据', url); | ||
| 737 | + | ||
| 738 | + fetch(encodeURI(url), { | ||
| 739 | + method: 'POST', | ||
| 740 | + headers: { | ||
| 741 | + "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" | ||
| 742 | + }, | ||
| 743 | + body: `questionId=${questionId}`, | ||
| 744 | + timeout: 5000 | ||
| 745 | + }) | ||
| 746 | + | ||
| 747 | + .then(ret => { | ||
| 748 | + if (ret.ok) { | ||
| 749 | + return ret.json(); | ||
| 750 | + } else { | ||
| 751 | + loger.error(`查询答题结果数据-网络异常.状态码:${ret.status}`); | ||
| 752 | + this._emit(Sass.SASS_GET_QUESTION_RESULT_FAILED); | ||
| 753 | + throw ''; | ||
| 687 | } | 754 | } |
| 688 | - if(!_param){ | ||
| 689 | - loger.warn('查询答题结果数据->参数错误->param:',_param); | ||
| 690 | - this._emit(Sass.SASS_GET_QUESTION_RESULT_FAILED); | ||
| 691 | - return; | 755 | + }) |
| 756 | + .then(ret => { | ||
| 757 | + if (ret.code == 0) { | ||
| 758 | + //int 0 正常5 没有指定的题目 | ||
| 759 | + /* list array 数组 | ||
| 760 | + userId string 用户id | ||
| 761 | + userName string 用户姓名 | ||
| 762 | + answer string 答案。选项的索引,多个时用逗号分隔 | ||
| 763 | + {"timeLimit":0,"content":"test question","id":11,"code":0,"type":3,"options":"["True", "False"]"}*/ | ||
| 764 | + | ||
| 765 | + loger.log('查询答题结果数据->完成'); | ||
| 766 | + let result = _param || {}; | ||
| 767 | + result.questionId = questionId; | ||
| 768 | + result.list = ret.list; | ||
| 769 | + this._emit(Sass.SASS_GET_QUESTION_RESULT_SUCCESS, result); | ||
| 770 | + } else { | ||
| 771 | + loger.warn('查询答题结果数据->失败.', ret); | ||
| 772 | + this._emit(Sass.SASS_GET_QUESTION_RESULT_FAILED); | ||
| 692 | } | 773 | } |
| 693 | - //questionId long 题目id | ||
| 694 | - | ||
| 695 | - let questionId = parseInt(_param.questionId);//题目id | ||
| 696 | - let url = `http://${GlobalConfig.portal}/3m/api/question/results.do`; | ||
| 697 | - loger.log('查询答题结果数据', url); | ||
| 698 | - | ||
| 699 | - fetch( encodeURI(url), { | ||
| 700 | - method: 'POST', | ||
| 701 | - headers: { | ||
| 702 | - "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" | ||
| 703 | - }, | ||
| 704 | - body: `questionId=${questionId}`, | ||
| 705 | - timeout: 5000 | ||
| 706 | - }) | ||
| 707 | - | ||
| 708 | - .then(ret => { | ||
| 709 | - if (ret.ok) { | ||
| 710 | - return ret.json(); | ||
| 711 | - } else { | ||
| 712 | - loger.error(`查询答题结果数据-网络异常.状态码:${ret.status}`); | ||
| 713 | - this._emit(Sass.SASS_GET_QUESTION_RESULT_FAILED); | ||
| 714 | - throw ''; | ||
| 715 | - } | ||
| 716 | - }) | ||
| 717 | - .then(ret => { | ||
| 718 | - if (ret.code== 0) { | ||
| 719 | - //int 0 正常5 没有指定的题目 | ||
| 720 | - /* list array 数组 | ||
| 721 | - userId string 用户id | ||
| 722 | - userName string 用户姓名 | ||
| 723 | - answer string 答案。选项的索引,多个时用逗号分隔 | ||
| 724 | - {"timeLimit":0,"content":"test question","id":11,"code":0,"type":3,"options":"["True", "False"]"}*/ | ||
| 725 | - | ||
| 726 | - loger.log('查询答题结果数据->完成'); | ||
| 727 | - let result=_param||{}; | ||
| 728 | - result.questionId=questionId; | ||
| 729 | - result.list=ret.list; | ||
| 730 | - this._emit(Sass.SASS_GET_QUESTION_RESULT_SUCCESS, result); | ||
| 731 | - } else { | ||
| 732 | - loger.warn('查询答题结果数据->失败.', ret); | ||
| 733 | - this._emit(Sass.SASS_GET_QUESTION_RESULT_FAILED); | ||
| 734 | - } | ||
| 735 | - }) | ||
| 736 | - .catch(err => { | ||
| 737 | - loger.error(`查询答题结果数据->状态码:${err}`); | ||
| 738 | - this._emit(Sass.SASS_GET_QUESTION_RESULT_FAILED); | ||
| 739 | - }); | ||
| 740 | - } | ||
| 741 | - | ||
| 742 | - //点名--------------------------------------------------------- | 774 | + }) |
| 775 | + .catch(err => { | ||
| 776 | + loger.error(`查询答题结果数据->状态码:${err}`); | ||
| 777 | + this._emit(Sass.SASS_GET_QUESTION_RESULT_FAILED); | ||
| 778 | + }); | ||
| 779 | + } | ||
| 780 | + | ||
| 781 | + //点名--------------------------------------------------------- | ||
| 743 | } | 782 | } |
| 744 | 783 | ||
| 745 | Sass.prototype.SUCCESS = Sass.SUCCESS = 'Sass_success'; | 784 | Sass.prototype.SUCCESS = Sass.SUCCESS = 'Sass_success'; |
| 746 | Sass.prototype.CLASS_INIT_SUCCESS = Sass.CLASS_INIT_SUCCESS = 'sass_class_init_success'; | 785 | Sass.prototype.CLASS_INIT_SUCCESS = Sass.CLASS_INIT_SUCCESS = 'sass_class_init_success'; |
| 747 | Sass.prototype.CLASS_GET_CLASS_PARAM = Sass.CLASS_GET_CLASS_PARAM = 'sass_class_getClassParam.message'; | 786 | Sass.prototype.CLASS_GET_CLASS_PARAM = Sass.CLASS_GET_CLASS_PARAM = 'sass_class_getClassParam.message'; |
| 748 | Sass.prototype.CLASS_GET_CLASS_DETAIL = Sass.CLASS_GET_CLASS_DETAIL = 'sass_class_getClassDetail_message'; | 787 | Sass.prototype.CLASS_GET_CLASS_DETAIL = Sass.CLASS_GET_CLASS_DETAIL = 'sass_class_getClassDetail_message'; |
| 749 | -Sass.prototype.DELETE_DOCUMENT_SUCCESS = Sass.DELETE_DOCUMENT_SUCCESS = 'sass_class_deleteDocumentSuccess_message';//删除文档成功 | ||
| 750 | -Sass.prototype.DELETE_MEDIASHARE_SUCCESS = Sass.DELETE_MEDIASHARE_SUCCESS = 'sass_class_deleteMediaShareSuccess_message';//删除文档成功 | 788 | +Sass.prototype.DELETE_DOCUMENT_SUCCESS = Sass.DELETE_DOCUMENT_SUCCESS = 'sass_class_deleteDocumentSuccess_message'; //删除文档成功 |
| 789 | +Sass.prototype.DELETE_MEDIASHARE_SUCCESS = Sass.DELETE_MEDIASHARE_SUCCESS = 'sass_class_deleteMediaShareSuccess_message'; //删除文档成功 | ||
| 790 | +Sass.prototype.DELETE_MUSICSHARE_SUCCESS = Sass.DELETE_MUSICSHARE_SUCCESS = 'sass_class_deleteMusicShareSuccess_message'; //删除文档成功 | ||
| 751 | 791 | ||
| 752 | -Sass.prototype.CLASS_SAVE_STATUS_INFO_SUCCESS = Sass.CLASS_SAVE_STATUS_INFO_SUCCESS = 'sass_class_saveClassStatusInfoSuccess_message';//保存课堂状态信息 | ||
| 753 | -Sass.prototype.CLASS_SAVE_RECORD_INFO_SUCCESS = Sass.CLASS_SAVE_RECORD_INFO_SUCCESS = 'sass_class_saveClassRecordInfoSuccess_message';//保存录制课堂信息 | 792 | +Sass.prototype.CLASS_SAVE_STATUS_INFO_SUCCESS = Sass.CLASS_SAVE_STATUS_INFO_SUCCESS = 'sass_class_saveClassStatusInfoSuccess_message'; //保存课堂状态信息 |
| 793 | +Sass.prototype.CLASS_SAVE_RECORD_INFO_SUCCESS = Sass.CLASS_SAVE_RECORD_INFO_SUCCESS = 'sass_class_saveClassRecordInfoSuccess_message'; //保存录制课堂信息 | ||
| 754 | 794 | ||
| 755 | //答题卡和点名 | 795 | //答题卡和点名 |
| 756 | -Sass.prototype.SASS_CREAT_QUESTION_SUCCESS = Sass.SASS_CREAT_QUESTION_SUCCESS = 'sass_creat_question_success';//创建答题卡问题成功 | ||
| 757 | -Sass.prototype.SASS_CREAT_QUESTION_FAILED = Sass.SASS_CREAT_QUESTION_FAILED = 'sass_creat_question_failed';//创建答题卡失败 | 796 | +Sass.prototype.SASS_CREAT_QUESTION_SUCCESS = Sass.SASS_CREAT_QUESTION_SUCCESS = 'sass_creat_question_success'; //创建答题卡问题成功 |
| 797 | +Sass.prototype.SASS_CREAT_QUESTION_FAILED = Sass.SASS_CREAT_QUESTION_FAILED = 'sass_creat_question_failed'; //创建答题卡失败 | ||
| 758 | 798 | ||
| 759 | -Sass.prototype.SASS_GET_QUESTION_SUCCESS = Sass.SASS_GET_QUESTION_SUCCESS = 'sass_get_question_success';//获取问题成功 | ||
| 760 | -Sass.prototype.SASS_GET_QUESTION_FAILED = Sass.SASS_GET_QUESTION_FAILED = 'sass_get_question_failed';//获取问题失败 | 799 | +Sass.prototype.SASS_GET_QUESTION_SUCCESS = Sass.SASS_GET_QUESTION_SUCCESS = 'sass_get_question_success'; //获取问题成功 |
| 800 | +Sass.prototype.SASS_GET_QUESTION_FAILED = Sass.SASS_GET_QUESTION_FAILED = 'sass_get_question_failed'; //获取问题失败 | ||
| 761 | 801 | ||
| 762 | -Sass.prototype.SASS_GET_QUESTION_RESULT_SUCCESS = Sass.SASS_GET_QUESTION_RESULT_SUCCESS = 'sass_get_question_result_success';//获取问题结果成功 | ||
| 763 | -Sass.prototype.SASS_GET_QUESTION_RESULT_FAILED = Sass.SASS_GET_QUESTION_RESULT_FAILED = 'sass_get_question_result_failed';//获取问题结果失败 | 802 | +Sass.prototype.SASS_GET_QUESTION_RESULT_SUCCESS = Sass.SASS_GET_QUESTION_RESULT_SUCCESS = 'sass_get_question_result_success'; //获取问题结果成功 |
| 803 | +Sass.prototype.SASS_GET_QUESTION_RESULT_FAILED = Sass.SASS_GET_QUESTION_RESULT_FAILED = 'sass_get_question_result_failed'; //获取问题结果失败 | ||
| 764 | 804 | ||
| 765 | -Sass.prototype.SASS_SEND_ANSWER_SUCCESS = Sass.SASS_SEND_ANSWER_SUCCESS = 'sass_send_answer_success';//保存答案成功 | ||
| 766 | -Sass.prototype.SASS_SEND_ANSWER_FAILED = Sass.SASS_SEND_ANSWER_FAILED = 'sass_send_answer_failed';//保存答案失败 | 805 | +Sass.prototype.SASS_SEND_ANSWER_SUCCESS = Sass.SASS_SEND_ANSWER_SUCCESS = 'sass_send_answer_success'; //保存答案成功 |
| 806 | +Sass.prototype.SASS_SEND_ANSWER_FAILED = Sass.SASS_SEND_ANSWER_FAILED = 'sass_send_answer_failed'; //保存答案失败 | ||
| 767 | 807 | ||
| 768 | export default new Sass; | 808 | export default new Sass; |
| 769 | 809 |
| @@ -95,7 +95,7 @@ class ConferApe extends Ape { | @@ -95,7 +95,7 @@ class ConferApe extends Ape { | ||
| 95 | getNodeInfo() { | 95 | getNodeInfo() { |
| 96 | let nodeInfoRecordPdu = new pdu['RCNodeInfoRecordPdu']; | 96 | let nodeInfoRecordPdu = new pdu['RCNodeInfoRecordPdu']; |
| 97 | nodeInfoRecordPdu.nodeId = GlobalConfig.nodeId; | 97 | nodeInfoRecordPdu.nodeId = GlobalConfig.nodeId; |
| 98 | - nodeInfoRecordPdu.selfSilence = JSON.stringify(GlobalConfig.selfSilence)||""; | 98 | + nodeInfoRecordPdu.selfSilence = JSON.stringify(GlobalConfig.selfSilence) || ""; |
| 99 | nodeInfoRecordPdu.name = GlobalConfig.userName; | 99 | nodeInfoRecordPdu.name = GlobalConfig.userName; |
| 100 | nodeInfoRecordPdu.role = ApeConsts.userTypesToId[GlobalConfig.userRole] || 1; //NR_NORMAL用户的身份,根据用户登录时的身份设置; | 100 | nodeInfoRecordPdu.role = ApeConsts.userTypesToId[GlobalConfig.userRole] || 1; //NR_NORMAL用户的身份,根据用户登录时的身份设置; |
| 101 | nodeInfoRecordPdu.level = GlobalConfig.level; | 101 | nodeInfoRecordPdu.level = GlobalConfig.level; |
| @@ -333,11 +333,11 @@ class ConferApe extends Ape { | @@ -333,11 +333,11 @@ class ConferApe extends Ape { | ||
| 333 | 333 | ||
| 334 | // 全局禁言 | 334 | // 全局禁言 |
| 335 | silenceClass(params) { | 335 | silenceClass(params) { |
| 336 | - if (GlobalConfig.isHost) { | 336 | + if (!GlobalConfig.isNormal) { |
| 337 | //同步禁言状态 | 337 | //同步禁言状态 |
| 338 | this.sendUpdaterClassStatusInfo(params); | 338 | this.sendUpdaterClassStatusInfo(params); |
| 339 | } else { | 339 | } else { |
| 340 | - loger.warn('没有开始课堂的权限'); | 340 | + loger.warn('老师/监客拥有改权限'); |
| 341 | } | 341 | } |
| 342 | } | 342 | } |
| 343 | 343 | ||
| @@ -415,13 +415,13 @@ class ConferApe extends Ape { | @@ -415,13 +415,13 @@ class ConferApe extends Ape { | ||
| 415 | } | 415 | } |
| 416 | let msgObj = {}; | 416 | let msgObj = {}; |
| 417 | msgObj.nodeId = _param.nodeId; | 417 | msgObj.nodeId = _param.nodeId; |
| 418 | - msgObj.silence = _param.silence ||{}; | 418 | + msgObj.silence = _param.silence || {}; |
| 419 | this.sendConferMsg({ "to": _param.nodeId, "message": JSON.stringify(msgObj), "actionType": ApeConsts.USER_ACTION_SILENCE_STATUS_CHANGE }); | 419 | this.sendConferMsg({ "to": _param.nodeId, "message": JSON.stringify(msgObj), "actionType": ApeConsts.USER_ACTION_SILENCE_STATUS_CHANGE }); |
| 420 | } | 420 | } |
| 421 | 421 | ||
| 422 | changeSilenceStatus(_param) { | 422 | changeSilenceStatus(_param) { |
| 423 | loger.log('切换禁言状态->', _param); | 423 | loger.log('切换禁言状态->', _param); |
| 424 | - GlobalConfig.selfSilence = _param.silence||{}; | 424 | + GlobalConfig.selfSilence = _param.silence || {}; |
| 425 | this.updateUserInfo(); | 425 | this.updateUserInfo(); |
| 426 | } | 426 | } |
| 427 | 427 |
| @@ -8,7 +8,7 @@ | @@ -8,7 +8,7 @@ | ||
| 8 | // Author: AlexWang | 8 | // Author: AlexWang |
| 9 | // Date: 2016-08-26 17:36:20 | 9 | // Date: 2016-08-26 17:36:20 |
| 10 | // QQ Email: 1669499355@qq.com | 10 | // QQ Email: 1669499355@qq.com |
| 11 | -// Last Modified time: 2017-06-27 18:13:39 | 11 | +// Last Modified time: 2017-06-29 14:09:25 |
| 12 | // Description: LiveClass-CursorApe | 12 | // Description: LiveClass-CursorApe |
| 13 | // | 13 | // |
| 14 | // ////////////////////////////////////////////////////////////////////////////// | 14 | // ////////////////////////////////////////////////////////////////////////////// |
| @@ -54,7 +54,7 @@ class CursorApe extends Ape { | @@ -54,7 +54,7 @@ class CursorApe extends Ape { | ||
| 54 | return; | 54 | return; |
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | - let itemIdx = EngineUtils.creatSoleNumberFromTimestamp(); //创建时间戳,保证每条数据的唯一 | 57 | + let itemIdx = ApeConsts.CURSOR_OBJ_TABLE_ID; |
| 58 | let cursorModelPdu = this.packPdu(_param, itemIdx); | 58 | let cursorModelPdu = this.packPdu(_param, itemIdx); |
| 59 | if (cursorModelPdu == null) { | 59 | if (cursorModelPdu == null) { |
| 60 | loger.warn('添加标注失败-->参数错误->', _param); | 60 | loger.warn('添加标注失败-->参数错误->', _param); |
| @@ -68,13 +68,14 @@ class CursorApe extends Ape { | @@ -68,13 +68,14 @@ class CursorApe extends Ape { | ||
| 68 | tableItemPdu.owner = 0; //收到flash的是这个值,不清楚先写固定 | 68 | tableItemPdu.owner = 0; //收到flash的是这个值,不清楚先写固定 |
| 69 | tableItemPdu.itemData = cursorModelPdu.toArrayBuffer(); | 69 | tableItemPdu.itemData = cursorModelPdu.toArrayBuffer(); |
| 70 | 70 | ||
| 71 | - //insert | ||
| 72 | - let tableInsertItemPdu = new pdu['RCRegistryTableInsertItemPdu']; | ||
| 73 | - tableInsertItemPdu.type = pdu.RCPDU_REG_TABLE_INSERT_PDU; // | 71 | + let tableInsertItemPdu = new pdu['RCRegistryTableUpdateItemPdu']; |
| 72 | + //optional RCPduType_E type = 1 [default = RCPDU_REG_TABLE_UPDATE_PDU]; | ||
| 73 | + //repeated RCRegistryTableItemPdu items = 2; | ||
| 74 | + tableInsertItemPdu.type = pdu.RCPDU_REG_TABLE_UPDATE_PDU; // | ||
| 74 | tableInsertItemPdu.items.push(tableItemPdu); | 75 | tableInsertItemPdu.items.push(tableItemPdu); |
| 75 | 76 | ||
| 76 | let updateObjPdu = new pdu['RCRegistryUpdateObjPdu']; | 77 | let updateObjPdu = new pdu['RCRegistryUpdateObjPdu']; |
| 77 | - updateObjPdu.objId = ApeConsts.CURSOR_OBJ_TABLE_ID; | 78 | + updateObjPdu.objId = ApeConsts.DOCSHARING_OBJ_TABLE_ID; // updateObjPdu.objId = ApeConsts.DOCSHARING_OBJ_TABLE_ID_H5; |
| 78 | updateObjPdu.subType = tableInsertItemPdu.type; | 79 | updateObjPdu.subType = tableInsertItemPdu.type; |
| 79 | updateObjPdu.userData = tableInsertItemPdu.toArrayBuffer(); | 80 | updateObjPdu.userData = tableInsertItemPdu.toArrayBuffer(); |
| 80 | 81 | ||
| @@ -87,14 +88,14 @@ class CursorApe extends Ape { | @@ -87,14 +88,14 @@ class CursorApe extends Ape { | ||
| 87 | adapterPdu.type = pdu.RCPDU_REG_ADAPTER; | 88 | adapterPdu.type = pdu.RCPDU_REG_ADAPTER; |
| 88 | adapterPdu.item.push(adapterItemPdu); | 89 | adapterPdu.item.push(adapterItemPdu); |
| 89 | 90 | ||
| 90 | - loger.log("添加标注->itemIdx=" + tableItemPdu.itemIdx); | 91 | + loger.log("发送更新.itemIdx=" + tableItemPdu.itemIdx); |
| 91 | this.sendUniform(adapterPdu, true); | 92 | this.sendUniform(adapterPdu, true); |
| 92 | } | 93 | } |
| 93 | 94 | ||
| 94 | /////鼠标数据接受///////////////////////////////////////////////////////////////////////////////// | 95 | /////鼠标数据接受///////////////////////////////////////////////////////////////////////////////// |
| 95 | - tableInsertHandler(owner, itemIdx, itemData) { | 96 | + tableUpdateHandler(owner, itemIdx, itemData) { |
| 96 | let cursorModel = this.unPackPdu(owner, itemIdx, itemData); | 97 | let cursorModel = this.unPackPdu(owner, itemIdx, itemData); |
| 97 | - loger.log('tableInsertHandler', "activeDocId->", GlobalConfig.activeDocId, "parentId->", cursorModel.parentId); | 98 | + loger.log('tableUpdateHandler', "activeDocId->", GlobalConfig.activeDocId, "parentId->", cursorModel.parentId); |
| 98 | loger.log(cursorModel); | 99 | loger.log(cursorModel); |
| 99 | if (cursorModel) { | 100 | if (cursorModel) { |
| 100 | this._emit(MessageTypes.CURSOR_UPDATE, cursorModel); | 101 | this._emit(MessageTypes.CURSOR_UPDATE, cursorModel); |
| @@ -131,8 +132,8 @@ class CursorApe extends Ape { | @@ -131,8 +132,8 @@ class CursorApe extends Ape { | ||
| 131 | unPackPdu(owner, itemIdx, itemData) { | 132 | unPackPdu(owner, itemIdx, itemData) { |
| 132 | try { | 133 | try { |
| 133 | loger.log("鼠标标注数据->unPackPdu"); | 134 | loger.log("鼠标标注数据->unPackPdu"); |
| 134 | - let cursorModelPdu = pdu['RCCursorDataModelPdu'].decode(itemData); | ||
| 135 | - let _pointGroup = EngineUtils.arrayFromJsonString(cursorModelPdu.pointGroup); | 135 | + const cursorModelPdu = pdu['RCCursorDataModelPdu'].decode(itemData); |
| 136 | + const _pointGroup = EngineUtils.arrayFromJsonString(cursorModelPdu.pointGroup); | ||
| 136 | cursorModelPdu.pointGroup = _pointGroup; | 137 | cursorModelPdu.pointGroup = _pointGroup; |
| 137 | return cursorModelPdu; | 138 | return cursorModelPdu; |
| 138 | } catch (err) { | 139 | } catch (err) { |
| @@ -102,7 +102,7 @@ class MusicSharedApe extends Ape { | @@ -102,7 +102,7 @@ class MusicSharedApe extends Ape { | ||
| 102 | adapterPdu.type = pdu.RCPDU_REG_ADAPTER; | 102 | adapterPdu.type = pdu.RCPDU_REG_ADAPTER; |
| 103 | adapterPdu.item.push(adapterItemPdu); | 103 | adapterPdu.item.push(adapterItemPdu); |
| 104 | 104 | ||
| 105 | - loger.log("媒体文件发送删除数据=============>" + tableDeleteItemPdu.itemIdx); | 105 | + loger.log("MUSIC文件发送删除数据=============>" + tableDeleteItemPdu.itemIdx); |
| 106 | this.sendUniform(adapterPdu, true); | 106 | this.sendUniform(adapterPdu, true); |
| 107 | } | 107 | } |
| 108 | 108 | ||
| @@ -347,7 +347,7 @@ class MusicSharedApe extends Ape { | @@ -347,7 +347,7 @@ class MusicSharedApe extends Ape { | ||
| 347 | loger.log('添加媒体文件->设置当前激活的媒体文件id'); | 347 | loger.log('添加媒体文件->设置当前激活的媒体文件id'); |
| 348 | } | 348 | } |
| 349 | let getMusicPackFullInfo = this._musicSharedPackFullInfo(itemDataInfo); | 349 | let getMusicPackFullInfo = this._musicSharedPackFullInfo(itemDataInfo); |
| 350 | - this._emit(MessageTypes.MEDIA_SHARED_UPDATE, getMusicPackFullInfo); | 350 | + this._emit(MessageTypes.MUSIC_SHARED_UPDATE, getMusicPackFullInfo); |
| 351 | } | 351 | } |
| 352 | } | 352 | } |
| 353 | //媒体文件数据更新完毕,如果当前没有显示的媒体文件,默认选择一个显示 | 353 | //媒体文件数据更新完毕,如果当前没有显示的媒体文件,默认选择一个显示 |
| @@ -367,7 +367,7 @@ class MusicSharedApe extends Ape { | @@ -367,7 +367,7 @@ class MusicSharedApe extends Ape { | ||
| 367 | GlobalConfig.activeMusicSeek = 1; //当前激活的媒体文件的当前页 | 367 | GlobalConfig.activeMusicSeek = 1; //当前激活的媒体文件的当前页 |
| 368 | loger.log('删除媒体文件数据->清除当前显示的媒体文件'); | 368 | loger.log('删除媒体文件数据->清除当前显示的媒体文件'); |
| 369 | } | 369 | } |
| 370 | - this._emit(MessageTypes.MEDIA_SHARED_DELETE, { "itemIdx": itemIdxs[i] }); | 370 | + this._emit(MessageTypes.MUSIC_SHARED_DELETE, { "itemIdx": itemIdxs[i] }); |
| 371 | delete this.musicSharedList[itemIdxs[i]]; | 371 | delete this.musicSharedList[itemIdxs[i]]; |
| 372 | } | 372 | } |
| 373 | } | 373 | } |
| @@ -393,7 +393,7 @@ class MusicSharedApe extends Ape { | @@ -393,7 +393,7 @@ class MusicSharedApe extends Ape { | ||
| 393 | loger.log('更新媒体文件->设置当前激活的媒体文件id->', GlobalConfig.activeMusicId, "curPageNum->", GlobalConfig.activeMusicSeek); | 393 | loger.log('更新媒体文件->设置当前激活的媒体文件id->', GlobalConfig.activeMusicId, "curPageNum->", GlobalConfig.activeMusicSeek); |
| 394 | } | 394 | } |
| 395 | let getMusicPackFullInfo = this._musicSharedPackFullInfo(itemDataInfo); | 395 | let getMusicPackFullInfo = this._musicSharedPackFullInfo(itemDataInfo); |
| 396 | - this._emit(MessageTypes.MEDIA_SHARED_UPDATE, getMusicPackFullInfo); | 396 | + this._emit(MessageTypes.MUSIC_SHARED_UPDATE, getMusicPackFullInfo); |
| 397 | } else { | 397 | } else { |
| 398 | loger.log('更新媒体文件-> 数据无效--> itemIdx', itemIdx); | 398 | loger.log('更新媒体文件-> 数据无效--> itemIdx', itemIdx); |
| 399 | } | 399 | } |
-
请 注册 或 登录 后发表评论