goods.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. 'use strict';
  2. const Schema = require('mongoose').Schema;
  3. const metaPlugin = require('naf-framework-mongoose-free/lib/model/meta-plugin');
  4. const cb_config = {
  5. back_type: { type: String, zh: '返现金额类型' }, // 固定金额/百分比
  6. money: { type: Number, zh: '具体返现金额设置' }, // 固定金额就是固定金额/ 百分比,需要与售价相乘转换为金额
  7. };
  8. // 商品信息
  9. const goods = {
  10. shop: { type: String, required: false, zh: '店铺', ref: 'Shop.Shop' }, //
  11. name: { type: String, required: false, zh: '商品名称' }, //
  12. shot_brief: { type: String, required: false, zh: '简短简介' }, // 长度在50以内
  13. send_time: { type: String, required: false, zh: '发货时间' }, //
  14. brief: { type: String, required: false, zh: '商品介绍' }, //
  15. file: { type: Array, required: false, zh: '商品图片' }, //
  16. tags: { type: Array, required: false, zh: '商品标签' }, //
  17. sell_num: { type: Number, required: false, default: 0, zh: '销售量' }, //
  18. view_num: { type: Number, required: false, default: 0, zh: '浏览量' }, //
  19. status: { type: String, required: false, default: '0', zh: '商品状态' }, // 字典:goods_status
  20. act_tags: { type: Array, required: false, zh: '活动标签' }, // 字典:act_tags
  21. sort: { type: Number, required: false, default: 0, zh: '排序' }, //
  22. source: { type: String, required: false, zh: '来源' }, //
  23. url: { type: String, required: false, zh: '网址' }, //
  24. is_cashBack: { type: String, required: false, zh: '是否返现' }, // 字典:use
  25. cb_config: { type: Object, required: false, zh: '返现设置' }, // 返现设置
  26. code: { type: String, required: false, zh: '商品编码' }, // 随机生成,8位
  27. };
  28. const schema = new Schema(goods, { toJSON: { getters: true, virtuals: true } });
  29. schema.index({ id: 1 });
  30. schema.index({ 'meta.createdAt': 1 });
  31. schema.index({ shop: 1 });
  32. schema.index({ name: 1 });
  33. schema.index({ status: 1 });
  34. schema.index({ view_num: 1 });
  35. schema.index({ act_tags: 1 });
  36. schema.index({ sort: 1 });
  37. schema.index({ is_cashBack: 1 });
  38. schema.index({ code: 1 });
  39. schema.index({ source: 1 });
  40. schema.plugin(metaPlugin);
  41. module.exports = app => {
  42. const { mongoose } = app;
  43. return mongoose.model('Goods', schema, 'goods');
  44. };