AlexWang

增加音频共享接口

@@ -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) {
@@ -1189,7 +1200,7 @@ export default class MessageEntrance extends Emiter { @@ -1189,7 +1200,7 @@ export default class MessageEntrance extends Emiter {
1189 // if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2&&GlobalConfig.videoCDNAddrList.length>0){ 1200 // if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2&&GlobalConfig.videoCDNAddrList.length>0){
1190 1201
1191 //20170629-直播课堂和移动端设备的时候支持 1202 //20170629-直播课堂和移动端设备的时候支持
1192 - if(GlobalConfig.classType==ApeConsts.CLASS_TYPE_2||GlobalConfig.isMobile){ 1203 + if (GlobalConfig.classType == ApeConsts.CLASS_TYPE_2 || GlobalConfig.isMobile) {
1193 if (GlobalConfig.videoCDNAddrList.length > 0) { 1204 if (GlobalConfig.videoCDNAddrList.length > 0) {
1194 //videoCDNAddrList中rtmppush和hls是混在一起的,需要分离开; 1205 //videoCDNAddrList中rtmppush和hls是混在一起的,需要分离开;
1195 let listLen = GlobalConfig.videoCDNAddrList.length; 1206 let listLen = GlobalConfig.videoCDNAddrList.length;
@@ -1210,9 +1221,9 @@ export default class MessageEntrance extends Emiter { @@ -1210,9 +1221,9 @@ export default class MessageEntrance extends Emiter {
1210 } 1221 }
1211 } 1222 }
1212 } else { 1223 } else {
1213 - loger.error('videoCDNAddr数据无效->',GlobalConfig.videoCDNAddr); 1224 + loger.error('videoCDNAddr数据无效->', GlobalConfig.videoCDNAddr);
1214 } 1225 }
1215 - }else { 1226 + } else {
1216 loger.warn('非直播课堂或不是移动端->不需要videoCDN加速'); 1227 loger.warn('非直播课堂或不是移动端->不需要videoCDN加速');
1217 } 1228 }
1218 1229
@@ -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
@@ -234,7 +234,7 @@ class Sass extends Emiter { @@ -234,7 +234,7 @@ class Sass extends Emiter {
234 meetingNumber String 课堂号 对应的是classId 234 meetingNumber String 课堂号 对应的是classId
235 */ 235 */
236 var timestamp = new Date().getTime(); 236 var timestamp = new Date().getTime();
237 - var authId = MD5(GlobalConfig.classId + "" + timestamp);//课堂号+时间戳 的字符串,转成MD5 237 + var authId = MD5(GlobalConfig.classId + "" + timestamp); //课堂号+时间戳 的字符串,转成MD5
238 let url = `http://${GlobalConfig.portal}/3m/api/meeting/detail.do?meetingNumber=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`; 238 let url = `http://${GlobalConfig.portal}/3m/api/meeting/detail.do?meetingNumber=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
239 loger.log('5.获取课堂课堂的完整信息 '); 239 loger.log('5.获取课堂课堂的完整信息 ');
240 loger.log(url); 240 loger.log(url);
@@ -279,12 +279,12 @@ class Sass extends Emiter { @@ -279,12 +279,12 @@ class Sass extends Emiter {
279 0 成功, 1 验证信息错误 279 0 成功, 1 验证信息错误
280 */ 280 */
281 sassDeleteDocument(_param) { 281 sassDeleteDocument(_param) {
282 - if(GlobalConfig.isRecordPlayBack){ 282 + if (GlobalConfig.isRecordPlayBack) {
283 loger.log('录制回放中,能删除文档'); 283 loger.log('录制回放中,能删除文档');
284 return; 284 return;
285 } 285 }
286 var timestamp = new Date().getTime(); 286 var timestamp = new Date().getTime();
287 - var authId = MD5(_param.docId + "" + _param.classId + "" + timestamp);// docId+classId+timestamp的字符串,转成MD5 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}&timestamp=${timestamp}&authId=${authId}`; 288 let url = `http://${GlobalConfig.portal}/3m/api/document/deleteRelation.do?docId=${_param.docId}&classId=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
289 loger.log('sassDeleteDocument', url); 289 loger.log('sassDeleteDocument', url);
290 290
@@ -316,14 +316,55 @@ class Sass extends Emiter { @@ -316,14 +316,55 @@ class Sass extends Emiter {
316 }); 316 });
317 } 317 }
318 318
  319 + //删除Music共享文件
  320 + sassDeletMusicShare(_param) {
  321 + if (GlobalConfig.isRecordPlayBack) {
  322 + loger.log('录制回放中,能删除文件');
  323 + return;
  324 + }
  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}&timestamp=${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 '';
  342 + }
  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 +
319 //删除媒体共享文件 360 //删除媒体共享文件
320 sassDeletMediaShare(_param) { 361 sassDeletMediaShare(_param) {
321 - if(GlobalConfig.isRecordPlayBack){ 362 + if (GlobalConfig.isRecordPlayBack) {
322 loger.log('录制回放中,能删除文件'); 363 loger.log('录制回放中,能删除文件');
323 return; 364 return;
324 } 365 }
325 var timestamp = new Date().getTime(); 366 var timestamp = new Date().getTime();
326 - var authId = MD5(_param.fileId + "" + _param.classId + "" + timestamp);// docId+classId+timestamp的字符串,转成MD5 367 + 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}&timestamp=${timestamp}&authId=${authId}`; 368 let url = `http://${GlobalConfig.portal}/3m/api/sharedMedia/deleteRelation.do?fileId=${_param.fileId}&classId=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
328 loger.log('删除媒体共享文件', url); 369 loger.log('删除媒体共享文件', url);
329 370
@@ -356,7 +397,6 @@ class Sass extends Emiter { @@ -356,7 +397,6 @@ class Sass extends Emiter {
356 }); 397 });
357 } 398 }
358 399
359 -  
360 //保存课堂的当前信息----------------------------------------------------- 400 //保存课堂的当前信息-----------------------------------------------------
361 /*保存课堂的当前信息,首次是插入,后面是更新 401 /*保存课堂的当前信息,首次是插入,后面是更新
362 /api/meeting/saveInfo.do 402 /api/meeting/saveInfo.do
@@ -370,13 +410,13 @@ class Sass extends Emiter { @@ -370,13 +410,13 @@ class Sass extends Emiter {
370 code 0 成功 1 课堂号为空 2 无效的课堂号 3 验证信息错误*/ 410 code 0 成功 1 课堂号为空 2 无效的课堂号 3 验证信息错误*/
371 411
372 saveClassStatusInfo(_param) { 412 saveClassStatusInfo(_param) {
373 - if(GlobalConfig.isRecordPlayBack){ 413 + if (GlobalConfig.isRecordPlayBack) {
374 loger.log('录制回放中,不需要保存课堂信息'); 414 loger.log('录制回放中,不需要保存课堂信息');
375 return; 415 return;
376 } 416 }
377 //{"classStatusInfo":classStatusInfo} 417 //{"classStatusInfo":classStatusInfo}
378 var timestamp = new Date().getTime(); 418 var timestamp = new Date().getTime();
379 - var authId = MD5(GlobalConfig.classId + "" + timestamp);// (classId+timestamp)的字符串,转成MD5 419 + var authId = MD5(GlobalConfig.classId + "" + timestamp); // (classId+timestamp)的字符串,转成MD5
380 let classStatusInfo = JSON.stringify(_param.classStatusInfo); 420 let classStatusInfo = JSON.stringify(_param.classStatusInfo);
381 let url = `http://${GlobalConfig.portal}/3m/api/meeting/saveInfo.do`; 421 let url = `http://${GlobalConfig.portal}/3m/api/meeting/saveInfo.do`;
382 loger.log('saveClassStatusInfo', url); 422 loger.log('saveClassStatusInfo', url);
@@ -420,7 +460,7 @@ class Sass extends Emiter { @@ -420,7 +460,7 @@ class Sass extends Emiter {
420 460
421 //保存录制的信息,主要是录制文件的名称,必须和MCU录制的文件名相同 461 //保存录制的信息,主要是录制文件的名称,必须和MCU录制的文件名相同
422 saveClassRecordContrlInfo(_param) { 462 saveClassRecordContrlInfo(_param) {
423 - if(GlobalConfig.isRecordPlayBack){ 463 + if (GlobalConfig.isRecordPlayBack) {
424 loger.log('录制回放中,不需要保存'); 464 loger.log('录制回放中,不需要保存');
425 return; 465 return;
426 } 466 }
@@ -445,7 +485,7 @@ class Sass extends Emiter { @@ -445,7 +485,7 @@ class Sass extends Emiter {
445 let url = `http://${GlobalConfig.portal}/3m/recordingMeeting/insertRecordingMeeting.do`; 485 let url = `http://${GlobalConfig.portal}/3m/recordingMeeting/insertRecordingMeeting.do`;
446 loger.log('saveClassRecordContrlInfo', url); 486 loger.log('saveClassRecordContrlInfo', url);
447 487
448 - fetch( encodeURI(url), { 488 + fetch(encodeURI(url), {
449 method: 'POST', 489 method: 'POST',
450 headers: { 490 headers: {
451 "Content-Type": "application/x-www-form-urlencoded" 491 "Content-Type": "application/x-www-form-urlencoded"
@@ -475,11 +515,10 @@ class Sass extends Emiter { @@ -475,11 +515,10 @@ class Sass extends Emiter {
475 }); 515 });
476 } 516 }
477 517
478 -  
479 //答题卡------------------------------------------------------- 518 //答题卡-------------------------------------------------------
480 //创建答题数据 519 //创建答题数据
481 - creatQuestion(_param){  
482 - if(GlobalConfig.isRecordPlayBack){ 520 + creatQuestion(_param) {
  521 + if (GlobalConfig.isRecordPlayBack) {
483 loger.log('录制回放中->创建答题数据->不做操作'); 522 loger.log('录制回放中->创建答题数据->不做操作');
484 return; 523 return;
485 } 524 }
@@ -491,17 +530,17 @@ class Sass extends Emiter { @@ -491,17 +530,17 @@ class Sass extends Emiter {
491 "options": {},//选项数组,没有就传[] 530 "options": {},//选项数组,没有就传[]
492 "option": []//学生选择的答案,没有就传[] 531 "option": []//学生选择的答案,没有就传[]
493 }*/ 532 }*/
494 - if(!_param){  
495 - loger.warn('创建答题数据->参数错误->param:',_param); 533 + if (!_param) {
  534 + loger.warn('创建答题数据->参数错误->param:', _param);
496 this._emit(Sass.SASS_CREAT_QUESTION_FAILED); 535 this._emit(Sass.SASS_CREAT_QUESTION_FAILED);
497 return; 536 return;
498 } 537 }
499 - let classId=GlobalConfig.classId;//课堂号 538 + let classId = GlobalConfig.classId; //课堂号
500 var timestamp = new Date().getTime(); 539 var timestamp = new Date().getTime();
501 - let authId = MD5(classId+""+timestamp); 540 + let authId = MD5(classId + "" + timestamp);
502 541
503 - let type = parseInt(_param.type);//1单选,2多选,3判断,4点名  
504 - let content =_param.content||""; 542 + let type = parseInt(_param.type); //1单选,2多选,3判断,4点名
  543 + let content = _param.content || "";
505 let timeLimit = parseInt(_param.timeLimit); 544 let timeLimit = parseInt(_param.timeLimit);
506 let correct = _param.correct.toString(); 545 let correct = _param.correct.toString();
507 let options = JSON.stringify(_param.options); 546 let options = JSON.stringify(_param.options);
@@ -509,7 +548,7 @@ class Sass extends Emiter { @@ -509,7 +548,7 @@ class Sass extends Emiter {
509 let url = `http://${GlobalConfig.portal}/3m/api/question/add.do`; 548 let url = `http://${GlobalConfig.portal}/3m/api/question/add.do`;
510 loger.log('创建答题数据', url); 549 loger.log('创建答题数据', url);
511 550
512 - fetch( encodeURI(url), { 551 + fetch(encodeURI(url), {
513 method: 'POST', 552 method: 'POST',
514 headers: { 553 headers: {
515 "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" 554 "Content-Type": "application/x-www-form-urlencoded; charset=utf-8"
@@ -529,17 +568,17 @@ class Sass extends Emiter { @@ -529,17 +568,17 @@ class Sass extends Emiter {
529 } 568 }
530 }) 569 })
531 .then(ret => { 570 .then(ret => {
532 - if (ret.code== 0) { 571 + if (ret.code == 0) {
533 //errorCode int 0 正常 1 没有指定的课堂 4 验证信息错误(authId) 572 //errorCode int 0 正常 1 没有指定的课堂 4 验证信息错误(authId)
534 // {"code":0,"id":1} 573 // {"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); 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);
543 this._emit(Sass.SASS_CREAT_QUESTION_SUCCESS, question); 582 this._emit(Sass.SASS_CREAT_QUESTION_SUCCESS, question);
544 } else { 583 } else {
545 loger.warn('创建答题数据->失败.', ret); 584 loger.warn('创建答题数据->失败.', ret);
@@ -552,13 +591,13 @@ class Sass extends Emiter { @@ -552,13 +591,13 @@ class Sass extends Emiter {
552 }); 591 });
553 } 592 }
554 //保存答题数据 593 //保存答题数据
555 - sendAnswer(_param){  
556 - if(GlobalConfig.isRecordPlayBack){ 594 + sendAnswer(_param) {
  595 + if (GlobalConfig.isRecordPlayBack) {
557 loger.log('录制回放中->保存答题数据->不做操作'); 596 loger.log('录制回放中->保存答题数据->不做操作');
558 return; 597 return;
559 } 598 }
560 - if(!_param){  
561 - loger.warn('保存答题数据->参数错误->param:',_param); 599 + if (!_param) {
  600 + loger.warn('保存答题数据->参数错误->param:', _param);
562 this._emit(Sass.SASS_SEND_ANSWER_FAILED); 601 this._emit(Sass.SASS_SEND_ANSWER_FAILED);
563 return; 602 return;
564 } 603 }
@@ -571,13 +610,13 @@ class Sass extends Emiter { @@ -571,13 +610,13 @@ class Sass extends Emiter {
571 userId String 用户id 610 userId String 用户id
572 userName String 用户名字*/ 611 userName String 用户名字*/
573 612
574 - let classId=GlobalConfig.classId;//课堂号 613 + let classId = GlobalConfig.classId; //课堂号
575 var timestamp = new Date().getTime(); 614 var timestamp = new Date().getTime();
576 - let authId = MD5(classId+""+timestamp); 615 + let authId = MD5(classId + "" + timestamp);
577 616
578 - let type = parseInt(_param.type);//1单选,2多选,3判断,4点名 617 + let type = parseInt(_param.type); //1单选,2多选,3判断,4点名
579 618
580 - let questionId = parseInt(_param.questionId);//题目id 619 + let questionId = parseInt(_param.questionId); //题目id
581 let answer = _param.answer.toString(); 620 let answer = _param.answer.toString();
582 let userId = _param.userId; 621 let userId = _param.userId;
583 let userName = _param.userName; 622 let userName = _param.userName;
@@ -585,7 +624,7 @@ class Sass extends Emiter { @@ -585,7 +624,7 @@ class Sass extends Emiter {
585 let url = `http://${GlobalConfig.portal}/3m/api/question/answer.do`; 624 let url = `http://${GlobalConfig.portal}/3m/api/question/answer.do`;
586 loger.log('保存答题数据', url); 625 loger.log('保存答题数据', url);
587 626
588 - fetch( encodeURI(url), { 627 + fetch(encodeURI(url), {
589 method: 'POST', 628 method: 'POST',
590 headers: { 629 headers: {
591 "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" 630 "Content-Type": "application/x-www-form-urlencoded; charset=utf-8"
@@ -605,10 +644,10 @@ class Sass extends Emiter { @@ -605,10 +644,10 @@ class Sass extends Emiter {
605 } 644 }
606 }) 645 })
607 .then(ret => { 646 .then(ret => {
608 - if (ret.code== 0) { 647 + if (ret.code == 0) {
609 // 0 正常 1 没有指定的课堂 4 验证信息错误(authId) 5 没有指定的题目 6 题目不属于该课堂 648 // 0 正常 1 没有指定的课堂 4 验证信息错误(authId) 5 没有指定的题目 6 题目不属于该课堂
610 //{"code":0} 649 //{"code":0}
611 - let question=_param; 650 + let question = _param;
612 loger.log('保存答题数据->完成'); 651 loger.log('保存答题数据->完成');
613 this._emit(Sass.SASS_SEND_ANSWER_SUCCESS, question); 652 this._emit(Sass.SASS_SEND_ANSWER_SUCCESS, question);
614 } else { 653 } else {
@@ -622,23 +661,23 @@ class Sass extends Emiter { @@ -622,23 +661,23 @@ class Sass extends Emiter {
622 }); 661 });
623 } 662 }
624 //查询题目数据 663 //查询题目数据
625 - getQuestion(_param){  
626 - if(GlobalConfig.isRecordPlayBack){ 664 + getQuestion(_param) {
  665 + if (GlobalConfig.isRecordPlayBack) {
627 loger.log('录制回放中->查询题目数据->不做操作'); 666 loger.log('录制回放中->查询题目数据->不做操作');
628 return; 667 return;
629 } 668 }
630 - if(!_param){  
631 - loger.warn('查询题目数据->参数错误->param:',_param); 669 + if (!_param) {
  670 + loger.warn('查询题目数据->参数错误->param:', _param);
632 this._emit(Sass.SASS_GET_QUESTION_FAILED); 671 this._emit(Sass.SASS_GET_QUESTION_FAILED);
633 return; 672 return;
634 } 673 }
635 //questionId long 题目id 674 //questionId long 题目id
636 675
637 - let questionId = parseInt(_param.questionId);//题目id 676 + let questionId = parseInt(_param.questionId); //题目id
638 let url = `http://${GlobalConfig.portal}/3m/api/question/get.do`; 677 let url = `http://${GlobalConfig.portal}/3m/api/question/get.do`;
639 loger.log('查询题目数据', url); 678 loger.log('查询题目数据', url);
640 //接口中用的是GET 679 //接口中用的是GET
641 - fetch( encodeURI(url), { 680 + fetch(encodeURI(url), {
642 method: 'POST', 681 method: 'POST',
643 headers: { 682 headers: {
644 "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" 683 "Content-Type": "application/x-www-form-urlencoded; charset=utf-8"
@@ -657,16 +696,16 @@ class Sass extends Emiter { @@ -657,16 +696,16 @@ class Sass extends Emiter {
657 } 696 }
658 }) 697 })
659 .then(ret => { 698 .then(ret => {
660 - if (ret.code== 0) { 699 + if (ret.code == 0) {
661 //0 正常 5 没有指定的题目 700 //0 正常 5 没有指定的题目
662 //{"timeLimit":90,"code":0,"options":"[\"A\",\"B\",\"C\"]","id":22,"type":2,"content":"题目"} 701 //{"timeLimit":90,"code":0,"options":"[\"A\",\"B\",\"C\"]","id":22,"type":2,"content":"题目"}
663 loger.log('查询题目数据->完成'); 702 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; 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;
670 709
671 this._emit(Sass.SASS_GET_QUESTION_SUCCESS, question); 710 this._emit(Sass.SASS_GET_QUESTION_SUCCESS, question);
672 } else { 711 } else {
@@ -680,23 +719,23 @@ class Sass extends Emiter { @@ -680,23 +719,23 @@ class Sass extends Emiter {
680 }); 719 });
681 } 720 }
682 //查询答题结果数据 721 //查询答题结果数据
683 - getQuestionResult(_param){  
684 - if(GlobalConfig.isRecordPlayBack){ 722 + getQuestionResult(_param) {
  723 + if (GlobalConfig.isRecordPlayBack) {
685 loger.log('录制回放中->查询答题结果数据->不做操作'); 724 loger.log('录制回放中->查询答题结果数据->不做操作');
686 return; 725 return;
687 } 726 }
688 - if(!_param){  
689 - loger.warn('查询答题结果数据->参数错误->param:',_param); 727 + if (!_param) {
  728 + loger.warn('查询答题结果数据->参数错误->param:', _param);
690 this._emit(Sass.SASS_GET_QUESTION_RESULT_FAILED); 729 this._emit(Sass.SASS_GET_QUESTION_RESULT_FAILED);
691 return; 730 return;
692 } 731 }
693 //questionId long 题目id 732 //questionId long 题目id
694 733
695 - let questionId = parseInt(_param.questionId);//题目id 734 + let questionId = parseInt(_param.questionId); //题目id
696 let url = `http://${GlobalConfig.portal}/3m/api/question/results.do`; 735 let url = `http://${GlobalConfig.portal}/3m/api/question/results.do`;
697 loger.log('查询答题结果数据', url); 736 loger.log('查询答题结果数据', url);
698 737
699 - fetch( encodeURI(url), { 738 + fetch(encodeURI(url), {
700 method: 'POST', 739 method: 'POST',
701 headers: { 740 headers: {
702 "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" 741 "Content-Type": "application/x-www-form-urlencoded; charset=utf-8"
@@ -715,7 +754,7 @@ class Sass extends Emiter { @@ -715,7 +754,7 @@ class Sass extends Emiter {
715 } 754 }
716 }) 755 })
717 .then(ret => { 756 .then(ret => {
718 - if (ret.code== 0) { 757 + if (ret.code == 0) {
719 //int 0 正常5 没有指定的题目 758 //int 0 正常5 没有指定的题目
720 /* list array 数组 759 /* list array 数组
721 userId string 用户id 760 userId string 用户id
@@ -724,9 +763,9 @@ class Sass extends Emiter { @@ -724,9 +763,9 @@ class Sass extends Emiter {
724 {"timeLimit":0,"content":"test question","id":11,"code":0,"type":3,"options":"["True", "False"]"}*/ 763 {"timeLimit":0,"content":"test question","id":11,"code":0,"type":3,"options":"["True", "False"]"}*/
725 764
726 loger.log('查询答题结果数据->完成'); 765 loger.log('查询答题结果数据->完成');
727 - let result=_param||{};  
728 - result.questionId=questionId;  
729 - result.list=ret.list; 766 + let result = _param || {};
  767 + result.questionId = questionId;
  768 + result.list = ret.list;
730 this._emit(Sass.SASS_GET_QUESTION_RESULT_SUCCESS, result); 769 this._emit(Sass.SASS_GET_QUESTION_RESULT_SUCCESS, result);
731 } else { 770 } else {
732 loger.warn('查询答题结果数据->失败.', ret); 771 loger.warn('查询答题结果数据->失败.', ret);
@@ -746,24 +785,25 @@ Sass.prototype.SUCCESS = Sass.SUCCESS = 'Sass_success'; @@ -746,24 +785,25 @@ 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 }