'use strict'; const Service = require('egg').Service; const assert = require('assert'); const moment = require('moment'); // const _ = require('lodash'); class ColumnService extends Service { async create({ name, code, menuList }) { assert(name, '名称不存在'); assert(code, '编码不存在'); const { Column: model } = this.ctx.model; const createAt = moment().format('x'); try { await model.create({ name, code, menuList, createAt }); return { errmsg: '', errcode: 0 }; } catch (error) { throw new Error({ errcode: -2001, errmsg: '添加失败' }); } } async update({ name, code, _id, menuList }) { assert(_id, 'id不存在'); const { Column: model } = this.ctx.model; try { await model.findById(_id).update({ name, code, menuList }); return { errmsg: '', errcode: 0 }; } catch (error) { throw new Error({ errcode: -2001, errmsg: '修改失败' }); } } async del({ id }) { assert(id, 'id不存在'); const { Column: model } = this.ctx.model; const { Content: Contentmodel } = this.ctx.model; try { // 当前数据 const res = await model.findById(id); // 复杂查询文章数据 const contentList = await Contentmodel.where('columnList').in(res.code); contentList.filter(async p => { const columnList = p.columnList.filter(e => e !== res.code); await Contentmodel.findByIdAndUpdate(p._id, { columnList }); }); await model.findByIdAndDelete(id); return { errmsg: '', errcode: 0 }; } catch (error) { throw new Error({ errcode: -2001, errmsg: '删除失败' }); } } async menuquery({ code }) { const { Column: model } = this.ctx.model; try { const res = await model.where('menuList').in(code); return { errmsg: '', errcode: 0, data: res }; } catch (error) { throw new Error({ errcode: -2001, errmsg: '查询失败' }); } } async usercolumnquery() { const { Column: model } = this.ctx.model; const { AdminUser: Usermodel } = this.ctx.model; try { const str = this.ctx.request.header.authorization; const token = str.substring(7); const decode = this.ctx.app.jwt.verify(token, this.app.config.jwt.secret); const columnList = []; const res = await Usermodel.find({ acct: decode.acct }); if (res.length > 0) { const usercolumnList = res[0].columnList; if (usercolumnList.length > 0) { for (let i = 0; i < usercolumnList.length; i++) { const item = await model.find({ code: usercolumnList[i] }); columnList.push(item[0]); } } } return { errmsg: '', errcode: 0, data: columnList }; } catch (error) { throw new Error({ errcode: -2001, errmsg: '查询失败' }); } } async query({ skip, limit, name, code }) { const { Column: model } = this.ctx.model; const filter = {}; if (name) filter.name = name; if (code) filter.code = code; try { let res; const total = await model.find(); if (skip && limit) { res = await model.find({ ...filter }).skip(Number(skip) * Number(limit)).limit(Number(limit)); } else { res = await model.find({ ...filter }); } return { errmsg: '', errcode: 0, data: res, total: total.length }; } catch (error) { console.log(error, 111); throw new Error({ errcode: -2001, errmsg: '查询失败' }); } } } module.exports = ColumnService;