chat.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. 'use strict';
  2. const assert = require('assert');
  3. const _ = require('lodash');
  4. const { ObjectId } = require('mongoose').Types;
  5. const moment = require('moment');
  6. const { CrudService } = require('naf-framework-mongoose/lib/service');
  7. const { BusinessError, ErrorCode } = require('naf-core').Error;
  8. class ChatService extends CrudService {
  9. constructor(ctx) {
  10. super(ctx, 'chat');
  11. this.model = this.ctx.model.Chat;
  12. }
  13. async create(data) {
  14. const { sendid, content, roomid } = data;
  15. assert(sendid, '缺少发言人信息');
  16. assert(roomid, '缺少房间信息');
  17. assert(content, '缺少发言内容');
  18. data.sendtime = moment().format('YYYY-MM-DD HH:mm:ss');
  19. const res = await this.model.create(data);
  20. // TODO MQ
  21. const { mq } = this.ctx;
  22. if (mq) {
  23. const exchange = 'public_chat_' + roomid;
  24. const parm = {
  25. durable: true,
  26. headers: {
  27. userid: sendid,
  28. } };
  29. await mq.fanout(exchange, roomid, JSON.stringify(res), parm);
  30. }
  31. return res;
  32. }
  33. }
  34. module.exports = ChatService;