12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- 'use strict';
- const Service = require('egg').Service;
- const assert = require('assert');
- const moment = require('moment');
- // const crypto = require('crypto');
- const sm3 = require('sm3');
- const uuid = require('uuid');
- class adminUserService extends Service {
- async create({ acct, password, userName, phone, state, roleList }) {
- assert(acct, '帐号不存在');
- assert(password, '密码不存在');
- assert(userName, '用户名不存在');
- assert(state, '状态不存在');
- const { AdminUser: model } = this.ctx.model;
- const user = await model.find({ acct });
- if (user.length > 0) return { errmsg: '帐号已存在', errcode: -2001 };
- const createAt = moment().format('x');
- // 生成uuid盐值
- const salt = uuid.v1();
- // sm3 加盐加密
- password = sm3(`${password}:${salt}`);
- try {
- const res = await model.create({ acct, password, userName, phone, createAt, state, roleList, salt });
- return { errmsg: '', errcode: 0, res };
- } catch (error) {
- console.log(error);
- throw new Error('添加失败');
- }
- }
- async update({ userName, phone, _id, roleList, state, password }) {
- assert(_id, 'id不存在');
- const { AdminUser: model } = this.ctx.model;
- const user = await model.findOne({ _id });
- try {
- if (password) {
- // sm3 使用数据库存储的盐值 加密
- password = sm3(`${password}:${user.salt}`);
- }
- await model.findById(_id).update({ userName, phone, roleList, state, password });
- return { errmsg: '', errcode: 0 };
- } catch (error) {
- console.log(error);
- throw new Error('修改失败');
- }
- }
- async pwdUpdate({ acct, password, userName, confirmPwd }) {
- assert(acct, '账号不存在');
- const { AdminUser: model } = this.ctx.model;
- const user = await model.findOne({ acct });
- if (!user) return { errcode: -1001, errmsg: '用户不存在', data: '' };
- const cpwd = sm3(`${confirmPwd}:${user.salt}`);
- if (user.password !== cpwd) return { errcode: -1001, errmsg: '原密码不正确', data: '' };
- try {
- const res = await model.findOne({ userName });
- if (res.password !== cpwd) {
- return { errmsg: '原密码错误', errcode: -2003 };
- }
- password = sm3(`${password}:${user.salt}`);
- await model.findByIdAndUpdate(res._id, { password });
- return { errmsg: '', errcode: 0 };
- } catch (error) {
- throw new Error('修改失败');
- }
- }
- async del({ id }) {
- assert(id, 'id不存在');
- const { AdminUser: model } = this.ctx.model;
- try {
- await model.remove({ _id: id });
- return { errmsg: '', errcode: 0 };
- } catch (error) {
- throw new Error('删除失败');
- }
- }
- async query({ skip, limit, userName, state, acct }) {
- const { AdminUser: model } = this.ctx.model;
- const filter = {};
- if (userName) filter.userName = userName;
- if (state) filter.state = state;
- if (acct) filter.acct = acct;
- try {
- let res;
- const total = await model.find({ ...filter });
- if (skip && limit) {
- res = await model.find({ ...filter }, { password: false, salt: false }).skip(Number(skip) * Number(limit)).limit(Number(limit));
- } else {
- res = await model.find({ ...filter }, { password: false, salt: false });
- }
- return { errmsg: '', errcode: 0, data: res, total: total.length };
- } catch (error) {
- throw new Error('查询失败');
- }
- }
- }
- module.exports = adminUserService;
|