catalogue.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. 'use strict';
  2. const assert = require('assert');
  3. const Service = require('egg').Service;
  4. class CatalogueService extends Service {
  5. constructor(ctx) {
  6. super(ctx);
  7. this.model = this.ctx.model.Catalogue;
  8. }
  9. async create({ content, name, describe, status, url, date, column, bind, filename, thumbnail }) {
  10. assert(name, '名称不存在');
  11. assert(date, '发布时间不存在');
  12. assert(status, '状态不存在');
  13. assert(bind, '绑定ID不存在');
  14. try {
  15. const res = await this.model.create({ content, name, describe, status, url, date, column, bind, filename, thumbnail });
  16. return { errcode: 0, errmsg: 'ok', data: res };
  17. } catch (error) {
  18. throw error;
  19. }
  20. }
  21. async update({ id, content, name, describe, status, url, date, column, bind, filename, thumbnail }) {
  22. assert(id, 'id不存在');
  23. try {
  24. await this.model.updateOne({ _id: id }, { content, name, describe, status, url, date, column, bind, filename, thumbnail });
  25. return { errcode: 0, errmsg: 'ok', data: '' };
  26. } catch (error) {
  27. throw error;
  28. }
  29. }
  30. async delete({ id }) {
  31. assert(id, 'id不存在');
  32. try {
  33. console.log(this.model);
  34. await this.model.deleteOne({ _id: id });
  35. return { errcode: 0, errmsg: 'ok', data: '' };
  36. } catch (error) {
  37. throw error;
  38. }
  39. }
  40. async query({ skip, limit, name, status, date, column, bind }) {
  41. const filter = {};
  42. const arr = { name, status, date, column, bind };
  43. for (const e in arr) {
  44. let datas;
  45. if (e === 'bind') {
  46. console.log(arr[e]);
  47. datas = `{ "${e}": { "$elemMatch": { "$eq": "${arr[e]}" } } }`;
  48. } else {
  49. datas = `{ "${e}": { "$regex": "${arr[e]}" } }`;
  50. }
  51. if (arr[e]) {
  52. filter.$or = [];
  53. filter.$or.push(JSON.parse(datas));
  54. }
  55. }
  56. try {
  57. const total = await this.model.find({ ...filter });
  58. let res;
  59. if (skip && limit) {
  60. res = await this.model.find({ ...filter }, { content: false }).skip(Number(skip) * Number(limit)).limit(Number(limit))
  61. .sort({ date: 1 });
  62. } else {
  63. res = await this.model.find({ ...filter }, { content: false }).sort({ date: 1 });
  64. }
  65. return { errcode: 0, errmsg: 'ok', data: res, total: total.length };
  66. } catch (error) {
  67. throw error;
  68. }
  69. }
  70. async fetch({ id }) {
  71. assert(id, 'id不存在');
  72. try {
  73. const res = await this.model.findOne({ _id: id });
  74. return { errcode: 0, errmsg: 'ok', data: res };
  75. } catch (error) {
  76. throw error;
  77. }
  78. }
  79. }
  80. module.exports = CatalogueService;