'use strict'; const Service = require('egg').Service; const assert = require('assert'); const moment = require('moment'); const fs = require('fs'); const fsPromises = fs.promises; class ResourceService extends Service { async create({ name, path }) { assert(name, '名称不存在'); assert(path, '路径不存在'); const { Resource: model } = this.ctx.model; const createAt = moment().format('x'); try { await model.create({ name, path, createAt }); return { errmsg: '', errcode: 0 }; } catch (error) { throw new Error({ errcode: -2001, errmsg: '添加失败' }); } } async update({ name, path, id }) { assert(id, 'id不存在'); const { Resource: model } = this.ctx.model; try { await model.findByIdAndUpdate(id, { name, path }); return { errmsg: '', errcode: 0 }; } catch (error) { throw new Error({ errcode: -2001, errmsg: '修改失败' }); } } async del({ id }) { assert(id, 'id不存在'); const { Resource: model } = this.ctx.model; try { // 获取文件路径 const files = await model.findById(id); const filepath = `${files.path}`; // 开始删除文件 await fsPromises.rmdir(filepath); await model.findOneAndDelete(id); return { errmsg: '', errcode: 0 }; } catch (error) { throw new Error({ errcode: -2001, errmsg: '删除失败' }); } } async query({ skip, limit, filter }) { const { Resource: 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 = ResourceService;