Browse Source

分享功能提交代码才能拉取新代码

zhongzewei 6 years atrás
parent
commit
c6d52c6eab

+ 49 - 0
modules/pm/controllers/pm_controller.js

@@ -523,6 +523,9 @@ module.exports = {
             //添加分享
             let shareData = {userID: data.userID, allowCopy: data.allowCopy, shareDate: moment(Date.now()).format('YYYY-MM-DD HH:mm:ss')};
             if(data.type === 'create'){
+                //覆盖
+                await projectModel.update({ID: data.projectID, $or: [{deleteInfo: null}, {'deleteInfo.deleted': false}]}, {$pull: {shareInfo: {userID: data.userID}}});
+                //新增
                 await projectModel.update({ID: data.projectID, $or: [{deleteInfo: null}, {'deleteInfo.deleted': false}]}, {$addToSet: {shareInfo: shareData}});
             }
             //取消分享
@@ -535,6 +538,52 @@ module.exports = {
             callback(req, res, 1, err, null);
         }
     },
+    //接收到的分享项目,返回未定义组、已定义组
+    receiveProjects: async function(req, res) {
+        try {
+            let rst = {grouped: [], ungrouped: []}
+            let userID = req.session.sessionUser.id;
+            let receiveProjects = await projectModel.find({
+                $or: [{deleteInfo: null}, {'deleteInfo.deleted': false}], compilation: req.session.sessionCompilation._id, 'shareInfo.userID': userID});
+            //设置原项目用户信息
+            if(receiveProjects.length > 0){
+                let orgUserIDs = [];
+                for(let proj of receiveProjects){
+                    orgUserIDs.push(proj.userID);
+                }
+                orgUserIDs = Array.from(new Set(orgUserIDs));
+                let userObjIDs = [];
+                for(let uID of orgUserIDs){
+                    userObjIDs.push(mongoose.Types.ObjectId(uID));
+                }
+                let orgUsersInfo = await userModel.find({_id: {$in : userObjIDs}});
+                for(let proj of receiveProjects){
+                    //获取分享项目子项
+                    if (proj.projType !== projType.tender) {
+                        proj._doc.children = await pm_facade.getPosterityProjects([proj.ID]);
+                    }
+                    //设置分组,单位工程及单项工程分到未分组那
+                    if (proj.projType === projType.tender || proj.projType === projType.engineering) {
+                        rst.ungrouped.push(proj);
+                    } else {
+                        rst.grouped.push(proj);
+                    }
+                    //设置项目类型为来自别人分享
+                    proj._doc.shareType = 'receive';
+                    for(let userData of orgUsersInfo){
+                        if(proj.userID == userData._id.toString()){
+                            let userInfo = {name: userData.real_name, mobile: userData.mobile, company: userData.company, email: userData.email};
+                            proj._doc.userInfo = userInfo;
+                        }
+                    }
+                }
+            }
+            callback(req, res, 0, 'success', rst);
+        }
+        catch (err){
+            callback(req, res, 1, err, null);
+        }
+    },
     getShareProjects: async function (req, res) {
         try {
             let userID = req.session.sessionUser.id;

+ 20 - 1
modules/pm/facade/pm_facade.js

@@ -46,7 +46,8 @@ module.exports={
     getConstructionProject: getConstructionProject,
     getFullPath: getFullPath,
     getProjectFeature:getProjectFeature,
-    projectType: projectType
+    projectType: projectType,
+    getPosterityProjects: getPosterityProjects,
 };
 
 async function copyProject(userID, compilationID,data) {
@@ -722,4 +723,22 @@ async function getProjectFeature(libID,feeStandardName){
     }else {
         return [];
     }
+}
+
+//获取文件下所有子项目
+async function getPosterityProjects(projectIDs) {
+    let rst = [];
+    async function getProjects(IDs) {
+        if (IDs.length > 0) {
+            let newIDs = [];
+            let projs = await projectModel.find({ParentID: {$in: IDs}, $or: notDeleted}, '-_id -property');
+            for (let proj of projs) {
+                rst.push(proj);
+                newIDs.push(proj.ID);
+            }
+            await getProjects(newIDs);
+        }
+    }
+    await getProjects(projectIDs);
+    return rst;
 }

+ 1 - 0
modules/pm/routes/pm_route.js

@@ -57,6 +57,7 @@ module.exports = function (app) {
     pmRouter.post('/getProjectShareInfo', pmController.projectShareInfo);
     pmRouter.post('/share', pmController.share);
     pmRouter.post('/getShareProjects', pmController.getShareProjects);
+    pmRouter.post('/receiveProjects', pmController.receiveProjects);
 
     app.use('/pm/api', pmRouter);
 };

+ 2 - 2
web/building_saas/pm/js/pm_share.js

@@ -628,8 +628,8 @@ const pmShare = (function () {
     function initShareTree(){
         $.bootstrapLoading.start();
         //获取分享数据
-        CommonAjax.post('/pm/api/getShareProjects', {user_id: userID}, function (rstData) {
-            let projDatas = rstData.receive.concat(rstData.share);
+        CommonAjax.post('/pm/api/receiveProjects', {user_id: userID}, function (projDatas) {
+            return;
             buildTreeDatas(projDatas);
             tree = pmTree.createNew(treeSetting, projDatas);
             console.log(tree);