李勇

1.课堂模块-》如果老师上课时候异常退出,会从当前的课堂中选择一个人员来做暂停课堂和停止录制的操作

此 diff 太大无法显示。
@@ -26,7 +26,7 @@ import ArrayBufferUtil from 'libs/ArrayBufferUtil'; @@ -26,7 +26,7 @@ import ArrayBufferUtil from 'libs/ArrayBufferUtil';
26 import UTF8 from 'utf-8'; 26 import UTF8 from 'utf-8';
27 27
28 let loger = Loger.getLoger('MessageEntrance'); 28 let loger = Loger.getLoger('MessageEntrance');
29 -let _sdkInfo = {"version": "v.1.8.5.20170331-1", "author": "www.3mang.com"}; 29 +let _sdkInfo = {"version": "v.1.8.6.20170401-2", "author": "www.3mang.com"};
30 30
31 //APE 31 //APE
32 let _sass; 32 let _sass;
@@ -144,9 +144,6 @@ class ConferApe extends Ape { @@ -144,9 +144,6 @@ class ConferApe extends Ape {
144 loger.warn(GlobalConfig.getCurrentStatus()); 144 loger.warn(GlobalConfig.getCurrentStatus());
145 return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"}; 145 return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"};
146 } 146 }
147 - // to, message  
148 - loger.log('发送录制消息.', _param);  
149 -  
150 if (_param == null) { 147 if (_param == null) {
151 loger.warn("控制录制状的消息发送失败,参数错误", _param); 148 loger.warn("控制录制状的消息发送失败,参数错误", _param);
152 return; 149 return;
@@ -172,6 +169,8 @@ class ConferApe extends Ape { @@ -172,6 +169,8 @@ class ConferApe extends Ape {
172 conferRecordSendPdu.classTime = GlobalConfig.classTimestamp; 169 conferRecordSendPdu.classTime = GlobalConfig.classTimestamp;
173 conferRecordSendPdu.filename = GlobalConfig.recordFileName || GlobalConfig.classId + "_" + EngineUtils.creatTimestampYMD() + ".rec"; 170 conferRecordSendPdu.filename = GlobalConfig.recordFileName || GlobalConfig.classId + "_" + EngineUtils.creatTimestampYMD() + ".rec";
174 this.sendChatUniform(conferRecordSendPdu); 171 this.sendChatUniform(conferRecordSendPdu);
  172 + // to, message
  173 + loger.warn('发送录制消息-》', _param);
175 } 174 }
176 175
177 //开启录制 176 //开启录制
@@ -193,13 +192,22 @@ class ConferApe extends Ape { @@ -193,13 +192,22 @@ class ConferApe extends Ape {
193 } 192 }
194 193
195 //停止录制 194 //停止录制
196 - stopRecord() { 195 + stopRecord(isForce) {
197 loger.log('stopRecord', "isHost", GlobalConfig.isHost, "recordStatus", GlobalConfig.recordStatus); 196 loger.log('stopRecord', "isHost", GlobalConfig.isHost, "recordStatus", GlobalConfig.recordStatus);
198 - //如果是host,并且当前正在录制中  
199 - if (GlobalConfig.isHost && GlobalConfig.recordStatus) {  
200 - GlobalConfig.classStopTime = EngineUtils.creatTimestampStr();  
201 - this.sendConferRecordMsg({"recordStatus": false});  
202 - this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE); 197 + if(isForce&&isForce==true){
  198 + //强制停止,可以是host之外的身份(比如当前课堂老师异常退出,没有老师,会随机选择一个人来做释放操作)
  199 + if (GlobalConfig.recordStatus) {
  200 + GlobalConfig.classStopTime = EngineUtils.creatTimestampStr();
  201 + this.sendConferRecordMsg({"recordStatus": false});
  202 + this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE);
  203 + }
  204 + }else {
  205 + //身份是host,并且当前正在录制中
  206 + if (GlobalConfig.isHost && GlobalConfig.recordStatus) {
  207 + GlobalConfig.classStopTime = EngineUtils.creatTimestampStr();
  208 + this.sendConferRecordMsg({"recordStatus": false});
  209 + this._emit(MessageTypes.CLASS_STATUS_INFO_CHANGE);
  210 + }
203 } 211 }
204 } 212 }
205 213
@@ -288,7 +296,6 @@ class ConferApe extends Ape { @@ -288,7 +296,6 @@ class ConferApe extends Ape {
288 loger.warn('还没有开始,不能点暂停'); 296 loger.warn('还没有开始,不能点暂停');
289 return; 297 return;
290 } 298 }
291 -  
292 GlobalConfig.classStatus = ApeConsts.CLASS_STATUS_PAUSE; 299 GlobalConfig.classStatus = ApeConsts.CLASS_STATUS_PAUSE;
293 GlobalConfig.classStopTime = EngineUtils.creatTimestampStr(); 300 GlobalConfig.classStopTime = EngineUtils.creatTimestampStr();
294 301
@@ -584,7 +591,10 @@ class ConferApe extends Ape { @@ -584,7 +591,10 @@ class ConferApe extends Ape {
584 // 自己退出 591 // 自己退出
585 this._emit(MessageTypes.CLASS_EXIT); 592 this._emit(MessageTypes.CLASS_EXIT);
586 } else { 593 } else {
587 - loger.log(nodeId, "离开课堂"); 594 + let user=this.rosters[nodeId];
  595 + if(user){
  596 + loger.log(nodeId, "->离开课堂->身份->",user.role);
  597 + }
588 delete this.rosters[nodeId]; 598 delete this.rosters[nodeId];
589 this.emitRosterChange(); 599 this.emitRosterChange();
590 this._emit(MessageTypes.CLASS_DELETE_ROSTER, {"nodeId": nodeId}); 600 this._emit(MessageTypes.CLASS_DELETE_ROSTER, {"nodeId": nodeId});
@@ -592,12 +602,21 @@ class ConferApe extends Ape { @@ -592,12 +602,21 @@ class ConferApe extends Ape {
592 //当前人员列表中抽一个人来检查离开人员是否占用频道 602 //当前人员列表中抽一个人来检查离开人员是否占用频道
593 for (let key in this.rosters) { 603 for (let key in this.rosters) {
594 let randNodeId = parseInt(key); 604 let randNodeId = parseInt(key);
  605 + //如果抽到的人是自己就处理以下操作
595 if (randNodeId == GlobalConfig.nodeId) { 606 if (randNodeId == GlobalConfig.nodeId) {
596 loger.log(randNodeId, "有权限检查离开的人员是否占用channel"); 607 loger.log(randNodeId, "有权限检查离开的人员是否占用channel");
597 this._emit(MessageTypes.CLASS_NONENTITY_ROSTER, {"nodeId": nodeId}); 608 this._emit(MessageTypes.CLASS_NONENTITY_ROSTER, {"nodeId": nodeId});
  609 + //如果离开的人员是老师,需要暂停当前的课堂
  610 +
  611 + if(user&&user.role==ApeConsts.NR_HOST){
  612 + this.pauseClass();
  613 + //强制停止录制
  614 + this.stopRecord(true);
  615 + }
598 } else { 616 } else {
599 loger.warn(GlobalConfig.nodeId, "没有权限检查离开的人员是否占用channel"); 617 loger.warn(GlobalConfig.nodeId, "没有权限检查离开的人员是否占用channel");
600 } 618 }
  619 + //查找到一个就跳出操作
601 return; 620 return;
602 } 621 }
603 } 622 }