|
@@ -5,7 +5,6 @@ const { ObjectId } = require('mongoose').Types;
|
|
|
const _ = require('lodash');
|
|
|
const jwt = require('jsonwebtoken');
|
|
|
|
|
|
-
|
|
|
// 管理员
|
|
|
class AdminService extends CrudService {
|
|
|
constructor(ctx) {
|
|
@@ -20,8 +19,8 @@ class AdminService extends CrudService {
|
|
|
let data = await this.model.find(query).skip(parseInt(skip)).limit(parseInt(limit));
|
|
|
if (data.length > 0) data = JSON.parse(JSON.stringify(data));
|
|
|
const menus = await this.ctx.model.Menu.find();
|
|
|
- data = data.map(i => {
|
|
|
- const um = menus.filter(f => i.menus.find(mf => ObjectId(mf).equals(f._id)));
|
|
|
+ data = data.map((i) => {
|
|
|
+ const um = menus.filter((f) => i.menus.find((mf) => ObjectId(mf).equals(f._id)));
|
|
|
i.menus = um;
|
|
|
return i;
|
|
|
});
|
|
@@ -32,7 +31,7 @@ class AdminService extends CrudService {
|
|
|
let object = await this.model.findById(id);
|
|
|
if (!object) throw new BusinessError(ErrorCode.DATA_NOT_EXIST, '未找到用户的信息');
|
|
|
object = JSON.parse(JSON.stringify(object));
|
|
|
- const menus = await this.ctx.model.Menu.find({ _id: object.menus.map(i => ObjectId(i)) }).sort({ sort: 1 });
|
|
|
+ const menus = await this.ctx.model.Menu.find({ _id: object.menus.map((i) => ObjectId(i)) }).sort({ sort: 1 });
|
|
|
object.menus = menus;
|
|
|
return object;
|
|
|
}
|
|
@@ -55,13 +54,21 @@ class AdminService extends CrudService {
|
|
|
throw new BusinessError(ErrorCode.DATA_NOT_EXIST, '未找到上级的信息');
|
|
|
}
|
|
|
const res = await this.model.create(data);
|
|
|
- // const icdata = { user_id: res._id, code, user_name: res.name };
|
|
|
- // try {
|
|
|
- // const res = await this.inviteCode.create(icdata);
|
|
|
- // } catch (error) {
|
|
|
- // await this.model.deleteOne({ _id: res._id });
|
|
|
- // throw new BusinessError(ErrorCode.DATABASE_FAULT, '该邀请码已被使用,请重新更换邀请码');
|
|
|
- // }
|
|
|
+ const icdata = { user_id: res._id, code, user_name: res.name };
|
|
|
+ try {
|
|
|
+ const res = await this.inviteCode.create(icdata);
|
|
|
+ } catch (error) {
|
|
|
+ await this.model.deleteOne({ _id: res._id });
|
|
|
+ throw new BusinessError(ErrorCode.DATABASE_FAULT, '该邀请码已被使用,请重新更换邀请码');
|
|
|
+ }
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+ async delete({ id }) {
|
|
|
+ const data = await this.model.findOne({ _id: ObjectId(id) });
|
|
|
+ if (!data) throw new BusinessError(ErrorCode.DATA_NOT_EXIST, '未找到数据');
|
|
|
+ const { code } = data;
|
|
|
+ const res = await this.model.deleteOne({ _id: ObjectId(id) });
|
|
|
+ await this.inviteCode.deleteOne({ code });
|
|
|
return res;
|
|
|
}
|
|
|
/**
|
|
@@ -86,14 +93,13 @@ class AdminService extends CrudService {
|
|
|
const { passwd: op } = object;
|
|
|
const { secret } = op;
|
|
|
if (secret !== passwd) throw new BusinessError(ErrorCode.BAD_PASSWORD, '密码错误');
|
|
|
- const data = _.omit(JSON.parse(JSON.stringify(object)), [ 'meta', 'passwd', '__v' ]);
|
|
|
+ const data = _.omit(JSON.parse(JSON.stringify(object)), ['meta', 'passwd', '__v']);
|
|
|
const { secret: secrets } = this.config.jwt;
|
|
|
- const menus = await this.ctx.model.Menu.find({ _id: object.menus.map(i => ObjectId(i)) }).sort({ sort: 1 });
|
|
|
+ const menus = await this.ctx.model.Menu.find({ _id: object.menus.map((i) => ObjectId(i)) }).sort({ sort: 1 });
|
|
|
data.menus = menus;
|
|
|
const token = jwt.sign(data, secrets);
|
|
|
return token;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
module.exports = AdminService;
|