base_controller.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /**
  2. * 控制器基类
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/6/29
  6. * @version
  7. */
  8. import Moment from "moment";
  9. import Url from "url";
  10. import UserMessageModel from "../../users/models/user_message_model";
  11. class BaseController {
  12. /**
  13. * 页面title
  14. *
  15. * @var string
  16. */
  17. title = '';
  18. /**
  19. * 构造函数
  20. *
  21. * @return {void}
  22. */
  23. constructor() {
  24. if (new.target === BaseController) {
  25. throw new Error('BaseController不能实例化,只能继承使用。');
  26. }
  27. }
  28. /**
  29. * 初始化函数
  30. *
  31. * @param {object} request
  32. * @param {object} response
  33. * @param {function} next
  34. * @return {void}
  35. */
  36. async init(request, response, next) {
  37. response.locals.title = 'test';
  38. // moment工具
  39. response.locals.moment = Moment;
  40. // url相关数据
  41. let urlInfo = Url.parse(request.originalUrl, true);
  42. response.locals.urlQuery = JSON.stringify(urlInfo.query);
  43. // 获取当前用户数据
  44. let sessionUser = request.session.sessionUser;
  45. // 获取当前用户消息数量
  46. let userMessageModel = new UserMessageModel();
  47. // 消息处理
  48. await userMessageModel.initMessage(sessionUser.id);
  49. // 获取未读数据
  50. let messageUnreadCount = await userMessageModel.count({user_id: sessionUser.id, is_read: 0, is_delete: 0});
  51. response.locals.unreadCount = messageUnreadCount;
  52. next();
  53. }
  54. }
  55. export default BaseController;