李勇

增加媒体共享模块的数据更新

此 diff 太大无法显示。
@@ -30,7 +30,7 @@ import MediaSharedApe from 'apes/MediaSharedApe'; @@ -30,7 +30,7 @@ import MediaSharedApe from 'apes/MediaSharedApe';
30 import UTF8 from 'utf-8'; 30 import UTF8 from 'utf-8';
31 31
32 let loger = Loger.getLoger('McuClient'); 32 let loger = Loger.getLoger('McuClient');
33 -let _sdkInfo = {"version": "v1.30.3.20170602", "author": "www.3mang.com"}; 33 +let _sdkInfo = {"version": "v1.30.5.20170605", "author": "www.3mang.com"};
34 34
35 //APE 35 //APE
36 let _sass; 36 let _sass;
@@ -1540,7 +1540,7 @@ export default class MessageEntrance extends Emiter { @@ -1540,7 +1540,7 @@ export default class MessageEntrance extends Emiter {
1540 return; 1540 return;
1541 } 1541 }
1542 if (_mediaShareApe) { 1542 if (_mediaShareApe) {
1543 - _mediaShareApe.mediaSharedDelete(_param); 1543 + _mediaShareApe.mediaSharedPlay(_param);
1544 } 1544 }
1545 } 1545 }
1546 //停止 1546 //停止
@@ -1579,26 +1579,24 @@ export default class MessageEntrance extends Emiter { @@ -1579,26 +1579,24 @@ export default class MessageEntrance extends Emiter {
1579 loger.log("媒体共享模块加入频道成功->isHost=", GlobalConfig.isHost, "length=", GlobalConfig.sharedMediaList.length); 1579 loger.log("媒体共享模块加入频道成功->isHost=", GlobalConfig.isHost, "length=", GlobalConfig.sharedMediaList.length);
1580 console.log("媒体共享模数据->", GlobalConfig.sharedMediaList); 1580 console.log("媒体共享模数据->", GlobalConfig.sharedMediaList);
1581 //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传 1581 //如果是主持人,那么需要判断一下文档模块同步的数据和从sass获取的文档数据是否相同,如果mcu服务器不存在的,需要上传
1582 - /* if (GlobalConfig.isHost && GlobalConfig.sharedMediaList.length > 0) { 1582 + if (GlobalConfig.isHost && GlobalConfig.sharedMediaList.length > 0) {
1583 for (let i = 0; i < GlobalConfig.sharedMediaList.length; i++) { 1583 for (let i = 0; i < GlobalConfig.sharedMediaList.length; i++) {
1584 let value = GlobalConfig.sharedMediaList[i]; 1584 let value = GlobalConfig.sharedMediaList[i];
1585 if (value) { 1585 if (value) {
1586 - //loger.log("判断是否需要把提前上传的文档上传到mcu", value);  
1587 let paramInfo = { 1586 let paramInfo = {
1588 - "pageNum": value.pdfSize,  
1589 - "fileName": value.name, 1587 + "status": 0,
  1588 + "creatUserId": value.creatUserId,
  1589 + "creatUserName": value.createUserName,
  1590 + "url": value.url,
1590 "fileType": value.type, 1591 "fileType": value.type,
1591 - "relativeUrl": value.relativeLocation,  
1592 - "url": value.absoluteLocation,  
1593 - "creatUserId": value.createUserID,  
1594 - "docId": value.id,  
1595 - "md5": value.MD5,  
1596 - "visible": false 1592 + "fileId": ""+value.id,
  1593 + "fileName": value.name,
  1594 + "seek": 0
1597 }; 1595 };
1598 - this._sendDocumentUpload(paramInfo); 1596 + this._sendMediaSharedUpload(paramInfo);
1599 } 1597 }
1600 } 1598 }
1601 - }*/ 1599 + }
1602 } 1600 }
1603 1601
1604 //录制回放相关的处理------------------------------------------------ 1602 //录制回放相关的处理------------------------------------------------
@@ -567,8 +567,7 @@ class ConferApe extends Ape { @@ -567,8 +567,7 @@ class ConferApe extends Ape {
567 tableUpdateHandler(owner, itemIdx, itemData) { 567 tableUpdateHandler(owner, itemIdx, itemData) {
568 try { 568 try {
569 let model = this.unPackPdu(owner, itemIdx, itemData); 569 let model = this.unPackPdu(owner, itemIdx, itemData);
570 - loger.log('课堂数据更新');  
571 - loger.log(model); 570 + loger.log('课堂数据更新->',model);
572 571
573 //处理课堂更新的信息 572 //处理课堂更新的信息
574 if (model && model.classStatusInfo) { 573 if (model && model.classStatusInfo) {
@@ -579,8 +578,11 @@ class ConferApe extends Ape { @@ -579,8 +578,11 @@ class ConferApe extends Ape {
579 this._emit(MessageTypes.STOP_ALL_MEDIA_PUBLISH); 578 this._emit(MessageTypes.STOP_ALL_MEDIA_PUBLISH);
580 } 579 }
581 } 580 }
  581 +
582 //通知应用层更新课堂状态 582 //通知应用层更新课堂状态
583 - this._emit(MessageTypes.CLASS_UPTATE_STATUS, GlobalConfig.classStatusInfo); 583 + let classInfo=GlobalConfig.classStatusInfo;
  584 + loger.log('通知应用层更新课堂状态->CLASS_UPTATE_STATUS')
  585 + this._emit(MessageTypes.CLASS_UPTATE_STATUS,classInfo);
584 586
585 //如果MCU已经断开连接,停止计时器 587 //如果MCU已经断开连接,停止计时器
586 if (!this.mcu.connected) { 588 if (!this.mcu.connected) {
@@ -596,8 +598,8 @@ class ConferApe extends Ape { @@ -596,8 +598,8 @@ class ConferApe extends Ape {
596 //停止计时 598 //停止计时
597 this.stopTimerCounter(); 599 this.stopTimerCounter();
598 } 600 }
599 - } catch (e) {  
600 - loger.warn('ConferApe table update got exception. itemIdx', itemIdx); 601 + } catch (err) {
  602 + loger.warn('ConferApe table update got exception->err', err.message);
601 } 603 }
602 } 604 }
603 605
@@ -145,98 +145,14 @@ class MediaSharedApe extends Ape { @@ -145,98 +145,14 @@ class MediaSharedApe extends Ape {
145 loger.log("发送更新媒体文件.itemIdx=" + tableItemPdu.itemIdx); 145 loger.log("发送更新媒体文件.itemIdx=" + tableItemPdu.itemIdx);
146 this.sendUniform(adapterPdu, true); 146 this.sendUniform(adapterPdu, true);
147 } 147 }
148 -  
149 - //获取媒体文件的完整地址和所有图片  
150 - getMediaSharedAddress(_param){  
151 - if (_param == null || _param.url == null || _param.itemIdx ==null) {  
152 - loger.warn('获取媒体文件完整地址->传递的参数不正确->', _param);  
153 - return {"code":ApeConsts.RETURN_FAILED, "data": "获取媒体文件时传递的参数不对"};  
154 - }  
155 - let fullPath='';//媒体文件路径地址  
156 - let pageNum=1;//总页数  
157 - let docType="";//媒体文件地址的后缀类型  
158 - let fileType="";//媒体文件的原始类型  
159 - let docItem=this.mediaSharedList[_param.itemIdx];  
160 - if(docItem){  
161 - fullPath=docItem.url||"";  
162 - pageNum=docItem.pageNum||1;  
163 - fileType=docItem.fileType||""  
164 - }else {  
165 - fullPath =_param.url;  
166 - }  
167 -  
168 - //获取当前媒体文件的后缀名  
169 - docType=this._getMediaType(fullPath);  
170 - let substrFullPath=this._getMediaPath(fullPath);//获取去掉后缀和文件名的地址,需要获取同目录下其他文件  
171 - let imagesArr=[];  
172 - let htmlPath="";  
173 - let pdfPath="";  
174 -  
175 - //根据文件后缀名,生成对应的访问地址  
176 - if(docType=="jpg"||docType=="png"||docType=="swf"||docType=="pdf"||docType=="doc"||docType=="pptx"){  
177 - //页数从1开始  
178 - for (let i = 1; i <=pageNum; i++) {  
179 - imagesArr.push(substrFullPath + "/" + i + ".jpg");  
180 - }  
181 - }  
182 - if(docType=="swf"||docType=="pdf"||docType=="doc"||docType=="pptx"){  
183 - pdfPath=fullPath.replace(/\.swf/g, ".pdf")||"";  
184 - }  
185 - //动态PPT  
186 - if(docType=="html"){  
187 - htmlPath=fullPath;  
188 - }  
189 - //返回媒体文件第所有地址  
190 - return {'code':ApeConsts.RETURN_SUCCESS, 'data': '','docFullAddress':{  
191 - 'images':imagesArr,  
192 - 'pdf':pdfPath,  
193 - 'html':htmlPath  
194 - }};  
195 - }  
196 -  
197 - _getMediaType(_fullPath){  
198 - if(!_fullPath){  
199 - return "";  
200 - }  
201 - if(_fullPath.lastIndexOf(".jpg")>=0){  
202 - return "jpg";  
203 - }  
204 - if(_fullPath.lastIndexOf(".png")>=0){  
205 - return "png";  
206 - }  
207 - if(_fullPath.lastIndexOf(".swf")>=0){  
208 - return "swf";  
209 - }  
210 - if(_fullPath.lastIndexOf(".pdf")>=0){  
211 - return "pdf";  
212 - }  
213 - if(_fullPath.lastIndexOf(".doc")>=0){  
214 - return "doc";  
215 - }  
216 - if(_fullPath.lastIndexOf(".html")>=0){  
217 - return "html";  
218 - }  
219 - if(_fullPath.lastIndexOf(".pptx")>=0){  
220 - return "pptx";  
221 - }  
222 - return "";  
223 - }  
224 - //获取去掉文件名和后缀名的地址 http://www.xxx.xxx/image/aa.jpg -->http://www.xxx.xxx/image/  
225 - _getMediaPath(_fullPath){  
226 - if(!_fullPath){  
227 - return "";  
228 - }  
229 - var lastIndex = _fullPath.lastIndexOf("/");  
230 - if (lastIndex > 0) {  
231 - return _fullPath.substr(0, lastIndex);  
232 - }  
233 - return _fullPath;  
234 - }  
235 148
236 //组织完整的媒体文件信息,包含上传时的信息和转换后的完整地址信息 149 //组织完整的媒体文件信息,包含上传时的信息和转换后的完整地址信息
237 _mediaSharedPackFullInfo(_itemDataInfo){ 150 _mediaSharedPackFullInfo(_itemDataInfo){
238 let itemDataInfo=_itemDataInfo; 151 let itemDataInfo=_itemDataInfo;
239 - let getDocAddress=this.getMediaSharedAddress(_itemDataInfo); 152 + if(itemDataInfo.seek==null){
  153 + itemDataInfo.seek=1;
  154 + }
  155 + /*let getDocAddress=this.getMediaSharedAddress(_itemDataInfo);
240 if(getDocAddress.code==ApeConsts.RETURN_SUCCESS){ 156 if(getDocAddress.code==ApeConsts.RETURN_SUCCESS){
241 itemDataInfo.images=getDocAddress.docFullAddress.images||[]; 157 itemDataInfo.images=getDocAddress.docFullAddress.images||[];
242 itemDataInfo.pdf=getDocAddress.docFullAddress.pdf||""; 158 itemDataInfo.pdf=getDocAddress.docFullAddress.pdf||"";
@@ -245,8 +161,8 @@ class MediaSharedApe extends Ape { @@ -245,8 +161,8 @@ class MediaSharedApe extends Ape {
245 itemDataInfo.images=[]; 161 itemDataInfo.images=[];
246 itemDataInfo.pdf=''; 162 itemDataInfo.pdf='';
247 itemDataInfo.html=''; 163 itemDataInfo.html='';
248 - }  
249 - loger.log('docPackFullInfo->', itemDataInfo); 164 + }*/
  165 + loger.log('mediaPackFullInfo->', itemDataInfo);
250 return itemDataInfo; 166 return itemDataInfo;
251 } 167 }
252 //更新媒体文件模块的录制信息,每次开启录制的时候需要把当前媒体文件的信息更新一次 168 //更新媒体文件模块的录制信息,每次开启录制的时候需要把当前媒体文件的信息更新一次
@@ -281,17 +197,17 @@ class MediaSharedApe extends Ape { @@ -281,17 +197,17 @@ class MediaSharedApe extends Ape {
281 return; 197 return;
282 } 198 }
283 199
284 - if (paramInfo.itemIdx == GlobalConfig.activeMediaId && GlobalConfig.activeMediaId != 0) { 200 + /* if (paramInfo.itemIdx == GlobalConfig.activeMediaId && GlobalConfig.activeMediaId != 0) {
285 loger.warn('媒体文件已经显示', paramInfo.itemIdx, GlobalConfig.activeMediaId); 201 loger.warn('媒体文件已经显示', paramInfo.itemIdx, GlobalConfig.activeMediaId);
286 return; 202 return;
287 - } 203 + }*/
288 204
289 //更新切换之前的媒体文件的数据,要显示当前切换的媒体文件,上一个媒体文件需要隐藏 205 //更新切换之前的媒体文件的数据,要显示当前切换的媒体文件,上一个媒体文件需要隐藏
290 let oldPduDataModel; 206 let oldPduDataModel;
291 if (GlobalConfig.activeMediaId != 0) { 207 if (GlobalConfig.activeMediaId != 0) {
292 oldPduDataModel = this.mediaSharedList[GlobalConfig.activeMediaId]; 208 oldPduDataModel = this.mediaSharedList[GlobalConfig.activeMediaId];
293 if (oldPduDataModel) { 209 if (oldPduDataModel) {
294 - oldPduDataModel.status = 1;//设置为不可见 210 + oldPduDataModel.status = 0;//设置为不可见
295 } 211 }
296 } 212 }
297 213
@@ -312,18 +228,64 @@ class MediaSharedApe extends Ape { @@ -312,18 +228,64 @@ class MediaSharedApe extends Ape {
312 this.updaterMediaShared(pduDataModel, pduDataModel.itemIdx); 228 this.updaterMediaShared(pduDataModel, pduDataModel.itemIdx);
313 229
314 //更新上一个媒体文件 隐藏 230 //更新上一个媒体文件 隐藏
315 - if (oldPduDataModel) { 231 + if (oldPduDataModel&&oldPduDataModel.itemIdx!=pduDataModel.itemIdx) {
316 this.updaterMediaShared(oldPduDataModel, oldPduDataModel.itemIdx); 232 this.updaterMediaShared(oldPduDataModel, oldPduDataModel.itemIdx);
317 } 233 }
318 } 234 }
319 235
320 //停止媒体文件 236 //停止媒体文件
321 mediaSharedStop(paramInfo) { 237 mediaSharedStop(paramInfo) {
  238 + loger.log('停止媒体文件->', paramInfo);
  239 + if (GlobalConfig.isRecordPlayBack) {
  240 + loger.warn('录制回放状态不允许停止媒体文件');
  241 + return;
  242 + }
322 243
  244 + if (paramInfo == null || paramInfo.itemIdx == null) {
  245 + loger.warn('停止媒体文件,参数错误', paramInfo);
  246 + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
  247 + return;
  248 + }
  249 +
  250 + //获取已经存在的数据
  251 + let pduDataModel = this.mediaSharedList[paramInfo.itemIdx];
  252 + if (pduDataModel == null) {
  253 + loger.warn('停止媒体文件,媒体文件不存在', paramInfo);
  254 + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
  255 + return;
  256 + }
  257 +
  258 + //更新当前选择的媒体文件数据的字段
  259 + pduDataModel.status = 0;//默认是0
  260 + //更新当前选择的媒体文件
  261 + this.updaterMediaShared(pduDataModel, pduDataModel.itemIdx);
323 } 262 }
324 //暂停媒体文件 263 //暂停媒体文件
325 mediaSharedPause(paramInfo) { 264 mediaSharedPause(paramInfo) {
  265 + loger.log('暂停媒体文件->', paramInfo);
  266 + if (GlobalConfig.isRecordPlayBack) {
  267 + loger.warn('录制回放-》暂停媒体文件');
  268 + return;
  269 + }
  270 +
  271 + if (paramInfo == null || paramInfo.itemIdx == null) {
  272 + loger.warn('暂停媒体文件,参数错误', paramInfo);
  273 + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
  274 + return;
  275 + }
  276 +
  277 + //获取已经存在的数据
  278 + let pduDataModel = this.mediaSharedList[paramInfo.itemIdx];
  279 + if (pduDataModel == null) {
  280 + loger.warn('暂停媒体文件,媒体文件不存在', paramInfo);
  281 + this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
  282 + return;
  283 + }
326 284
  285 + //更新当前选择的媒体文件数据的字段
  286 + pduDataModel.status = 2;//默认是0
  287 + //更新当前选择的媒体文件
  288 + this.updaterMediaShared(pduDataModel, pduDataModel.itemIdx);
327 } 289 }
328 //媒体文件SEEK 290 //媒体文件SEEK
329 mediaSharedSeek(paramInfo) { 291 mediaSharedSeek(paramInfo) {
@@ -425,7 +387,7 @@ class MediaSharedApe extends Ape { @@ -425,7 +387,7 @@ class MediaSharedApe extends Ape {
425 if (GlobalConfig.isRecordPlayBack || !GlobalConfig.isHost || GlobalConfig.activeMediaId > 0) { 387 if (GlobalConfig.isRecordPlayBack || !GlobalConfig.isHost || GlobalConfig.activeMediaId > 0) {
426 return; 388 return;
427 } 389 }
428 - 390 + /*
429 let tempDocItemIdx;//临时记录媒体文件数据,用于显示默认媒体文件 391 let tempDocItemIdx;//临时记录媒体文件数据,用于显示默认媒体文件
430 for (let key in this.mediaSharedList) { 392 for (let key in this.mediaSharedList) {
431 tempDocItemIdx= this.mediaSharedList[key]; 393 tempDocItemIdx= this.mediaSharedList[key];
@@ -439,7 +401,7 @@ class MediaSharedApe extends Ape { @@ -439,7 +401,7 @@ class MediaSharedApe extends Ape {
439 //选择完成就跳出循环 401 //选择完成就跳出循环
440 return; 402 return;
441 } 403 }
442 - } 404 + }*/
443 } 405 }
444 406
445 onJoinChannelHandlerSuccess() { 407 onJoinChannelHandlerSuccess() {
@@ -482,6 +444,17 @@ class MediaSharedApe extends Ape { @@ -482,6 +444,17 @@ class MediaSharedApe extends Ape {
482 this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG); 444 this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
483 return null; 445 return null;
484 } 446 }
  447 + /* optional uint32 item_idx=1;//唯一标识
  448 + optional uint32 owner=2;
  449 + optional uint32 from=3;
  450 + optional string file_type=4;
  451 + optional string creat_user_id=5;//创建文件userid
  452 + optional string url =6;//文件地址
  453 + optional uint32 status=7;//状态0停止 1播放 2暂停
  454 + optional string fileId=8;//文件在服务器数据库中的唯一id
  455 + optional string file_name=9;//文件的名字
  456 + optional uint32 seek=10;//seek*/
  457 +
485 //判断type类型,根据type设置不同的参数 458 //判断type类型,根据type设置不同的参数
486 let pduDataModel = new pdu['RCMediaSharedSendDataModelPdu']; 459 let pduDataModel = new pdu['RCMediaSharedSendDataModelPdu'];
487 pduDataModel.itemIdx = _itemIdx; 460 pduDataModel.itemIdx = _itemIdx;
@@ -493,6 +466,7 @@ class MediaSharedApe extends Ape { @@ -493,6 +466,7 @@ class MediaSharedApe extends Ape {
493 pduDataModel.status = _param.status || 0; 466 pduDataModel.status = _param.status || 0;
494 pduDataModel.fileId = _param.fileId || "";//媒体文件在服务器数据库中的唯一id,必须有 467 pduDataModel.fileId = _param.fileId || "";//媒体文件在服务器数据库中的唯一id,必须有
495 pduDataModel.fileName = _param.fileName || "media_" + _itemIdx;//媒体文件的名字 468 pduDataModel.fileName = _param.fileName || "media_" + _itemIdx;//媒体文件的名字
  469 + pduDataModel.seek= parseInt(_param.seek) ||1;
496 return pduDataModel; 470 return pduDataModel;
497 } 471 }
498 472
@@ -754,6 +754,7 @@ message RCMediaSharedSendDataModelPdu { @@ -754,6 +754,7 @@ message RCMediaSharedSendDataModelPdu {
754 optional uint32 status=7;//状态0停止 1播放 2暂停 754 optional uint32 status=7;//状态0停止 1播放 2暂停
755 optional string fileId=8;//文件在服务器数据库中的唯一id 755 optional string fileId=8;//文件在服务器数据库中的唯一id
756 optional string file_name=9;//文件的名字 756 optional string file_name=9;//文件的名字
  757 + optional uint32 seek=10;//seek
757 } 758 }
758 759
759 message RCDocBroadcastDataRequestPdu { 760 message RCDocBroadcastDataRequestPdu {