Browse Source

后端存储

chenshilong 6 years ago
parent
commit
239c258a59

+ 35 - 0
modules/all_models/block_lib_model.js

@@ -0,0 +1,35 @@
+/**
+ * Created by CSL on 2018-12-17.
+ */
+let mongoose = require('mongoose');
+let Schema = mongoose.Schema;
+
+let dataSchema = new Schema({
+    ID: Number,
+    NextSiblingID: Number,
+    ParentID: Number,
+    children: [],
+    code: String,
+    compilationID: String,
+    copyTime: Number,
+    firstNodeType: Number,
+    isFBFX: {type: Boolean, default: true},
+    itemCharacterText: String,
+    name: String,
+    nodeName: String,
+    type: Number,
+    unit: String,
+    unitFee: String,
+    _id: false
+},{versionKey:false});
+
+let blockLibsSchema = new Schema({
+    userID: String,
+    compilationID: String,
+    libID: Number,
+    libName: String,
+    datas: [dataSchema],
+    share: {}
+},{versionKey:false});
+
+mongoose.model('blockLibsModel', blockLibsSchema, 'block_libs');

+ 69 - 0
modules/main/controllers/block_lib_controller.js

@@ -0,0 +1,69 @@
+/**
+ * Created by CSL on 2018-12-17.
+ */
+
+let mongoose = require('mongoose');
+let blFacade = require('../facade/block_lib_facade');
+
+module.exports = {
+    getLibNames: getLibNames,
+    getLib: getLib,
+    save: save,
+    saveBlock: saveBlock
+};
+
+async function getLibNames(req, res) {
+    let result = {error: 0, message: '', data: null};
+    try {
+        let dataObj = JSON.parse(req.body.data);
+        let libNames = await blFacade.getLibNames(dataObj.userID, req.body.data.compilationID);
+        result.data = libNames;
+    } catch (err) {
+        console.log(err);
+        result.error = 1;
+        result.message = err.message;
+    }
+    res.json(result);
+};
+
+async function getLib(req, res) {
+    let result = {error: 0, message: '', data: null};
+    try {
+        let dataObj = JSON.parse(req.body.data);
+        let lib = await blFacade.getLib(dataObj.libID);
+        result.data = lib;
+    } catch (err) {
+        console.log(err);
+        result.error = 1;
+        result.message = err.message;
+    }
+    res.json(result);
+};
+
+async function save(req, res) {
+    let result = {error: 0, message: '', data: null};
+    await blFacade.save(req.body.data, function (err, data) {
+        if (err == '') {
+            result.data = data;
+        } else {
+            result.error = 1;
+            result.message = err;
+        }
+    });
+    res.json(result);
+};
+
+async function saveBlock(req, res) {
+    let result = {error: 0, message: '', data: null};
+    let dataObj = JSON.parse(req.body.data);
+    try{
+        await blFacade.saveBlock(dataObj);
+        result.data = 'saveBlock.OK';
+    }
+    catch(err){
+        console.log(err);
+        result.error = 1;
+        result.message = err.message;
+    };
+    res.json(result);
+};

+ 37 - 0
modules/main/facade/block_lib_facade.js

@@ -0,0 +1,37 @@
+/**
+ * Created by CSL on 2018-12-17.
+ */
+
+let mongoose = require('mongoose');
+let blModel = mongoose.model('blockLibsModel');
+
+module.exports = {
+    getLibNames: getLibNames,
+    getLib: getLib,
+    save: save,
+    saveBlock: saveBlock
+};
+
+async function getLibNames(userID, compilationID) {
+    let libNames = await blModel.find({userID: userID, compilationID: compilationID});
+    return libNames;
+};
+
+async function getLib(libID) {
+    let lib = await blModel.findOne({libID: libID});
+    return lib;
+};
+
+async function save(data, callback) {
+//
+};
+
+async function saveBlock(data) {
+    await blModel.update({libID: data.libID}, {"$addToSet": {"datas": data}});
+};
+
+// test Model and write DB functions.
+// function cbExec(err) {if (err) {console.log(err)} else {console.log('saved.')}};
+// async function testData(obj) {await blModel.create(obj, cbExec)};
+// let obj = {"userID":"2164","libID":25,"libName":"模板库25","datas":[],"share":{shareName: 'CSL共享库', shareTo: [2,3,4]}};
+// testData(obj);

+ 20 - 0
modules/main/routes/block_lib_route.js

