search.endpoint.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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 ObjectSearcher = require('../../models/search/object.searcher');
  12. const APIv2 = require('../../include/endpoints').APIv2;
  13. /**
  14. * 搜索。
  15. *
  16. * 参数:
  17. * user_id: 用户ID
  18. * target_role: 目标角色,patient为患者相关,doctor为医生相关
  19. * entity_type: 实体类型,user为用户,session为会话,message为消息,all为全部都搜索
  20. * keyword: 关键字
  21. * exclude_topic_ended_sessions: 排除议题已结束的会话
  22. * page: 第几页,从1开始,当target为all时无效
  23. * size: 页大小,当target为all时无效
  24. *
  25. * URL:
  26. * /search?user_id=e51ac&target_role=doctor&entity_type=all&keyword=张&exclude_topic_ended_sessions=true&page=1&size=3
  27. */
  28. router.get('/', function (req, res) {
  29. ControllerUtil.checkRequestQueryParams(req, ['user_id', 'target_role', 'entity_type', 'keyword']);
  30. let userId = req.query.user_id;
  31. let targetRole = req.query.target_role;
  32. let entityType = req.query.entity_type;
  33. let keyword = req.query.keyword;
  34. let excludeTopicEndedSessions = req.query.exclude_topic_ended_sessions === 'true';
  35. let page = req.query.page;
  36. let size = req.query.size;
  37. page = page ? parseInt(page) - 1 : 0;
  38. size = size ? parseInt(size) : 10;
  39. let searcher = new ObjectSearcher();
  40. ControllerUtil.regModelEventHandler(searcher, res);
  41. searcher.search(userId, keyword, targetRole, entityType, excludeTopicEndedSessions, page, size);
  42. });
  43. module.exports = router;