| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | /** * Created by Tony on 2017/3/21. */var mongoose = require('mongoose');var counterModel = mongoose.model("counters_operation");// All counter Must predefine in DBconst COUNTER_MODULE_NAME = {    project: 'projects',    user: 'users',    bills: 'bills',    rations: 'rations',    GLJ: 'glj',    rationMap: 'rationMaps',    rationTree: 'rationChapterTrees',    report: 'rptTemplates',    fee: 'fees',    unitPriceFile: 'unitPriceFile',    unitPriceGLJ: 'unitPriceGLJ',    template_bills: 'temp_bills',    stdGljLib: 'stdGljLib',    billsLib: 'billsLib',    billsLib_jobs: 'billsLib_jobs',    billsLib_items: 'billsLib_items',    coeList: 'coeList',    installation: 'installation',    stdCalcProgram:'std_calc_programs'}/*const PROJECT_COUNTER = 'projects', USER_COUNTER = 'users', BILL_COUNTER = 'bills', RATION_COUNTER = 'rations',    REPORT_COUNTER = 'rptTemplates', FEE_COUNTER = 'fees'*/var counterDAO = function(){};/* * callback = function (err, result) { *     result.value.sequence_value Ϊ�ĺ��id * } */counterDAO.prototype.getIDAfterCount = async function(moduleName, stepCount, callback = null) {    var sc = stepCount;    if (isNaN(stepCount) || (stepCount < 0)) {        sc = 1;    } else if (!(/^-?\d+$/.test(stepCount))) {        sc = Math.round(stepCount + 0.5);    }    if (callback === null) {        let result = await counterModel.findOneAndUpdate({_id: moduleName}, { $inc: { sequence_value: sc } }, {'new':true});        return await checkIDResult(result,moduleName,null)    } else {        counterModel.findOneAndUpdate({_id: moduleName}, { $inc: { sequence_value: sc } }, {'new':true}, function (err,result) {            checkIDResult(result,moduleName,callback,err)        });    }}async function checkIDResult(result,moduleName,callback,err){    if(result){        return callback?callback(err,result):result;    }else {        return callback?counterModel.create({_id: moduleName,sequence_value:1},callback): await counterModel.create({_id: moduleName,sequence_value:1});    }}counterDAO.prototype.getCurrentID = function(moduleName, callback) {    if (callback) {        counterModel.findOne({_id: moduleName}).exec()        .then(function(result, err) {            if (callback) {                callback(result, err);            }        }        );        return null;    } else {        var rst = counterModel.findOne({_id: moduleName}).exec() ;        return rst;    }}module.exports = {    counterDAO: new counterDAO(),    moduleName: COUNTER_MODULE_NAME};
 |