// 删除文章 async delete() { const { ctx } = this; const id = ctx.query.id; await ctx.service.article.deleteOne(id); ctx.body = { msg: '删除成功', }; ctx.status = 200; }
// 博客页面渲染 async blog() { const { ctx } = this; const resourceData = {}; const articles = await ctx.service.article.findAll(0, 0); resourceData.articles = articles.rows; resourceData.config = ctx.app.config.renderData; await ctx.render('page/tean/blog.tpl', { resourceData }); }
// 文章管理页面渲染 async manage() { const { ctx } = this; const page = Number(ctx.params.page); const size = 10; // 默认 const resourceData = await ctx.service.article.findAll(page, size); resourceData.current = page; resourceData.config = ctx.app.config.renderData; await ctx.render('page/admin/manage.tpl', { resourceData }); }
async del(ctx) { const { id } = ctx.params; ctx.body = this.service.article.deleteArticle(id); }
// 保存内容 async save() { const { ctx, service } = this; const response = await service.article.save('article', subObj(['id', 'title', 'abstract', 'cate', 'content', 'tags', 'isAcceptReward', 'status'], ctx.request.body)); ctx.body = response; ctx.status = 200; }
// 文章页 async article() { const { ctx } = this; const id = ctx.params.id; const resourceData = await ctx.service.article.findById(id); resourceData.content = ctx.helper.md2html(resourceData.content); resourceData.created_at_beauty = ctx.helper.beautyTime(resourceData.created_at_beauty); resourceData.updated_at_beauty = ctx.helper.beautyTime(resourceData.updated_at_beauty); resourceData.config = ctx.app.config.renderData; await ctx.render('page/tean/article.tpl', { resourceData }); }
// 添加文章 async add() { const { ctx } = this; const model = ctx.request.body; const rule = { title: { type: 'string', min: 1, }, content: { type: 'string', min: 1, }, }; ctx.validate(rule); await ctx.service.article.insertOne(model); ctx.body = { msg: '新增成功', }; ctx.status = 201; }
// 获取内容列表,分页,每页几个 async list() { const { ctx, service } = this; let data = {}; if (ctx.query.tid) { data = await service.article.teamList('article', ctx.query); } else { data = await service.article.list('article', subObj(['title', 'pageNo', 'pageSize', 'uid', 'tid', 'from', 'to', 'cate', 'tag', 'status'], ctx.query)); } ctx.body = { success: true, msg: '', code: '', data, }; ctx.status = 200; }
// JSON Feed async feed() { const { ctx } = this; const articles = await ctx.service.article.findAll(1, 5); ctx.body = ctx.helper.generationFeed(articles.rows); }
// 撰写编辑页面渲染 async article() { const { ctx } = this; const id = ctx.params.id; let resourceData = {}; if (id) { resourceData = await ctx.service.article.findById(id); } resourceData.config = ctx.app.config.renderData; await ctx.render('page/admin/article.tpl', { resourceData }); }
// 根据ID获取内容信息 async detail() { const { ctx, service } = this; // 调用 service 获取数据 const data = {}; data.article = await service.article.detail('article', subObj(['id'], ctx.query)); if (data.article && data.status !== 2) { // 如果有查到文章(可能id错误或文章被删了) data.comments = await service.comment.query(subObj(['id'], ctx.query)); ctx.body = { success: true, msg: '', code: '', data, }; } else { ctx.body = { success: false, msg: '文章不存在', code: 'article not exist', data: null, }; } ctx.status = 200; }
// 更新文章 async update() { const { ctx } = this; const id = ctx.query.id; const model = ctx.request.body; const rule = { title: { type: 'string', min: 1, required: false, }, content: { type: 'string', min: 1, required: false, }, }; ctx.validate(rule); await ctx.service.article.updateOne(id, model); ctx.body = { msg: '更新成功', }; ctx.status = 201; }
// 删除内容信息 async remove() { const { ctx, service } = this; const response = await service.article.remove('article', subObj(['id'], ctx.request.body)); ctx.body = response; ctx.status = 200; }
// 主页面渲染 async home() { const { ctx } = this; const resourceData = {}; const articles = await ctx.service.article.findAll(1, 5); resourceData.articles = articles.rows; resourceData.config = ctx.app.config.renderData; await ctx.render('page/tean/home.tpl', { resourceData }); }