counter.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /**
  2. * Created by Tony on 2017/3/21.
  3. */
  4. var mongoose = require('mongoose');
  5. var counterModel = mongoose.model("counters");
  6. // All counter Must predefine in DB
  7. const COUNTER_MODULE_NAME = {
  8. project: 'projects',
  9. user: 'users',
  10. bills: 'bills',
  11. rations: 'rations',
  12. GLJ: 'glj',
  13. rationMap: 'rationMaps',
  14. rationTree: 'rationChapterTrees',
  15. report: 'rptTemplates',
  16. fee: 'fees',
  17. unitPriceFile: 'unitPriceFile',
  18. unitPriceGLJ: 'unitPriceGLJ',
  19. template_bills: 'temp_bills',
  20. billsLib: 'billsLib',
  21. coeList: 'coeList',
  22. complementaryCoeList: 'complementary_coe_list',
  23. glj_list: 'glj_list'
  24. }
  25. /*const PROJECT_COUNTER = 'projects', USER_COUNTER = 'users', BILL_COUNTER = 'bills', RATION_COUNTER = 'rations',
  26. REPORT_COUNTER = 'rptTemplates', FEE_COUNTER = 'fees'*/
  27. var counterDAO = function(){};
  28. /*
  29. * callback = function (err, result) {
  30. * result.value.sequence_value Ϊ�޸ĺ��id
  31. * }
  32. */
  33. counterDAO.prototype.getIDAfterCount = function(moduleName, stepCount, callback) {
  34. var sc = stepCount;
  35. if (isNaN(stepCount) || (stepCount < 0)) {
  36. sc = 1;
  37. } else if (!(/^-?\d+$/.test(stepCount))) {
  38. sc = Math.round(stepCount + 0.5);
  39. }
  40. counterModel.findOneAndUpdate({_id: moduleName}, { $inc: { sequence_value: sc } }, {'new':true}, callback);//findOneAndUpdate
  41. }
  42. counterDAO.prototype.getIDAfterCountSync = async function (moduleName, stepCount) {
  43. let sc = stepCount;
  44. if (isNaN(stepCount) || (stepCount < 0)) {
  45. sc = 1;
  46. } else if (!(/^-?\d+$/.test(stepCount))) {
  47. sc = Math.round(stepCount + 0.5);
  48. }
  49. return await counterModel.findOneAndUpdate({_id: moduleName}, { $inc: { sequence_value: sc } }, {'new':true});//findOneAndUpdate
  50. };
  51. counterDAO.prototype.getCurrentID = function(moduleName, callback) {
  52. if (callback) {
  53. counterModel.findOne({_id: moduleName}).exec()
  54. .then(function(result, err) {
  55. if (callback) {
  56. callback(result, err);
  57. }
  58. }
  59. );
  60. return null;
  61. } else {
  62. var rst = counterModel.findOne({_id: moduleName}).exec() ;
  63. return rst;
  64. }
  65. }
  66. module.exports = {
  67. counterDAO: new counterDAO(),
  68. moduleName: COUNTER_MODULE_NAME
  69. };