dock_vip.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. 'use strict';
  2. const { CrudService } = require('naf-framework-mongoose/lib/service');
  3. const { BusinessError, ErrorCode } = require('naf-core').Error;
  4. const _ = require('lodash');
  5. const assert = require('assert');
  6. const jwt = require('jsonwebtoken');
  7. // 展会vip
  8. class Dock_vipService extends CrudService {
  9. constructor(ctx) {
  10. super(ctx, 'dock_vip');
  11. this.model = this.ctx.model.Dock.DockVip;
  12. this.dock = this.ctx.model.Dock.Dock;
  13. }
  14. async create(data) {
  15. const { dock_id } = data;
  16. const dock = await this.dock.findById(dock_id);
  17. if (!dock) new BusinessError(ErrorCode.DATA_NOT_EXIST, '未找到指定展会!');
  18. const { room_id } = dock;
  19. data.password = { secret: room_id };
  20. return await this.model.create(data);
  21. }
  22. /**
  23. * 展会管理者登陆
  24. * @param {Object} { dock_id } 展会id
  25. * @param {Object} { phone, password } 登陆参数
  26. * @property {String} phone 电话
  27. * @property {String} password 密码
  28. */
  29. async login({ dock_id }, { phone, password }) {
  30. const object = await this.model.findOne({ phone, dock_id }, '+password');
  31. if (!object) throw new BusinessError(ErrorCode.DATA_NOT_EXIST, '未找到vip用户');
  32. const op = _.get(object, 'password.secret');
  33. if (!_.isEqual(op, password)) throw new BusinessError(ErrorCode.BAD_PASSWORD, '密码错误');
  34. const data = _.omit(JSON.parse(JSON.stringify(object)), [ 'meta', 'password', '__v' ]);
  35. const { secret: jwts } = this.config.jwt;
  36. const token = jwt.sign(data, jwts);
  37. return token;
  38. }
  39. }
  40. module.exports = Dock_vipService;