'use strict'; const assert = require('assert'); const _ = require('lodash'); const { ObjectId } = require('mongoose').Types; const { CrudService } = require('naf-framework-mongoose/lib/service'); const { BusinessError, ErrorCode } = require('naf-core').Error; class RoomuserService extends CrudService { constructor(ctx) { super(ctx, 'room_user'); this.model = this.ctx.model.Roomuser; this.umodel = this.ctx.model.User; } async create(data) { const { name, passwd } = data; assert(name, '用户名不能为空'); assert(passwd, '密码不能为空'); const { phone } = data; const has_phone = await this.model.findOne({ phone }); if (has_phone) { throw new BusinessError('此手机号已被注册,请更换手机号'); } const res = await this.model.create(data); if (res) { const newdata = { name, phone: data.phone, passwd, uid: res.id, role: data.role, hosname: data.hosname, deptname: data.deptname, remark: data.remark, }; await this.ctx.service.user.create(newdata); } return res; } async update({ id }, data) { const user = await this.model.findById(id); const { phone } = data; const phoneList = await this.model.find({ phone }); const is_has = phoneList.find(f => f.id !== id); if (is_has) throw new BusinessError('此手机号已被注册,请更换手机号'); if (data.name) { user.name = data.name; } if (data.role) { user.role = data.role; } if (data.hosname) { user.hosname = data.hosname; } if (data.deptname) { user.deptname = data.deptname; } if (data.level) { user.level = data.level; } if (data.title) { user.title = data.title; } if (data.remark) { user.remark = data.remark; } if (data.openid) { user.openid = data.openid; } const res = await user.save(); if (res) { const uu = await this.umodel.findOne({ uid: user.id }); uu.name = data.name; uu.deptname = data.deptname; await uu.save(); } return res; } async register(data) { const { name, phone, openid } = data; assert(name, '用户名不能为空'); assert(phone, '电话号码不能为空'); const has_phone = await this.model.findOne({ phone }); if (has_phone) { throw new BusinessError('此手机号已被注册,请更换手机号'); } const res = await this.model.create(data); if (res) { const newdata = { name, phone: data.phone, passwd: '12345678', uid: res.id, role: data.role, openid, hosname: data.hosname, deptname: data.deptname, remark: data.remark, }; await this.ctx.service.user.create(newdata); } return res; } } module.exports = RoomuserService;