page.js 3.0 KB

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