banner.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. 'use strict';
  2. const Service = require('egg').Service;
  3. const assert = require('assert');
  4. const moment = require('moment');
  5. class BannerService extends Service {
  6. async create({ title, path, annex, content, annexname, date }) {
  7. assert(title, '标题不存在');
  8. assert(path, '轮播图不存在');
  9. assert(content, '内容不存在');
  10. const { Banner: 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, date, slug, path, annex, content, createAt, annexname });
  17. return { errmsg: '', errcode: 0 };
  18. } catch (error) {
  19. console.log(error);
  20. throw new Error({ errcode: -2001, errmsg: '添加失败' });
  21. }
  22. }
  23. async update({ title, path, annex, content, date, _id, annexname }) {
  24. assert(_id, 'id不存在');
  25. const { Banner: model } = this.ctx.model;
  26. try {
  27. let text = content.replace(new RegExp('</?[^>]+>', 'gm'), '');
  28. text = text.replace('\\s*|\t|\r|\n', '');
  29. const slug = text.substring(0, 200);
  30. await model.findById(_id).update({ title, slug, path, annex, date, content, annexname });
  31. return { errmsg: '', errcode: 0 };
  32. } catch (error) {
  33. throw new Error({ errcode: -2001, errmsg: '修改失败' });
  34. }
  35. }
  36. async del({ id }) {
  37. assert(id, 'id不存在');
  38. const { Banner: model } = this.ctx.model;
  39. try {
  40. await model.findById(id).remove();
  41. return { errmsg: '', errcode: 0 };
  42. } catch (error) {
  43. throw new Error({ errcode: -2001, errmsg: '删除失败' });
  44. }
  45. }
  46. async details({ id }) {
  47. assert(id, 'id不存在');
  48. const { Banner: model } = this.ctx.model;
  49. try {
  50. const res = await model.findById(id);
  51. return { errmsg: '', errcode: 0, data: res };
  52. } catch (error) {
  53. throw new Error({ errcode: -2001, errmsg: '查询失败' });
  54. }
  55. }
  56. async query({ skip, limit, title }) {
  57. const { Banner: model } = this.ctx.model;
  58. const filter = {};
  59. if (title) filter.title = title;
  60. const total = await model.find({ ...filter });
  61. try {
  62. let res;
  63. if (skip && limit) {
  64. res = await model.find({ ...filter }, { content: false }).skip(Number(skip) * Number(limit)).limit(Number(limit));
  65. } else {
  66. res = await model.find({ ...filter }, { content: false });
  67. }
  68. return { errmsg: '', errcode: 0, data: res, total: total.length };
  69. } catch (error) {
  70. throw new Error('查询失败');
  71. }
  72. }
  73. }
  74. module.exports = BannerService;