roomuser.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. 'use strict';
  2. const assert = require('assert');
  3. const _ = require('lodash');
  4. const { ObjectId } = require('mongoose').Types;
  5. const { CrudService } = require('naf-framework-mongoose/lib/service');
  6. const { BusinessError, ErrorCode } = require('naf-core').Error;
  7. class RoomuserService extends CrudService {
  8. constructor(ctx) {
  9. super(ctx, 'room_user');
  10. this.model = this.ctx.model.Roomuser;
  11. this.umodel = this.ctx.model.User;
  12. }
  13. async create(data) {
  14. const { name, password } = data;
  15. assert(name, '用户名不能为空');
  16. assert(password, '密码不能为空');
  17. const { phone } = data;
  18. const has_phone = await this.model.findOne({ phone });
  19. if (has_phone) {
  20. throw new BusinessError('此手机号已被注册,请更换手机号');
  21. }
  22. const newdata = data;
  23. newdata.password = { secret: password };
  24. const res = await this.model.create(newdata);
  25. if (res) {
  26. const newdata = {
  27. name,
  28. phone: data.phone,
  29. passwd: password,
  30. uid: res.id,
  31. role: data.role,
  32. deptname: data.deptname,
  33. remark: data.remark,
  34. };
  35. await this.umodel.create(newdata);
  36. }
  37. return res;
  38. }
  39. async update({ id }, data) {
  40. const user = await this.model.findById(id);
  41. const { phone } = data;
  42. const phoneList = await this.model.find({ phone });
  43. const is_has = phoneList.find(f => f.id !== id);
  44. if (is_has) throw new BusinessError('此手机号已被注册,请更换手机号');
  45. if (data.name) {
  46. user.name = data.name;
  47. }
  48. if (data.role) {
  49. user.role = data.role;
  50. }
  51. if (data.deptname) {
  52. user.deptname = data.deptname;
  53. }
  54. if (data.level) {
  55. user.level = data.level;
  56. }
  57. if (data.title) {
  58. user.title = data.title;
  59. }
  60. if (data.remark) {
  61. user.remark = data.remark;
  62. }
  63. if (data.openid) {
  64. user.openid = data.openid;
  65. }
  66. const res = await user.save();
  67. if (res) {
  68. const uu = await this.umodel.findOne({ uid: user.id });
  69. uu.name = data.name;
  70. uu.deptname = data.deptname;
  71. await this.umodel.save();
  72. }
  73. return res;
  74. }
  75. }
  76. module.exports = RoomuserService;