'use strict'; const Service = require('egg').Service; const assert = require('assert'); const moment = require('moment'); class RoleService extends Service { async create({ name, code, state }) { assert(name, '名称不存在'); assert(code, '编码不存在'); const { Role: model } = this.ctx.model; const createAt = moment().format('x'); try { await model.create({ name, code, createAt, state }); return { errmsg: '', errcode: 0 }; } catch (error) { throw new Error({ errcode: -2001, errmsg: '添加失败' }); } } async update({ name, state, id }) { assert(id, 'id不存在'); const { Role: model } = this.ctx.model; try { await model.findByIdAndUpdate(id, { name, state }); return { errmsg: '', errcode: 0 }; } catch (error) { throw new Error({ errcode: -2001, errmsg: '修改失败' }); } } async del({ id }) { assert(id, 'id不存在'); const { Role: model } = this.ctx.model; const { adminUser: usermodel } = this.ctx.model; try { const role = await model.findById(id); const userList = await usermodel.where('roleLise').in(role.code); await model.findOneAndDelete(id); userList.forEach(async e => { const roleList = e.roleList.filter(p => p !== role.code); await usermodel.findByIdAndUpdate(e._id, { roleList }); }); return { errmsg: '', errcode: 0 }; } catch (error) { throw new Error({ errcode: -2001, errmsg: '删除失败' }); } } async query({ skip, limit, filter }) { const { Role: model } = this.ctx.model; try { let res; if (skip && limit) { res = await model.find(filter).skip(skip * limit).limit(limit); } else { res = await model.find(filter); } return { errmsg: '', errcode: 0, data: res }; } catch (error) { throw new Error({ errcode: -2001, errmsg: '查询失败' }); } } } module.exports = RoleService;