root 3 năm trước cách đây
mục cha
commit
e96cdbfd91
2 tập tin đã thay đổi với 138 bổ sung61 xóa
  1. 7 13
      js/Office/Word/Word.js
  2. 131 48
      node/message.js

+ 7 - 13
js/Office/Word/Word.js

@@ -161,7 +161,7 @@ U.MD.O.W.setEvent = function () {
     else {
         //设置保存事件
         $('#U_MD_O_H_save')[0].onclick = function () {
-            U.MD.O.W.save()
+            U.MD.O.W.save();
         }
         $('body').removeClass('U_MD_O_W_Nav');
     }
@@ -219,20 +219,14 @@ U.MD.O.W.loadContent = function (fileinfo) {
         //清楚文件新建的属性,说明文件不是新建
         delete fileinfo.newfile;
     }
-    //数据库获取数据
+    //互联办公文档获取数据
+    else if (_permission.web) {
+        parent.U.A.Request(US.SCOKET, [U.MD.O.W.fileinfo.UserDirectoryExtendType == 'un' ? 'getNav' : "getWord", _fileid, US.pageId, U.MD.O.W.userinfo.UserId], U.MD.O.W.asynLoad, [$("#U_MD_O_H_wordEditor")[0], fileinfo, _permission.web]); //获取office内容
+    }
+    //普通文档在数据库里面获取数据
     else {
-
-
+        parent.U.A.Request(US.DISK, ["GetFileContent", _fileid], U.MD.O.W.asynLoad, [$("#U_MD_O_H_wordEditor")[0], fileinfo, _permission.web]);
     }
-
-    //互联办公文档获取数据
-    // else if (_permission.web) {
-    //     parent.U.A.Request(US.SCOKET, [U.MD.O.W.fileinfo.UserDirectoryExtendType == 'un' ? 'getNav' : "getWord", _fileid, US.pageId, U.MD.O.W.userinfo.UserId], U.MD.O.W.asynLoad, [$("#U_MD_O_H_wordEditor")[0], fileinfo, _permission.web]); //获取office内容
-    // }
-    // //普通文档在数据库里面获取数据
-    // else {
-    //     parent.U.A.Request(US.DISK, ["GetFileContent", _fileid], U.MD.O.W.asynLoad, [$("#U_MD_O_H_wordEditor")[0], fileinfo, _permission.web]);
-    // }
 }
 
 /**

+ 131 - 48
node/message.js

@@ -9,51 +9,57 @@ us.mysql = require("./mysql.js"); //引用执行存储过程包
 * 用户的链接池集合,以用户id作为搜索键
 **/
 us.connect = {
-//userguid:{pageid : us.userConnect, pageid : us.userConnect}
+    //userguid:{pageid : us.userConnect, pageid : us.userConnect}
 }
 
 /**
 * 用户的数据集合集合,以用户id作为搜索键
 **/
 us.user = {
-//userId : userInfo  //用户连接(请求), 这里可以是http短连接可以使socket长连接
+    //userId : userInfo  //用户连接(请求), 这里可以是http短连接可以使socket长连接
 }
 
 /**
 * 用户的消息集合,以用户的页面id(登录唯一识别ID)作为搜索键
 **/
 us.offLineMessage = {
-//pageId : us.userOffLineMessage
+    //pageId : us.userOffLineMessage
+}
+
+
+us.mindNetwork = {
+    // mindid: {
+    // }
 }
 
 //文档列表
 us.word = {
-//docId : {
-// user : {userId : [pageId, pageId], 
-//     userId : [pageId, pageId]}, 
-//     content : docel, 
-//     history : [operand(操作信息对象), operand(操作信息对象)]
-// }  //群信息结构
-//docId : {user : {userId : [pageId, pageId], userId : [pageId, pageId]}, content : docel, history : [operand(操作信息对象), operand(操作信息对象)]  }  //文档信息结构
+    //docId : {
+    // user : {userId : [pageId, pageId], 
+    //     userId : [pageId, pageId]}, 
+    //     content : docel, 
+    //     history : [operand(操作信息对象), operand(操作信息对象)]
+    // }  //群信息结构
+    //docId : {user : {userId : [pageId, pageId], userId : [pageId, pageId]}, content : docel, history : [operand(操作信息对象), operand(操作信息对象)]  }  //文档信息结构
 }
 
 //excel列表      
 us.excel = {
-//excelId : {user : {userId : [pageId, pageId], userId : [pageId, pageId]}, content : docel, history : [operand(操作信息对象), operand(操作信息对象)], name : 文件名 }  //群信息结构
-//excelId : {user : {userId : [pageId, pageId], userId : [pageId, pageId]}, content : docel, history : [operand(操作信息对象), operand(操作信息对象)], name : 文件名 }  //群信息结构
+    //excelId : {user : {userId : [pageId, pageId], userId : [pageId, pageId]}, content : docel, history : [operand(操作信息对象), operand(操作信息对象)], name : 文件名 }  //群信息结构
+    //excelId : {user : {userId : [pageId, pageId], userId : [pageId, pageId]}, content : docel, history : [operand(操作信息对象), operand(操作信息对象)], name : 文件名 }  //群信息结构
 }
 
 //导航文件列表
 us.nav = {
-//fileId : {
-//            user : {userId : [pageId, pageId], userId : [pageId, pageId]}, 
-//            navInfo : { 
-//                          logo : '', 
-//                          nav : [ {pageId: '', name : ''}, {pageId: '', name : '', child :[ {pageId: '', name : ''} ]} ]
-//                       }, 
-//            page : {pageId : pageContent, pageId : pageContent},
-//            history : [operand(操作信息对象), operand(操作信息对象)] 
-//}  //导航文档数据结构
+    //fileId : {
+    //            user : {userId : [pageId, pageId], userId : [pageId, pageId]}, 
+    //            navInfo : { 
+    //                          logo : '', 
+    //                          nav : [ {pageId: '', name : ''}, {pageId: '', name : '', child :[ {pageId: '', name : ''} ]} ]
+    //                       }, 
+    //            page : {pageId : pageContent, pageId : pageContent},
+    //            history : [operand(操作信息对象), operand(操作信息对象)] 
+    //}  //导航文档数据结构
 }
 
 /**
@@ -92,9 +98,10 @@ us.userOffLineMessage = function (type) {
     return {
         "message": [], //用户的消息数组
         "type": type, //链接的端 pc或者pho
-        "word": [],
-        "excel": [],
-        "nav": []
+        "word": [], //word数据
+        "excel": [], //excel数据
+        "mindNetwork": [], //思维网格数据
+        "nav": [] //导航模式数据
     }
 }
 
@@ -149,7 +156,7 @@ us.server = us.http.createServer(function (requset, response) {
             //参数解码  us.parm为全局变量 记录所有参数
             var _userinfo,
                 _funname = param[0],
-            //参数解码 中文处理
+                //参数解码 中文处理
                 _param = param.splice(1);
             //执行回调函数
             switch (_funname) {
@@ -177,6 +184,10 @@ us.server = us.http.createServer(function (requset, response) {
                 case 'getNav':
                     us.getNav(response, _param[0], _param[1], _param[2]);
                     break;
+                //获取文档信息                                                                                                               
+                case 'getMindNetwork':
+                    us.getMindNetwork(response, _param[0], _param[1], _param[2]);
+                    break;
                 case 'getNavPageContent':
                     us.getNavPageContent(response, _param[0], _param[1]);
                     break;
@@ -469,7 +480,7 @@ us.polling = function (response, userid, pageid, type) {
     if (us.connect[userid]) {
         var _userarray = us.connect[userid], //用户连接池,获取制定用户连接的数量,
             _messagearray = us.offLineMessage[pageid] //用户离校消息
-        ;
+            ;
         //获取当前连接的用户,如果获取成功那么直接修改用户的连接
         if (_userarray[pageid]) {
             _userarray[pageid].response = response;
@@ -502,14 +513,32 @@ us.send = function (response, messageinfo) {
     var i, j,
         _message,
         _messagelist = {},
-    // _messageall = [],
         _messageobj = JSON.parse(messageinfo) //获取传入的json对象
-    ;
+        ;
 
     //循环用户的信息处理
     for (i in _messageobj) {
         switch (i) {
             //word信息交互                                                                                      
+            case "us.mindNetwork":
+                _messagearr = _messageobj[i]; //获取word消息
+                //得到word所有的用户
+                for (j = 0; j < _messagearr.length; j++) {
+                    //生成发送的消息结构体
+                    _message = us.message(_messagearr[j].sendId, "us.mindNetwork", _messagearr[j].messageInfo);
+                    //添加消息列表
+                    if (_messagelist[_messagearr[j].receiveId]) {
+                        _messagelist[_messagearr[j].receiveId].push(_message);
+                    } else {
+                        _messagelist[_messagearr[j].receiveId] = [_message];
+                    }
+                    us.mindNetwork[_message.messageInfo.docId] && us.mindNetwork[_message.messageInfo.docId].history.push(_message);
+                    us.updatemindNetwork(_message.messageInfo);
+                }
+                //调用群发函数
+                _messagearr[0] && us.broadcast(_messagelist, _messagearr[0].messageInfo.pageId, 'word');
+                break;
+            //word信息交互                                                                                      
             case "us.word":
                 _messagearr = _messageobj[i]; //获取word消息
                 //得到word所有的用户
@@ -574,6 +603,20 @@ us.send = function (response, messageinfo) {
     response.end('send');
 }
 
+
+/**
+* 更新后台Word内容
+* @param {object} message 消息信息
+*/
+us.updatemindNetwork = function (messageInfo) {
+    if (us.mindNetwork[messageInfo.docId]) {
+        var $ = us.word[messageInfo.docId].content;
+        if ($) {
+            us.word[messageInfo.docId].content[id] = messageInfo.content;
+        }
+    }
+}
+
 /**
 * 更新后台Word内容
 * @param {object} message 消息信息
@@ -1318,18 +1361,18 @@ us.insertHistory = function (docinfo, docid, type) {
             case 'word':
                 var _content = docinfo.content ? docinfo.content('body').html().replace(/'/ig, '\\\'').replace(/"/ig, "\\\"") : "";
                 us.mysql.usselect(['sqlserver.1473.cn', 'UseStudio_Disk', 'SaveFileContent', docid, _content, ''],
-                function (ret) { });
+                    function (ret) { });
                 break;
             case 'nav':
                 us.mysql.usselect(['sqlserver.1473.cn', 'UseStudio_Disk', 'SaveFileContent', docid, JSON.stringify(docinfo.navInfo), ''],
-                function (ret) {
-                    var _key;
-                    for (_key in docinfo.page) {
-                        //发送保存内容请求
-                        var _content = docinfo.page[_key] ? docinfo.page[_key]('body').html().replace(/'/ig, '\\\'').replace(/"/ig, "\\\"") : "";
-                        us.mysql.usselect(['sqlserver.1473.cn', 'UseStudio_Office', 'SaveNavPageContent', _key, _content], function (ret) { });
-                    }
-                });
+                    function (ret) {
+                        var _key;
+                        for (_key in docinfo.page) {
+                            //发送保存内容请求
+                            var _content = docinfo.page[_key] ? docinfo.page[_key]('body').html().replace(/'/ig, '\\\'').replace(/"/ig, "\\\"") : "";
+                            us.mysql.usselect(['sqlserver.1473.cn', 'UseStudio_Office', 'SaveNavPageContent', _key, _content], function (ret) { });
+                        }
+                    });
                 break;
         }
     }
@@ -1734,6 +1777,46 @@ us.addExcel = function (response, excelinfo) {
     response.end('OK'); //返回到前台
 }
 
+/**
+* 获取思维网格数据,转成成数组
+* 
+*/
+us.getMindNetwork = function (response, docid, pageid, userid) {
+    //判断文档是否已在内层中存在
+    if (us.mindNetwork[docid]) {
+        //如果存在则直接返回内层的文档
+        if (!us.mindNetwork[docid].user[userid]) {
+            us.mindNetwork[docid].user[userid] = [pageid];
+        } else {
+            us.mindNetwork[docid].user[userid].push(pageid);
+        }
+        us.offLineMessage[pageid].mindNetwork.indexOf(docid) == -1 && us.offLineMessage[pageid].mindNetwork.push(docid); //添加到用户离线消息的连接wrod记录中
+        response.end(us.mindNetwork[docid].content('body').html());
+    }
+    else {
+        us.mindNetwork[docid] = {
+            user: {},
+            history: []
+        };
+        us.mindNetwork[docid].user[userid] = [pageid];
+        if (us.offLineMessage[pageid]) {
+            us.offLineMessage[pageid].mindNetwork.indexOf(docid) == -1 && us.offLineMessage[pageid].mindNetwork.push(docid); //添加到用户离线消息的连接wrod记录中
+        }
+        //如果不存在则去数据库查找
+        us.mysql.usselect(['127.0.0.1', 'pbl', 'select_file', docid],
+            function (ret) {
+                if (ret) {
+                    us.mindNetwork[docid].content = json.parse(ret); //把思维网格的内容转化成数组
+                    response.end(ret); //返回文档内容
+                }
+                else {
+                    us.mindNetwork[docid].content = []; //创建一个空数组
+                    response.end(''); //返回文档内容 
+                }
+            });
+    }
+}
+
 /**
 * 获取文档,并生成DOM
 * 
@@ -1762,17 +1845,17 @@ us.getWord = function (response, docid, pageid, userid) {
             us.offLineMessage[pageid].word.indexOf(docid) == -1 && us.offLineMessage[pageid].word.push(docid); //添加到用户离线消息的连接wrod记录中
         }
         //如果不存在则去数据库查找
-        us.mysql.usselect(['sqlserver.1473.cn', 'UseStudio_Disk', 'GetFileContent', docid],
-        function (ret) {
-            if (ret) {
-                var _office = JSON.parse(ret)[0][0].UsOffice ? JSON.parse(ret)[0][0].UsOffice.replace(/\\'/ig, '\'').replace(/\\"/ig, "\"") : ""; //记录查找内容
-                us.word[docid].content = us.cheerio.load(_office); //将文档添加到内层中
-                response.end(_office); //返回文档内容
-            } else {
-                us.word[docid].content = us.cheerio.load(''); //将文档添加到内层中
-                response.end(''); //返回文档内容 
-            }
-        });
+        us.mysql.usselect(['127.0.0.1', 'pbl', 'select_file', docid],
+            function (ret) {
+                if (ret) {
+                    var _office = JSON.parse(ret)[0][0].data ? JSON.parse(ret)[0][0].data.replace(/\\'/ig, '\'').replace(/\\"/ig, "\"") : ""; //记录查找内容
+                    us.word[docid].content = us.cheerio.load(_office); //将文档添加到内层中
+                    response.end(_office); //返回文档内容
+                } else {
+                    us.word[docid].content = us.cheerio.load(''); //将文档添加到内层中
+                    response.end(''); //返回文档内容 
+                }
+            });
     }
 }