page.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. // eslint-disable-next-line eqeqeq
  33. if (menus.length > 0 && menus[0]._id != _id) return { errmsg: '不能重复绑定菜单', errcode: -2001 };
  34. await model.findById(_id).update({ title, date, slug, annex, content, istop, menu, annexname });
  35. return { errmsg: '', errcode: 0 };
  36. } catch (error) {
  37. throw new Error({ errcode: -2001, errmsg: '修改失败' });
  38. }
  39. }
  40. async del({ id }) {
  41. assert(id, 'id不存在');
  42. const { Page: model } = this.ctx.model;
  43. try {
  44. await model.findById(id).remove();
  45. return { errmsg: '', errcode: 0 };
  46. } catch (error) {
  47. throw new Error({ errcode: -2001, errmsg: '删除失败' });
  48. }
  49. }
  50. async details({ id }) {
  51. assert(id, 'id不存在');
  52. const { Page: model } = this.ctx.model;
  53. try {
  54. const res = await model.findById(id);
  55. return { errmsg: '', errcode: 0, data: res };
  56. } catch (error) {
  57. throw new Error({ errcode: -2001, errmsg: '删除失败' });
  58. }
  59. }
  60. async detailscode({ code }) {
  61. assert(code, 'code不存在');
  62. const { Page: model } = this.ctx.model;
  63. try {
  64. const res = await model.find({ menu: code });
  65. return { errmsg: '', errcode: 0, data: res };
  66. } catch (error) {
  67. throw new Error({ errcode: -2001, errmsg: '删除失败' });
  68. }
  69. }
  70. async query({ skip, limit, title }) {
  71. const { Page: model } = this.ctx.model;
  72. const filter = {};
  73. if (title) filter.title = { $regex: title };
  74. try {
  75. const total = await model.find({ ...filter });
  76. let res;
  77. if (skip && limit) {
  78. res = await model.find({ ...filter }, { content: false }).skip(Number(skip) * Number(limit)).limit(Number(limit));
  79. } else {
  80. res = await model.find({ ...filter }, { content: false });
  81. }
  82. return { errmsg: '', errcode: 0, data: res, total: total.length };
  83. } catch (error) {
  84. throw new Error({ errcode: -2001, errmsg: '查询失败' });
  85. }
  86. }
  87. }
  88. module.exports = PageService;