base_controller.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /**
  2. * 控制器基类
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/6/29
  6. * @version
  7. */
  8. const Moment = require('moment');
  9. const Url = require('url');
  10. const UserMessageModel = require('../../users/models/user_message_model');
  11. class BaseController {
  12. /**
  13. * 页面title
  14. *
  15. * @var string
  16. */
  17. title = '';
  18. /**
  19. * 初始化函数
  20. *
  21. * @param {object} request
  22. * @param {object} response
  23. * @param {function} next
  24. * @return {void}
  25. */
  26. async init(request, response, next) {
  27. // 获取当前控制器和动作名称
  28. let urlInfo = Url.parse(request.originalUrl, true);
  29. let url = urlInfo.pathname.substr(1);
  30. let actionInfo = url.split('/');
  31. let controller = 'index';
  32. let action = 'index';
  33. switch (actionInfo.length) {
  34. case 1:
  35. controller = actionInfo[0];
  36. break;
  37. case 2:
  38. controller = actionInfo[0];
  39. action = actionInfo[1];
  40. break;
  41. default:
  42. controller = actionInfo[0];
  43. break;
  44. }
  45. response.locals.controller = controller;
  46. response.locals.action = action;
  47. // moment工具
  48. response.locals.moment = Moment;
  49. // url相关数据
  50. response.locals.urlQuery = JSON.stringify(urlInfo.query);
  51. // 获取当前用户数据
  52. let sessionUser = request.session.sessionUser;
  53. // 获取当前用户消息数量
  54. let userMessageModel = new UserMessageModel();
  55. // 消息处理
  56. await userMessageModel.initMessage(sessionUser.id);
  57. // 获取未读数据
  58. let messageUnreadCount = await userMessageModel.count({user_id: sessionUser.id, is_read: 0, is_delete: 0});
  59. response.locals.unreadCount = messageUnreadCount;
  60. next();
  61. }
  62. }
  63. module.exports = BaseController;