search.endpoint.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /**
  2. * 搜索接口。
  3. *
  4. * author: Sand
  5. * since: 12/15/2016
  6. */
  7. "use strict";
  8. let express = require('express');
  9. let router = express.Router();
  10. let ControllerUtil = require("../../util/controller.util.js");
  11. let MySqlSearcher = require('../../models/search/mysql.searcher');
  12. /**
  13. * 搜索API。
  14. *
  15. * 参数:
  16. * target: all/doctor/session/message
  17. * keyword: 关键字
  18. * page: 第几页,从1开始,当target为all时无效
  19. * size: 页大小,当target为all时无效
  20. *
  21. * URL:
  22. * /search?target=all&keyword=张&page
  23. */
  24. router.get("/", function (req, res) {
  25. ControllerUtil.checkRequestQueryParams(req, ['user_id', 'target', 'keyword']);
  26. let userId = req.query.user_id;
  27. let target = req.query.target;
  28. let keyword = req.query.keyword;
  29. let page = req.query.page;
  30. let size = req.query.size;
  31. page = page ? parseInt(page) - 1 : 0;
  32. size = size ? parseInt(size) : 10;
  33. let searcher = new MySqlSearcher();
  34. ControllerUtil.regModelEventHandler(searcher, res);
  35. if (target == 'all') {
  36. searcher.searchAll(userId, keyword);
  37. } else if (target == 'doctor') {
  38. searcher.searchDoctors(keyword, page, size)
  39. } else if (target == 'session') {
  40. searcher.searchSessions(userId, keyword, page, size);
  41. } else if (target == 'message') {
  42. searcher.searchMessages(userId, keyword, page, size);
  43. } else {
  44. throw {message: "Unknown target type: " + target};
  45. }
  46. });
  47. module.exports = router;