chat.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  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. const moment = require('moment');
  8. class ChatService extends CrudService {
  9. constructor(ctx) {
  10. super(ctx, 'chat');
  11. this.model = this.ctx.model.Chat;
  12. }
  13. async create(query, { sender_id, sender_name, content, role }) {
  14. assert(sender_name, '缺少发言人信息');
  15. assert(content, '缺少发言内容');
  16. const send_time = moment().format('YYYY-MM-DD HH:mm:ss');
  17. const res = await this.model.create({ sender_id, sender_name, content, send_time, role });
  18. // TODO MQ
  19. const { mq } = this.ctx;
  20. if (mq) {
  21. const exchange = 'public_chat';
  22. const parm = {
  23. durable: true,
  24. headers: {
  25. userid: 1,
  26. } };
  27. await mq.fanout(exchange, '1', JSON.stringify(res), parm);
  28. }
  29. return res;
  30. }
  31. }
  32. module.exports = ChatService;