setting_model.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /**
  2. * 个人设置业务逻辑
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/7/27
  6. * @version
  7. */
  8. import BaseModel from "../../common/base/base_model";
  9. import SettingType from "../../common/const/setting_type_const";
  10. import mongoose from "mongoose";
  11. class SettingModel extends BaseModel {
  12. /**
  13. * 偏好设置默认
  14. *
  15. * @var {Object}
  16. */
  17. preferenceDefault = {
  18. login_ask: 1,
  19. select_version: -1
  20. };
  21. /**
  22. * 设置场景
  23. *
  24. * @param {string} scene
  25. * @return {void}
  26. */
  27. setScene(scene = '') {
  28. switch (scene) {
  29. // 新增数据的验证规则
  30. case 'add':
  31. this.model.schema.path('type').required(true);
  32. this.model.schema.path('data').required(true);
  33. this.model.schema.path('user_id').required(true);
  34. break;
  35. case 'update':
  36. this.model.schema.path('data').required(true);
  37. break;
  38. }
  39. }
  40. /**
  41. * 构造函数
  42. */
  43. constructor() {
  44. let parent = super();
  45. parent.model = mongoose.model('setting');
  46. parent.init();
  47. }
  48. /**
  49. * 获取设置信息
  50. *
  51. * @param {String} userId
  52. * @param {Number} type
  53. * @return {Promise}
  54. */
  55. async getSetting(userId, type) {
  56. let condition = {
  57. user_id: userId,
  58. type: type
  59. };
  60. let settingData = await this.findDataByCondition(condition);
  61. return settingData !== null && Object.keys(settingData).length > 0 ?
  62. settingData.data : {};
  63. }
  64. /**
  65. * 保存设置
  66. *
  67. * @param {String} userId
  68. * @param {Number} type
  69. * @param {Object} data
  70. * @return {Promise}
  71. */
  72. async save(userId, type, data) {
  73. let result = false;
  74. if (typeof data === 'string' && data === '') {
  75. return result;
  76. }
  77. if (typeof data === 'object' && Object.keys(data).length <= 0) {
  78. return result;
  79. }
  80. // 查找是否有对应数据
  81. let condition = {
  82. user_id: userId,
  83. type: type
  84. };
  85. let counter = await this.db.count(condition);
  86. let saveData = {};
  87. if (counter > 0) {
  88. // 存在则更新
  89. saveData = {
  90. data: data
  91. };
  92. this.setScene('add');
  93. let updateResult = await this.db.update(condition, saveData);
  94. result = updateResult.ok === 1;
  95. } else {
  96. saveData = {
  97. user_id: userId,
  98. type: type,
  99. data: data,
  100. create_time: new Date().getTime()
  101. };
  102. this.setScene('update');
  103. let insertResult = await this.db.create(saveData);
  104. result = Object.keys(insertResult).length > 0;
  105. }
  106. return result;
  107. }
  108. /**
  109. * 获取个人偏好设置
  110. *
  111. * @param {String} userId
  112. * @return {Promise}
  113. */
  114. async getPreferenceSetting(userId) {
  115. let setting = await this.getSetting(userId, SettingType.PREFERENCE);
  116. setting = Object.keys(setting).length <= 0 ? this.preferenceDefault : setting;
  117. return setting;
  118. }
  119. }
  120. export default SettingModel;