Setting.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. const mongoose = require('mongoose');
  2. const { Schema } = mongoose;
  3. const systemSettingSchema = new Schema({
  4. _id: {
  5. type: String,
  6. default: 'system' // 固定 ID
  7. },
  8. innerDefaultAmount: {
  9. type: Number,
  10. required: true,
  11. default: 10000
  12. },
  13. minProfitAmount: {
  14. type: Number,
  15. required: true,
  16. default: 0
  17. },
  18. minShowAmount: {
  19. type: Number,
  20. required: true,
  21. default: 0
  22. },
  23. innerRebateRatio: {
  24. type: Number,
  25. required: true,
  26. default: 0
  27. },
  28. obRebateRatio: {
  29. type: Number,
  30. required: true,
  31. default: 0
  32. },
  33. hgRebateRatio: {
  34. type: Number,
  35. required: true,
  36. default: 0
  37. },
  38. runWorkerEnabled: {
  39. type: Boolean,
  40. required: true,
  41. default: false
  42. },
  43. expireTimeEvents: {
  44. type: Number,
  45. required: true,
  46. default: 45000
  47. },
  48. expireTimeSpecial: {
  49. type: Number,
  50. required: true,
  51. default: 60000
  52. }
  53. }, {
  54. toJSON: {
  55. transform(doc, ret) {
  56. delete ret._id;
  57. delete ret.__v;
  58. }
  59. },
  60. toObject: {
  61. transform(doc, ret) {
  62. delete ret._id;
  63. delete ret.__v;
  64. }
  65. }
  66. });
  67. const Setting = mongoose.model('SystemSetting', systemSettingSchema);
  68. const CALLBACKS = {
  69. update: null,
  70. };
  71. const onUpdate = (callback) => {
  72. CALLBACKS.update = callback;
  73. }
  74. const get = async () => {
  75. return await Setting.findById('system');
  76. }
  77. const update = async (fields) => {
  78. CALLBACKS.update?.(fields);
  79. return await Setting.findByIdAndUpdate(
  80. 'system',
  81. { $set: fields },
  82. { upsert: true, new: true }
  83. );
  84. }
  85. const init = async (fields = {}) => {
  86. const systemSetting = await Setting.findById('system');
  87. if (systemSetting) {
  88. return;
  89. }
  90. const setting = new Setting({
  91. _id: 'system',
  92. ...fields,
  93. });
  94. return setting.save();
  95. }
  96. module.exports = { get, update, init, onUpdate };