Setting.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. innerRebateRatio: {
  19. type: Number,
  20. required: true,
  21. default: 0
  22. },
  23. runWorkerEnabled: {
  24. type: Boolean,
  25. required: true,
  26. default: false
  27. }
  28. }, {
  29. toJSON: {
  30. transform(doc, ret) {
  31. delete ret._id;
  32. delete ret.__v;
  33. }
  34. },
  35. toObject: {
  36. transform(doc, ret) {
  37. delete ret._id;
  38. delete ret.__v;
  39. }
  40. }
  41. });
  42. const Setting = mongoose.model('SystemSetting', systemSettingSchema);
  43. const get = async () => {
  44. return await Setting.findById('system');
  45. }
  46. const update = async (fields) => {
  47. return await Setting.findByIdAndUpdate(
  48. 'system',
  49. { $set: fields },
  50. { upsert: true, new: true }
  51. );
  52. }
  53. const init = async (fields = {}) => {
  54. const systemSetting = await Setting.findById('system');
  55. if (systemSetting) {
  56. return;
  57. }
  58. const setting = new Setting({
  59. _id: 'system',
  60. ...fields,
  61. });
  62. return setting.save();
  63. }
  64. module.exports = { get, update, init };