page.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. 'use strict';
  2. const Service = require('egg').Service;
  3. const assert = require('assert');
  4. const moment = require('moment');
  5. class PageService extends Service {
  6. async create({ title, shortTitle, slug, annex, content, istop, menu }) {
  7. assert(title, '标题不存在');
  8. assert(shortTitle, '短标题不存在');
  9. assert(slug, '摘要不存在');
  10. assert(content, '内容不存在');
  11. assert(content, '内容不存在');
  12. const { Page: model } = this.ctx.model;
  13. const createAt = moment().format('x');
  14. try {
  15. await model.create({ title, shortTitle, slug, annex, content, istop, menu, createAt });
  16. return { errmsg: '', errcode: 0 };
  17. } catch (error) {
  18. throw new Error({ errcode: -2001, errmsg: '添加失败' });
  19. }
  20. }
  21. async update({ title, shortTitle, slug, annex, content, istop, menu, _id }) {
  22. assert(_id, 'id不存在');
  23. const { Page: model } = this.ctx.model;
  24. try {
  25. await model.findById(_id).update({ title, shortTitle, slug, annex, content, istop, menu });
  26. return { errmsg: '', errcode: 0 };
  27. } catch (error) {
  28. throw new Error({ errcode: -2001, errmsg: '修改失败' });
  29. }
  30. }
  31. async del({ id }) {
  32. assert(id, 'id不存在');
  33. const { Page: model } = this.ctx.model;
  34. try {
  35. await model.findById(id).remove();
  36. return { errmsg: '', errcode: 0 };
  37. } catch (error) {
  38. throw new Error({ errcode: -2001, errmsg: '删除失败' });
  39. }
  40. }
  41. async details({ id }) {
  42. assert(id, 'id不存在');
  43. const { Page: model } = this.ctx.model;
  44. try {
  45. const res = await model.findById(id);
  46. return { errmsg: '', errcode: 0, data: res };
  47. } catch (error) {
  48. throw new Error({ errcode: -2001, errmsg: '删除失败' });
  49. }
  50. }
  51. async query({ skip, limit, title }) {
  52. const { Page: model } = this.ctx.model;
  53. const filter = {};
  54. if (title) filter.title = title;
  55. try {
  56. const total = await model.find();
  57. let res;
  58. if (skip && limit) {
  59. res = await model.find({ ...filter }, { content: false }).skip(Number(skip) * Number(limit)).limit(Number(limit));
  60. } else {
  61. res = await model.find({ ...filter }, { content: false });
  62. }
  63. return { errmsg: '', errcode: 0, data: res, total: total.length };
  64. } catch (error) {
  65. throw new Error({ errcode: -2001, errmsg: '查询失败' });
  66. }
  67. }
  68. }
  69. module.exports = PageService;