/** * Created by jimiz on 2017/4/16. */ var billsData = require('./bills'); var rationData = require('./ration'); var GLJData = require('./GLJ'); var consts = require('./projectConsts'); var projectConsts = consts.projectConst; var async = require("async"); var moduleMap = {}; moduleMap[projectConsts.BILLS] = billsData; moduleMap[projectConsts.RATION] = rationData; moduleMap[projectConsts.GLJ] = GLJData; var Project = function (){}; Project.prototype.datas = []; Project.prototype.prepare = function(data, callback){ var me = this; data.update_data.forEach(function(item){ me.datas.push(item); /* to do moduleMap[item.moduleName].prepare(item.data, jobCallback); */ }); }; Project.prototype.save = function(datas, callback){ var job, savePoint; var functions = []; var item; this.prepare(datas, function(job, savePoint){}); function saveModule(data) { return function (cb) { moduleMap[data.moduleName].save(data.data, cb); } } for (var i = 0; i < this.datas.length; i++){ item = this.datas[i]; functions.push(saveModule(item)); } async.parallel(functions, function(err, results) { if (!err){ callback(null, '', results) } else{ callback(1, 'save project failed', null) } }); this.datas = []; }; Project.prototype.getData = function(projectID, callback){ var functions = []; var itemName; for (itemName in moduleMap){ functions.push((function(itemName){ return function (cb) { moduleMap[itemName].getData(projectID, function(err, moduleName, data){ cb(err, {moduleName: moduleName, data: data}) }) } })(itemName)) } async.parallel(functions, function(err, results) { if (!err){ callback(null, '', results) } else{ callback(1, 'load project failed', null) } }); }; module.exports = new Project();