base_controller.js 1.9 KB

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