李勇

1.文档模块增加获取文档完整路径的接口

2.会议模块增加会议关闭消息的监听处理
@@ -76,7 +76,6 @@ export default class MessageEntrance extends Emiter { @@ -76,7 +76,6 @@ export default class MessageEntrance extends Emiter {
76 // 注册所有应用Ape 76 // 注册所有应用Ape
77 _confer_ape = new ConferApe(); 77 _confer_ape = new ConferApe();
78 _confer_ape.on('*', (type, data) => this._emit(type, data)); 78 _confer_ape.on('*', (type, data) => this._emit(type, data));
79 - _confer_ape.on(MessageTypes.CLASS_CLOSE, this._doClassClose.bind(this));//会议关闭,所有人都退出  
80 _confer_ape.on(MessageTypes.CLASS_EXIT, this._doClassExit.bind(this));//监听自己的关闭事件 79 _confer_ape.on(MessageTypes.CLASS_EXIT, this._doClassExit.bind(this));//监听自己的关闭事件
81 _confer_ape.on(MessageTypes.CLASS_STATUS_INFO_CHANGE, this._onClassStatusInfoChange.bind(this));//当前会议状态信息发生改变 80 _confer_ape.on(MessageTypes.CLASS_STATUS_INFO_CHANGE, this._onClassStatusInfoChange.bind(this));//当前会议状态信息发生改变
82 81
@@ -132,7 +131,7 @@ export default class MessageEntrance extends Emiter { @@ -132,7 +131,7 @@ export default class MessageEntrance extends Emiter {
132 this.sendDocumentDelete = this._sassDeleteDocument;//删除文档,先通过Sass删除,sass删除成功之后再同步mcu 131 this.sendDocumentDelete = this._sassDeleteDocument;//删除文档,先通过Sass删除,sass删除成功之后再同步mcu
133 //this.sendDocumentDeleteAll= this._documentDeleteAll;//删除所有文档 132 //this.sendDocumentDeleteAll= this._documentDeleteAll;//删除所有文档
134 this.sendDocumentCommand = this._sendDocumentCommand;//操作文档(翻页、缩放、滚动...) 133 this.sendDocumentCommand = this._sendDocumentCommand;//操作文档(翻页、缩放、滚动...)
135 - 134 + this.getDocFullPath=this._getDocFullPath;//获取文档的完整路径
136 } 135 }
137 136
138 137
@@ -260,7 +259,7 @@ export default class MessageEntrance extends Emiter { @@ -260,7 +259,7 @@ export default class MessageEntrance extends Emiter {
260 initSuccessCallBackData.classType = GlobalConfig.classType; 259 initSuccessCallBackData.classType = GlobalConfig.classType;
261 260
262 //host默认需要密码,Sass服务器只判断学生是否需要密码,没有判断老师的 261 //host默认需要密码,Sass服务器只判断学生是否需要密码,没有判断老师的
263 - if (GlobalConfig.userRole == ApeConsts.host) { 262 + if (GlobalConfig.userRole== ApeConsts.host) {
264 initSuccessCallBackData.passwordRequired =true; 263 initSuccessCallBackData.passwordRequired =true;
265 } else { 264 } else {
266 initSuccessCallBackData.passwordRequired = GlobalConfig.passwordRequired; 265 initSuccessCallBackData.passwordRequired = GlobalConfig.passwordRequired;
@@ -304,7 +303,7 @@ export default class MessageEntrance extends Emiter { @@ -304,7 +303,7 @@ export default class MessageEntrance extends Emiter {
304 GlobalConfig.MCUServerPort = server.split(":")[1]; 303 GlobalConfig.MCUServerPort = server.split(":")[1];
305 } 304 }
306 305
307 - GlobalConfig.doc = _data.doc; 306 + GlobalConfig.docServer = _data.doc;
308 GlobalConfig.h5_mcu_list = _data.h5_mcu_list; 307 GlobalConfig.h5_mcu_list = _data.h5_mcu_list;
309 GlobalConfig.h5Module = _data.h5Module; 308 GlobalConfig.h5Module = _data.h5Module;
310 GlobalConfig.mcu = _data.mcu; 309 GlobalConfig.mcu = _data.mcu;
@@ -443,7 +442,7 @@ export default class MessageEntrance extends Emiter { @@ -443,7 +442,7 @@ export default class MessageEntrance extends Emiter {
443 //GlobalConfig.MCUServerIP=_data.MCUServerIP; 442 //GlobalConfig.MCUServerIP=_data.MCUServerIP;
444 // GlobalConfig.MCUServerPort=_data.MCUServerPort; 443 // GlobalConfig.MCUServerPort=_data.MCUServerPort;
445 444
446 - initSuccessCallBackData.doc = GlobalConfig.doc;//文档服务器地址 445 + initSuccessCallBackData.docServer = GlobalConfig.docServer;//文档服务器地址
447 initSuccessCallBackData.classId = GlobalConfig.classId; 446 initSuccessCallBackData.classId = GlobalConfig.classId;
448 initSuccessCallBackData.className = GlobalConfig.className; 447 initSuccessCallBackData.className = GlobalConfig.className;
449 initSuccessCallBackData.h5Module = GlobalConfig.h5Module; 448 initSuccessCallBackData.h5Module = GlobalConfig.h5Module;
@@ -516,7 +515,7 @@ export default class MessageEntrance extends Emiter { @@ -516,7 +515,7 @@ export default class MessageEntrance extends Emiter {
516 // //GlobalConfig.MCUServerIP=_data.MCUServerIP; 515 // //GlobalConfig.MCUServerIP=_data.MCUServerIP;
517 // // GlobalConfig.MCUServerPort=_data.MCUServerPort; 516 // // GlobalConfig.MCUServerPort=_data.MCUServerPort;
518 // 517 //
519 - // initSuccessCallBackData.doc=GlobalConfig.doc;//文档服务器地址 518 + // initSuccessCallBackData.docServer=GlobalConfig.docServer;//文档服务器地址
520 // initSuccessCallBackData.classId=GlobalConfig.classId; 519 // initSuccessCallBackData.classId=GlobalConfig.classId;
521 // initSuccessCallBackData.className=GlobalConfig.className; 520 // initSuccessCallBackData.className=GlobalConfig.className;
522 // initSuccessCallBackData.h5Module=GlobalConfig.h5Module; 521 // initSuccessCallBackData.h5Module=GlobalConfig.h5Module;
@@ -680,6 +679,16 @@ export default class MessageEntrance extends Emiter { @@ -680,6 +679,16 @@ export default class MessageEntrance extends Emiter {
680 679
681 680
682 //DocApe 681 //DocApe
  682 +
  683 + //获取文档完整路径
  684 + _getDocFullPath(_param){
  685 + if(_doc_ape){
  686 + return _doc_ape.getDocFullPath(_param);
  687 + }else {
  688 + loger.error("文档模块还没有创建,无法获取");
  689 + return "";
  690 + }
  691 + }
683 //上传文档 692 //上传文档
684 _sendDocumentUpload(_param){ 693 _sendDocumentUpload(_param){
685 if(_doc_ape){ 694 if(_doc_ape){
@@ -251,7 +251,7 @@ GlobalConfig.portal="112.126.80.182:80"; @@ -251,7 +251,7 @@ GlobalConfig.portal="112.126.80.182:80";
251 GlobalConfig.ip="112.126.80.182"; 251 GlobalConfig.ip="112.126.80.182";
252 GlobalConfig.port="80"; 252 GlobalConfig.port="80";
253 GlobalConfig.MCUServerIP="114.215.195.70"; 253 GlobalConfig.MCUServerIP="114.215.195.70";
254 -GlobalConfig.doc=""; 254 +GlobalConfig.docServer="";//当前的文档地址加载的服务器地址
255 GlobalConfig.MCUServerPort=9003; 255 GlobalConfig.MCUServerPort=9003;
256 GlobalConfig.maxVideoChannels=1; 256 GlobalConfig.maxVideoChannels=1;
257 GlobalConfig.maxAudioChannels=1; 257 GlobalConfig.maxAudioChannels=1;
@@ -18,8 +18,8 @@ MessageTypes.CLASS_JOIN_SUCCESS = 'join.class.success'; @@ -18,8 +18,8 @@ MessageTypes.CLASS_JOIN_SUCCESS = 'join.class.success';
18 MessageTypes.CLASS_SHOW_ROSTER_NUM = 'roster_num.message'; 18 MessageTypes.CLASS_SHOW_ROSTER_NUM = 'roster_num.message';
19 MessageTypes.CLASS_INSERT_ROSTER = 'roster_insert.message'; 19 MessageTypes.CLASS_INSERT_ROSTER = 'roster_insert.message';
20 MessageTypes.CLASS_DELETE_ROSTER = 'roster_delete.message'; 20 MessageTypes.CLASS_DELETE_ROSTER = 'roster_delete.message';
21 -MessageTypes.CLASS_EXIT = 'class.exit';//退出  
22 -MessageTypes.CLASS_CLOSE = 'class.close';//关闭会议,所有人都要退出(host操作) 21 +MessageTypes.CLASS_EXIT = 'class.exit';//退出 关闭会议
  22 +MessageTypes.CLASS_UPTATE_STATUS = 'class.update.status';//更新会议状态信息
23 MessageTypes.CLASS_STATUS_INFO_CHANGE= 'class.status.info.change';//会议状态信息发生改变,需要保存数据到sass和同步MCU 23 MessageTypes.CLASS_STATUS_INFO_CHANGE= 'class.status.info.change';//会议状态信息发生改变,需要保存数据到sass和同步MCU
24 24
25 //聊天模块事件定义 25 //聊天模块事件定义
@@ -355,20 +355,9 @@ class ConferApe extends Ape { @@ -355,20 +355,9 @@ class ConferApe extends Ape {
355 if(model&&model.classStatusInfo){ 355 if(model&&model.classStatusInfo){
356 GlobalConfig.setClassStatusInfo(model.classStatusInfo); 356 GlobalConfig.setClassStatusInfo(model.classStatusInfo);
357 } 357 }
  358 + //通知应用层更新会议状态
  359 + this._emit(MessageTypes.CLASS_UPTATE_STATUS,GlobalConfig.classStatusInfo);
358 360
359 - switch(GlobalConfig.classStatus){  
360 - case ApeConsts.CLASS_STATUS_WAIT:  
361 - break;  
362 - case ApeConsts.CLASS_STATUS_STARTED:  
363 - break;  
364 - case ApeConsts.CLASS_STATUS_PAUSE:  
365 - break;  
366 - case ApeConsts.CLASS_STATUS_CLOSE:  
367 - break;  
368 - default:  
369 - break;  
370 -  
371 - }  
372 //_confer_ape.on(MessageTypes.CLASS_CLOSE, this._doClassClose.bind(this));//会议关闭,所有人都退出 361 //_confer_ape.on(MessageTypes.CLASS_CLOSE, this._doClassClose.bind(this));//会议关闭,所有人都退出
373 /*{ 362 /*{
374 "itemIdx": 720899, 363 "itemIdx": 720899,
@@ -423,7 +412,7 @@ class ConferApe extends Ape { @@ -423,7 +412,7 @@ class ConferApe extends Ape {
423 case ApeConsts.CLASS_ACTION_CLOSE_ALL: 412 case ApeConsts.CLASS_ACTION_CLOSE_ALL:
424 loger.log(chatMsg.message); 413 loger.log(chatMsg.message);
425 //会议关闭,所有人都退出 414 //会议关闭,所有人都退出
426 - this._emit(MessageTypes.CLASS_CLOSE); 415 + this._emit(MessageTypes.CLASS_EXIT);
427 break; 416 break;
428 default: 417 default:
429 break; 418 break;
@@ -137,6 +137,48 @@ class DocApe extends Ape { @@ -137,6 +137,48 @@ class DocApe extends Ape {
137 loger.log("发送更新文档.itemIdx="+tableItemPdu.itemIdx); 137 loger.log("发送更新文档.itemIdx="+tableItemPdu.itemIdx);
138 this.sendUniform(adapterPdu,true); 138 this.sendUniform(adapterPdu,true);
139 } 139 }
  140 + //获取文档的完整地址
  141 + getDocFullPath(_param){
  142 + if(_param==null||_param.relativeUrl==null){
  143 + loger.warn('获取文档完整地址,传递的参数不对.',_param);
  144 + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_CLASS_JOIN_PARAM);
  145 + return "";
  146 + }
  147 +
  148 + let fullPath=GlobalConfig.docServer+_param.relativeUrl;
  149 + var index;
  150 + switch (_param.type){
  151 + case "jpg":
  152 + fullPath=this.replacePathType(fullPath)+".jpg";
  153 + break;
  154 + case "png":
  155 + fullPath=this.replacePathType(fullPath)+".png";
  156 + break;
  157 + case "pdf":
  158 + fullPath=this.replacePathType(fullPath)+".pdf";
  159 + break;
  160 + default :
  161 + //不做处理,直接返回拼接的地址
  162 + break;
  163 + }
  164 +
  165 + if(fullPath&&fullPath.indexOf("http://")<0){
  166 + fullPath="http;//"+fullPath;
  167 + }
  168 + loger.warn('getDocFullPath ->',fullPath);
  169 + return [fullPath];
  170 + }
  171 +
  172 + // 去除文件的后缀格式名称
  173 + replacePathType(_path){
  174 + let path=_path;
  175 + path=path.replace(/.jpg/g,"");
  176 + path=path.replace(/.png/g,"");
  177 + path=path.replace(/.swf/g,"");
  178 + path=path.replace(/.pdf/g,"");
  179 + return path;
  180 + }
  181 +
140 //切换文档 182 //切换文档
141 documentSwitchDoc(paramInfo){ 183 documentSwitchDoc(paramInfo){
142 //console.log(this.docList); 184 //console.log(this.docList);
@@ -420,6 +462,6 @@ class DocApe extends Ape { @@ -420,6 +462,6 @@ class DocApe extends Ape {
420 462
421 463
422 } 464 }
423 -DocApe.prototype.DOC_JOIN_CHANNEL_SUCCESS = DocApe.DOC_JOIN_CHANNEL_SUCCESS = 'doc.join.channel.success'; 465 +DocApe.prototype.DOC_JOIN_CHANNEL_SUCCESS = DocApe.DOC_JOIN_CHANNEL_SUCCESS = 'docServer.join.channel.success';
424 export default DocApe; 466 export default DocApe;
425 467