李勇

1.增加文档删除的Sass接口,Sass删除文档成功之后再同步到mcu

2.文档的监听事件统一为DOC_UPDATE,减少应用层事件监听
此 diff 太大无法显示。
... ... @@ -59,8 +59,9 @@ export default class MessageEntrance extends Emiter {
_sass.on('*', (type, data) => this._emit(type, data));
_sass.on(_sass.SUCCESS, this._sassVerifySuccessHandler.bind(this));
_sass.on(_sass.CLASS_INIT_SUCCESS, this._sassInitSuccessHandler.bind(this));
_sass.on(_sass.CLASS_GET_CLASS_DETAIL, this._h5SassGetClassDetailSuccessHandler.bind(this));
_sass.on(_sass.CLASS_GET_CLASS_PARAM,this._h5SassGetClassParaSuccessHandler);
_sass.on(_sass.CLASS_GET_CLASS_DETAIL, this._sassGetClassDetailSuccessHandler.bind(this));
_sass.on(_sass.CLASS_GET_CLASS_PARAM,this._sassGetClassParaSuccessHandler.bind(this));
_sass.on(_sass.DELETE_DOCUMENT_SUCCESS,this._sassDeleteDocumentSuccess.bind(this));
// 底层MCU消息层
_mcu = Mcu;
... ... @@ -113,7 +114,7 @@ export default class MessageEntrance extends Emiter {
//whiteBoradApe
this.sendInsertAnnotaion=this._sendInsertAnnotaion;
this.sendDeleteAnnotaion=this._sendDeleteAnnotaion;
//this.sendDeleteAnnotaion=this._sendDeleteAnnotaion;
this.sendDeleteAllAnnotation=this._sendDeleteAllAnnotation;
this.sendGotoPrev=this._sendGotoPrev;
... ... @@ -121,8 +122,8 @@ export default class MessageEntrance extends Emiter {
this.sendDocumentUpload= this._sendDocumentUpload;//上传文档
this.sendDocumentSwitchDoc= this._sendDocumentSwitchDoc; //切换文档
this.sendDocumentSwitchPage= this._sendDocumentSwitchPage;//翻页
this.sendDocumentDelete= this. _sendDocumentDelete;//删除文档
this.sendDocumentDeleteAll= this._documentDeleteAll;//删除所有文档
this.sendDocumentDelete= this. _sassDeleteDocument;//删除文档,先通过Sass删除,sass删除成功之后再同步mcu
//this.sendDocumentDeleteAll= this._documentDeleteAll;//删除所有文档
this.sendDocumentCommand= this._sendDocumentCommand;//操作文档(翻页、缩放、滚动...)
}
... ... @@ -147,6 +148,7 @@ export default class MessageEntrance extends Emiter {
return GlobalConfig.getClassDetail();
}
//Sass
//初始化
_init(_param,_onSuccess,_mcuErrorCallBack){
_initSuccessCallBackFun=_onSuccess;
... ... @@ -155,13 +157,13 @@ export default class MessageEntrance extends Emiter {
//判断传入的参数是否存在
if(_param==null||EngineUtils.isEmptyObject(_param)||_onSuccess==null||_mcuErrorCallBack==null){
loger.error('init初始化失败,参数错误');
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_INIT_PAEAM);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_INIT_PARAM);
return ;
}
//判断必要的参数字段值
if(_param.classId==null||isNaN(_param.classId)||_param.portal==null||_param.portal==""){
loger.error('init初始化失败',_param);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_INIT_PAEAM);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_INIT_PARAM);
return ;
}
loger.log('init',_param);
... ... @@ -201,16 +203,6 @@ export default class MessageEntrance extends Emiter {
_sass.passwordAndMd5Checking(GlobalConfig.getClassInfo());
}
}
// 离开会议
_leaveClass() {
if(_confer_ape){
_confer_ape.leaveClass();
}
if(_mcu){
_mcu.leaveMCU();
GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_3);
}
}
// 用classId向SASS平台获取入会验证信息成功
_sassInitSuccessHandler(_data) {
... ... @@ -278,7 +270,7 @@ export default class MessageEntrance extends Emiter {
}
//获取会议所有参数
_h5SassGetClassDetailSuccessHandler(_data){
_sassGetClassDetailSuccessHandler(_data){
loger.log('获取getClassDetail完成.');
/* {
"cycle": 0,
... ... @@ -306,7 +298,7 @@ export default class MessageEntrance extends Emiter {
}
//获取会议所有参数 api/meeting/detail.do? flash中的接口文件是 getClassParam.do
_h5SassGetClassParaSuccessHandler(_data){
_sassGetClassParaSuccessHandler(_data){
loger.log('获取api/meeting/detail.do完成.');
//包含整个会议最全的信息,储存数据
... ... @@ -399,6 +391,32 @@ export default class MessageEntrance extends Emiter {
}
}
//Sass删除文档数据
_sassDeleteDocument(_param){
//判断传入的参数是否存在
if(_param==null||EngineUtils.isEmptyObject(_param)){
loger.error('sassDeleteDocument失败,参数错误',_param);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_DOC_DELETE_FAILED_PARAM);
return ;
}
//判断必要的参数字段值
if(_param.itemIdx==null||isNaN(_param.itemIdx)||_param.docId==null||_param.docId==""){
loger.error('sassDeleteDocument失败',_param);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_DOC_DELETE_FAILED_PARAM);
return ;
}
loger.log('_sassDeleteDocument',_param);
if(_sass){
_sass.sassDeleteDocument(_param);
}
}
//Sass删除文档成功之后,同步删除MCU数据
_sassDeleteDocumentSuccess(_param){
loger.log('sassDeleteDocumentSuccess',_param);
this._sendDocumentDelete(_param);
}
//ConferApe
//开始上课
_sendStartClass(_param){
... ... @@ -418,7 +436,16 @@ export default class MessageEntrance extends Emiter {
_confer_ape.closeClass(_param);
}
}
// 离开会议
_leaveClass() {
if(_confer_ape){
_confer_ape.leaveClass();
}
if(_mcu){
_mcu.leaveMCU();
GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_3);
}
}
//ChatApe
// 发送聊天消息
... ...
... ... @@ -67,7 +67,7 @@ MessageTypes.MCU_ERROR ="mcuError";//MCU错误
//---------------错误消息 ErrorCode 定义-------------------------------------------------
//会议初始化失败的几种情况
MessageTypes.ERR_CLASS_INIT_PAEAM=100;//初始化参数错误
MessageTypes.ERR_CLASS_INIT_PARAM=100;//初始化参数错误
MessageTypes.ERR_CLASS_INIT_NETWORK=101;//初始化网络错误
MessageTypes.ERR_CLASS_INIT_PROTOCOL=102;//初始化协议错误
MessageTypes.ERR_CLASS_INIT_FAILED=103;//初始化验证失败
... ... @@ -94,6 +94,10 @@ MessageTypes.ERR_GET_CLASS_PARAML=301;//获取ClassParam失败
MessageTypes.ERR_APE_SEND_FAILED_NO_JOIN=500;//APE在sdk为初始化或未加入会议之前调用发送数据接口
MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG=501;//APE在接口调用时参数错误
//DOC
MessageTypes.ERR_DOC_DELETE_FAILED=600;//删除文档失败
MessageTypes.ERR_DOC_DELETE_FAILED_PARAM=601;//删除文档失败,参数错误
MessageTypes.ERR_NETWORK=10000;//网络错误
MessageTypes.ERR_UNKNOWN=10001;//未知错误
... ... @@ -101,7 +105,7 @@ MessageTypes.ERR_SOCKET_DISCONNECT=20000;//MCU断开连接,已经离开会议
//---------------错误消息 Error Reson 定义-------------------------------------------------
MessageTypes.ErrorReson={};
MessageTypes.ErrorReson[MessageTypes.ERR_CLASS_INIT_PAEAM]="初始化参数错误";
MessageTypes.ErrorReson[MessageTypes.ERR_CLASS_INIT_PARAM]="初始化参数错误";
MessageTypes.ErrorReson[MessageTypes.ERR_CLASS_INIT_NETWORK]="初始化网络错误";
MessageTypes.ErrorReson[MessageTypes.ERR_CLASS_INIT_PROTOCOL]="初始化协议错误";
... ... @@ -123,13 +127,18 @@ MessageTypes.ErrorReson[MessageTypes.ERR_CLASS_PASSWORD_WRONG]="密码错误";
MessageTypes.ErrorReson[MessageTypes.ERR_CLASS_JOIN_CONFILICT]="已经在其它地方登陆";
MessageTypes.ErrorReson[MessageTypes.ERR_GET_CLASS_DETAIL=300]="获取classDetail失败";
MessageTypes.ErrorReson[MessageTypes.ERR_GET_CLASS_DETAIL]="获取classDetail失败";
MessageTypes.ErrorReson[MessageTypes.ERR_GET_CLASS_PARAML]="获取ClassParam失败";
//APE
MessageTypes.ErrorReson[MessageTypes.ERR_APE_SEND_FAILED_NO_JOIN]="APE在sdk为初始化或未加入会议之前调用发送数据接口";
MessageTypes.ErrorReson[MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG]="APE在接口调用时参数错误";
//DOC
MessageTypes.ErrorReson[MessageTypes.ERR_DOC_DELETE_FAILED]="删除文档失败";
MessageTypes.ErrorReson[MessageTypes.ERR_DOC_DELETE_FAILED_PARAM]="删除文档失败,参数错误";
MessageTypes.ErrorReson[MessageTypes.ERR_NETWORK]="网络错误";
MessageTypes.ErrorReson[MessageTypes.ERR_UNKNOWN]="未知错误";
... ...
... ... @@ -285,11 +285,63 @@ class Sass extends Emiter {
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_GET_CLASS_PARAML);
});
}
//删除文档
/*
删除课堂中的文档,即删除课堂与文档的关联
/api/document/deleteRelation.do
参数
docId 文档的唯一id
classId 课堂号
timestamp 时间戳
authId md5(docId+classId+timestamp)
返回 (application/json):
0 成功, 1 验证信息错误
*/
sassDeleteDocument(_param){
var timestamp=new Date().getTime();
var authId=MD5(_param.docId+""+_param.classId+""+timestamp);// docId+classId+timestamp的字符串,转成MD5
let url = `http://${confInfo.portal}/3m/api/document/deleteRelation.do?docId=${_param.docId}&classId=${confInfo.classId}&timestamp=${timestamp}&authId=${authId}`;
loger.log('sassDeleteDocument', url);
fetch(url, {
timeout: 5000
})
.then(ret => {
if (ret.ok) {
return ret.json();
} else {
loger.error(`sassDeleteDocument-网络异常.状态码:${ret.status}`);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_DOC_DELETE_FAILED);
throw '';
}
})
.then(ret => {
if (ret.code === 0) {
loger.log('sassDeleteDocument 完成');
this._emit(Sass.DELETE_DOCUMENT_SUCCESS, _param);
} else {
loger.warn('sassDeleteDocument 失败.');
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_DOC_DELETE_FAILED);
}
})
.catch(err => {
loger.error(`sassDeleteDocument异常.状态码:${err}`);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_DOC_DELETE_FAILED);
});
}
}
Sass.prototype.SUCCESS = Sass.SUCCESS = 'Sass.success';
Sass.prototype.CLASS_INIT_SUCCESS = Sass.CLASS_INIT_SUCCESS = 'sass.class.init.success';
Sass.prototype.CLASS_GET_CLASS_PARAM= Sass.CLASS_GET_CLASS_PARAM = 'class.getClassParam.message';
Sass.prototype.CLASS_GET_CLASS_DETAIL= Sass.CLASS_GET_CLASS_DETAIL = 'class.getClassDetail.message';
Sass.prototype.DELETE_DOCUMENT_SUCCESS= Sass.DELETE_DOCUMENT_SUCCESS = 'class.deleteDocumentSuccess.message';//删除文档成功
export default new Sass;
... ...
... ... @@ -307,7 +307,14 @@ class DocApe extends Ape {
let itemDataInfo = this.unPackPdu(owner, itemIdx, itemData);
this.docList[itemIdx] = itemDataInfo;
loger.log('tableInsertHandler',itemDataInfo);
this._emit(MessageTypes.DOC_UPLOAD,itemDataInfo);
//this._emit(MessageTypes.DOC_UPLOAD,itemDataInfo);
if(itemDataInfo.visible=="true"||itemDataInfo.visible==true){
GlobalConfig.activeDocId=itemDataInfo.itemIdx;//当前激活的文档ID
GlobalConfig.activeDocCurPage=itemDataInfo.curPageNo;//当前激活的文档的当前页
}
this._emit(MessageTypes.DOC_UPDATE,itemDataInfo);//用添加和更新都统一DOC_UPDATE
}
tableDeleteHandler(object_id, tableDeleteData){
... ...
... ... @@ -285,6 +285,7 @@ class WhiteBoardApe extends Ape {
"isFresh":false,
"annotaionItems":annotaionItems
}
loger.log("WHITEBOARD_ANNOTATION_UPDATE",updateObj.length);
this._emit(MessageTypes.WHITEBOARD_ANNOTATION_UPDATE,updateObj);
}
//整体更新并且显示标注
... ... @@ -294,7 +295,7 @@ class WhiteBoardApe extends Ape {
let item=this.annoInfos[key];
if(item&&item.parentId==GlobalConfig.activeDocId&&item.curPageNo==GlobalConfig.activeDocCurPage){
annotaionItems.push(item);
loger.log("显示和文档对应的白板数据docUpdateHandler",item);
loger.log("显示和文档对应的白板数据docUpdateHandler itemIdx:",item.itemIdx,"doc itemIdx:",GlobalConfig.activeDocId,"curPageNo:",GlobalConfig.activeDocCurPage);
}else{
loger.log("不显示白板数据docUpdateHandler",item);
}
... ... @@ -303,6 +304,7 @@ class WhiteBoardApe extends Ape {
"isFresh":true,
"annotaionItems":annotaionItems
}
loger.log("WHITEBOARD_ANNOTATION_UPDATE",updateObj.length);
this._emit(MessageTypes.WHITEBOARD_ANNOTATION_UPDATE,updateObj);
}
... ... @@ -364,7 +366,7 @@ class WhiteBoardApe extends Ape {
}
unPackPdu(owner, itemIdx,itemData){
try{
console.log("白板收到数据===unPackPdu ");
loger.log("白板收到数据===unPackPdu ");
let whiteBoardModelPdu= pdu['RCWhiteBoardDataModelPdu'].decode(itemData);
//console.log(whiteBoardModelPdu);
//loger.log(whiteBoardModelPdu);
... ...