page.js 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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, annex, content, istop, menu, annexname, date }) {
  7. assert(title, '标题不存在');
  8. assert(content, '内容不存在');
  9. assert(content, '内容不存在');
  10. const { Page: model } = this.ctx.model;
  11. const createAt = moment().format('x');
  12. try {
  13. let text = content.replace(new RegExp('</?[^>]+>', 'gm'), '');
  14. text = text.replace('\\s*|\t|\r|\n', '');
  15. const slug = text.substring(0, 200);
  16. const menus = await model.find(menu);
  17. if (menus.length > 0) return { errmsg: '不能重复绑定菜单', errcode: -2001 };
  18. await model.create({ title, slug, date, annex, content, istop, menu, createAt, annexname });
  19. return { errmsg: '', errcode: 0 };
  20. } catch (error) {
  21. throw new Error({ errcode: -2001, errmsg: '添加失败' });
  22. }
  23. }
  24. async update({ title, annex, content, istop, menu, _id, annexname, date }) {
  25. assert(_id, 'id不存在');
  26. const { Page: model } = this.ctx.model;
  27. try {
  28. let text = content.replace(new RegExp('</?[^>]+>', 'gm'), '');
  29. text = text.replace('\\s*|\t|\r|\n', '');
  30. const slug = text.substring(0, 200);
  31. const menus = await model.find(menu);
  32. if (menus.length > 0 && menus[0]._id !== _id) return { errmsg: '不能重复绑定菜单', errcode: -2001 };
  33. await model.findById(_id).update({ title, date, slug, annex, content, istop, menu, annexname });
  34. return { errmsg: '', errcode: 0 };
  35. } catch (error) {
  36. throw new Error({ errcode: -2001, errmsg: '修改失败' });
  37. }
  38. }
  39. async del({ id }) {
  40. assert(id, 'id不存在');
  41. const { Page: model } = this.ctx.model;
  42. try {
  43. await model.findById(id).remove();
  44. return { errmsg: '', errcode: 0 };
  45. } catch (error) {
  46. throw new Error({ errcode: -2001, errmsg: '删除失败' });
  47. }
  48. }
  49. async details({ id }) {
  50. assert(id, 'id不存在');
  51. const { Page: model } = this.ctx.model;
  52. try {
  53. const res = await model.findById(id);
  54. return { errmsg: '', errcode: 0, data: res };
  55. } catch (error) {
  56. throw new Error({ errcode: -2001, errmsg: '删除失败' });
  57. }
  58. }
  59. async detailscode({ code }) {
  60. assert(code, 'code不存在');
  61. const { Page: model } = this.ctx.model;
  62. try {
  63. const res = await model.find({ menu: code });
  64. return { errmsg: '', errcode: 0, data: res };
  65. } catch (error) {
  66. throw new Error({ errcode: -2001, errmsg: '删除失败' });
  67. }
  68. }
  69. async query({ skip, limit, title }) {
  70. const { Page: model } = this.ctx.model;
  71. const filter = {};
  72. if (title) filter.title = title;
  73. try {
  74. const total = await model.find();
  75. let res;
  76. if (skip && limit) {
  77. res = await model.find({ ...filter }, { content: false }).skip(Number(skip) * Number(limit)).limit(Number(limit));
  78. } else {
  79. res = await model.find({ ...filter }, { content: false });
  80. }
  81. return { errmsg: '', errcode: 0, data: res, total: total.length };
  82. } catch (error) {
  83. throw new Error({ errcode: -2001, errmsg: '查询失败' });
  84. }
  85. }
  86. }
  87. module.exports = PageService;