@@ -0,0 +1,20 @@
+/**
+ * Created by CSL on 2018-12-14.
+ */
+
+let express = require('express');
+let blController = require('../controllers/block_lib_controller');
+
+module.exports = function (app) {
+    var blRouter = express.Router();
+    blRouter.post('/getLibNames', blController.getLibNames);
+    blRouter.post('/getLib', blController.getLib);
+    blRouter.post('/saveBlock', blController.saveBlock);
+    blRouter.post('/save', blController.save);
+
+    app.use('/blockLib', blRouter);
+}
+
+
+
+

+ 24 - 1
web/building_saas/main/js/views/block_lib.js

@@ -66,6 +66,7 @@ var blockLibObj = {
         }
     },
     cloneType: null,
+    libID: 1,
 
     buildSheet: function () {
         $.bootstrapLoading.start();
@@ -345,7 +346,7 @@ var blockLibObj = {
         };
         return new TreeCell();
     },
-    newNode: function (nodeType, nodeName, categoryID, source){     // 1 分类(只用前两个参数)  2 块文件
+    newNode: async function (nodeType, nodeName, categoryID, source){     // 1 分类(只用前两个参数)  2 块文件
         let tree = blockLibObj.mainTree;
         let pID = -1, nID = -1;
         let select = tree.selected;
@@ -366,11 +367,14 @@ var blockLibObj = {
         }
 
         let newN = tree.insert(pID, nID);
+        newN.data.libID = blockLibObj.libID;
         newN.data.type = nodeType;
         newN.data.nodeName = nodeName;
         if (nodeType == 2)
             blockLibObj.assignData(newN, source);
 
+        let a = await ajaxPost('/blockLib/saveBlock', newN.data);
+        alert(a);
         tree.selected = newN;
         let sheet = blockLibObj.mainSheet;
         sheet.suspendPaint();
@@ -382,6 +386,25 @@ var blockLibObj = {
         sheet.setSelection(idx, 0, 1, 1);
         sheet.resumeEvent();
         sheet.resumePaint();
+       /* .then(
+            function () {
+                tree.selected = newN;
+                let sheet = blockLibObj.mainSheet;
+                sheet.suspendPaint();
+                sheet.suspendEvent();
+                let idx = tree.items.indexOf(newN);
+                sheet.addRows(idx, 1);
+                sheet.getRange(idx, 0, 1, 1).locked(true);
+                sheet.setValue(idx, 0, newN.data.nodeName);
+                sheet.setSelection(idx, 0, 1, 1);
+                sheet.resumeEvent();
+                sheet.resumePaint();
+            }
+        ).catch(
+                function () {
+                    console.log('块文件入库存储失败!');
+                }
+        );*/
     },
     assignData: function (block, source){
         block.data.compilationID = source.compilationID;

+ 8 - 8
web/building_saas/main/js/views/project_view.js

@@ -2973,13 +2973,13 @@ $(function () {
         $('#clone_option_noCover').prop("checked", true);
     });
 
-    $("#btn_block_createBlocks").click(function () {
+    $("#btn_block_createBlocks").click(async function () {
         if ($("#select_block_category")[0].options.length < 1) return;
         let cID = $("#select_block_category").val();
         let selected = projectObj.project.mainTree.selected;
         let cover = $('#ckb_block_exist_cover').prop("checked");
-        function createBlocks(aNode, categoryID){
-            function createBlock(node) {
+        async function createBlocks(aNode, categoryID){
+            async function createBlock(node) {
                 if (node.data.name == undefined || node.data.name == '') return;  // 清单名称为空,不生成块模板文件
                 if (node.children.length == 0) return;
                 // 封装成伟城的块文件格式,直接调用伟城接口(定额这里的业务太多太庞杂,不要再重做一遍,尽量共用,维护代价小)
@@ -3002,10 +3002,10 @@ $(function () {
                     if (cover) blockLibObj.assignData(extN, vBlock_WC);
                 }
                 else
-                    blockLibObj.newNode(2, fileName, categoryID, vBlock_WC);
+                    await blockLibObj.newNode(2, fileName, categoryID, vBlock_WC);
             };
 
-            function createRecursion(node){
+            async function createRecursion(node){
                 if (!node) return;
 
                 if (calcTools.isLeafBill(node)) createBlock(node);
@@ -3015,12 +3015,12 @@ $(function () {
             };
 
             if (calcTools.isLeafBill(aNode))
-                createBlock(aNode)
+               await createBlock(aNode)
             else
-                createRecursion(aNode.firstChild());
+               await createRecursion(aNode.firstChild());
         };
 
-        createBlocks(selected, cID);
+        await createBlocks(selected, cID);
         blockLibObj.loadDetailDatas(blockLibObj.mainTree.selected);
         $("#div_createBlocks").modal("hide");
     });