/** * Created by Tony on 2017/4/21. */ var mongoose = require("mongoose"); var dbm = require("../../../config/db/db_manager"); var chapterTreeDb = dbm.getCfgConnection("rationRepository") var async = require("async"); var Schema = mongoose.Schema; var rationChapterTreeSchema = mongoose.Schema({//章节树 //生成唯一id改为sectionID 改成string rationRepId: Number, ID:Number, ParentID:Number, NextSiblingID:Number, name: String, isDeleted: Boolean }); var rationChapterTreeModel = chapterTreeDb.model("rationChapterTrees",rationChapterTreeSchema, "rationChapterTrees") var repositoryMap = require('./repositoryMap'); var counter = require('../../../public/counter/counter'); var rationChapterTreeDAO = function(){}; rationChapterTreeDAO.prototype.getRationChapterTree = function(repositoryName,callback){ repositoryMap.getRealLibName(repositoryName, function(err, rst){ rationChapterTreeModel.find({"rationRepId": rst[0].ID, "$or": [{"isDeleted": null}, {"isDeleted": false} ]},function(err,data){ if(data.length) callback(false,data); else if(err) callback("获取定额树错误!",false) else callback(false,false); }) }) } rationChapterTreeDAO.prototype.createNewNode = function(repositoryName, lastNodeId, nodeData,callback){ var promise = repositoryMap.getRealLibName(repositoryName), libId; if (promise) { promise.then(function(rst){ libId = rst[0].ID; return counter.counterDAO.getIDAfterCount(counter.moduleName.rationTree, 1, function(err, result){ nodeData.rationRepId = libId; nodeData.ID = result.value.sequence_value; var node = new rationChapterTreeModel(nodeData); node.save(function (err, result) { if (err) { callback("章节树ID错误!", false); } else { if (lastNodeId > 0) { rationChapterTreeModel.update({ID: lastNodeId}, {"NextSiblingID": nodeData.ID}, function(err, rst){ if (err) { callback("章节树ID错误!", false); } else { callback(false, result); } }); } else callback(false, result); } }); }); }); } else { callback("定额库选择错误!", false); } }, rationChapterTreeDAO.prototype.tempRationChapterTreeInsert = function(repositoryName,rationTempTree,callback){ var db = dbm.getCfgConnection(repositoryName) var rationChapterTreeModel = db.model("rationChapterTrees",rationChapterTreeSchema, "rationChapterTrees") rationChapterTreeModel.collection.insert(rationTempTree,function(err,data){ if(err) callback("插入定额模板错误",false) else callback(false,"ok") }) } rationChapterTreeDAO.prototype.removeNodes = function(nodeIds, preNodeId, preNodeNextId, callback){ var functions = []; if (preNodeId != -1) { functions.push((function(nodeId, nextId) { return function(cb) { rationChapterTreeModel.update({ID: nodeId}, {"NextSiblingID": nextId}, cb); }; })(preNodeId, preNodeNextId)); } for (var i=0; i < nodeIds.length; i++) { functions.push((function(nodeId) { return function(cb) { rationChapterTreeModel.update({ID: nodeId}, {"isDeleted": true}, cb); }; })(nodeIds[i])); } async.parallel(functions, function(err, results) { callback(err, results); }); } rationChapterTreeDAO.prototype.updateNodes = function(nodes,callback){ var functions = []; for (var i=0; i < nodes.length; i++) { //var md = new rationChapterTreeModel(nodes[i]); //md.isNew = false; functions.push((function(doc) { return function(cb) { rationChapterTreeModel.update({ID: doc.ID}, doc, cb); }; })(nodes[i])); } async.parallel(functions, function(err, results) { callback(err, results); }); }; module.exports = new rationChapterTreeDAO()