topic.endpoint.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  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 log = require('../../util/log.js');
  11. let ObjectUtil = require("../../util/object.util.js");
  12. let ControllerUtil = require('../../util/controller.util');
  13. let Topics = require('../../models/sessions/topics');
  14. const APIv2 = require('../../include/endpoints').APIv2;
  15. /**
  16. * 获取用户的聊天列表
  17. */
  18. router.get(APIv2.Sessions.TopicMessages, function (req, res) {
  19. let topicId = req.query.topic_id;
  20. let startMsgId = req.query.start;
  21. let endMsgId = req.query.end;
  22. let page = req.query.page;
  23. let pagesize = req.query.pagesize;
  24. let user = req.query.user;
  25. let topic = new Topics();
  26. ControllerUtil.regModelEventHandler(topic, res);
  27. topic.getTopicMessages(topicId,user,startMsgId,endMsgId,page,pagesize);
  28. });
  29. /**
  30. * 获取topic单条记录
  31. */
  32. router.get(APIv2.Sessions.Topic, function (req, res) {
  33. let topicId = req.query.topic_id;
  34. let topic = new Topics();
  35. ControllerUtil.regModelEventHandler(topic, res);
  36. topic.getTopicByTopicId(topicId);
  37. });
  38. /**
  39. * 获取议题列表
  40. */
  41. router.get(APIv2.Sessions.TopicList, function (req, res) {
  42. let user = req.query.user;
  43. let status = req.query.status;
  44. let reply = req.query.reply;//SESSION_TYPES
  45. let page = req.query.page;
  46. let pagesize = req.query.pagesize;
  47. let topic = new Topics();
  48. ControllerUtil.regModelEventHandler(topic, res);
  49. let users = user.split(",");
  50. topic.findAllByUserAndReplyAndStatus(users,reply,status,page,pagesize);
  51. });
  52. /**
  53. * 健康咨询
  54. */
  55. router.get(APIv2.Sessions.HealthTopicList, function (req, res) {
  56. let user = req.query.user;
  57. let status = req.query.status;
  58. let reply = req.query.reply;//SESSION_TYPES
  59. let page = req.query.page;
  60. let pagesize = req.query.pagesize;
  61. let topic = new Topics();
  62. ControllerUtil.regModelEventHandler(topic, res);
  63. let users = user.split(",");
  64. topic.findAllByUserAndReplyAndStatusHealthTopic(users,reply,status,page,pagesize);
  65. });
  66. /**
  67. * 按类型查找咨询(未回复,进行中,已回复)
  68. */
  69. router.get(APIv2.Sessions.TopicListByType,function (req,res) {
  70. let user = req.query.user;
  71. let status = req.query.status;
  72. let type = req.query.type;
  73. let reply = req.query.reply;//SESSION_TYPES
  74. let page = req.query.page;
  75. let pagesize = req.query.pagesize;
  76. let patientName = req.query.patientName;
  77. let startTime = req.query.startTime;
  78. let endTime = req.query.endTime;
  79. let topic = new Topics();
  80. ControllerUtil.regModelEventHandler(topic, res);
  81. let users = user.split(",");
  82. topic.findAllTopicByType(users,reply,status,type,patientName,startTime,endTime,page,pagesize);
  83. });
  84. /**
  85. * 按类型查找咨询(未回复,进行中,已回复)的数量
  86. */
  87. router.get(APIv2.Sessions.TopicListCountByType,function (req,res) {
  88. let user = req.query.user;
  89. let status = req.query.status;
  90. let type = req.query.type;
  91. let reply = req.query.reply;//SESSION_TYPES
  92. let patientName = req.query.patientName;
  93. let startTime = req.query.startTime;
  94. let endTime = req.query.endTime;
  95. let topic = new Topics();
  96. ControllerUtil.regModelEventHandler(topic, res);
  97. let users = user.split(",");
  98. topic.topicListCountByType(users,reply,status,type,patientName,startTime,endTime);
  99. });
  100. /**
  101. * 健康咨询(区分团队)
  102. */
  103. router.get(APIv2.Sessions.HealthTeamTopicList, function (req, res) {
  104. let user = req.query.user;
  105. let status = req.query.status;
  106. let adminTeamCode = req.query.adminTeamCode;
  107. let reply = req.query.reply;//SESSION_TYPES
  108. let page = req.query.page;
  109. let pagesize = req.query.pagesize;
  110. let topic = new Topics();
  111. ControllerUtil.regModelEventHandler(topic, res);
  112. let users = user.split(",");
  113. topic.findAllByUserAndReplyAndStatusHealthTeamTopic(users,reply,status,adminTeamCode,page,pagesize);
  114. });
  115. /**
  116. * 议题回复数统计
  117. */
  118. router.get(APIv2.Sessions.TopicReplyCount, function (req, res) {
  119. let user = req.query.user;
  120. let status = req.query.status;
  121. let reply = req.query.reply;
  122. let adminTeamCode = req.query.adminTeamCode;
  123. let topic = new Topics();
  124. ControllerUtil.regModelEventHandler(topic, res);
  125. let users = user.split(",");
  126. topic.findReplyCount(users,reply,status,adminTeamCode);
  127. });
  128. /**
  129. * 创建议题
  130. */
  131. router.post(APIv2.Sessions.Topics, function (req, res) {
  132. let payload = req.body;
  133. let testing = ObjectUtil.fieldsCheck(payload, "topic_id", "topic_name", "participants", "messages", "session_type");
  134. if (!testing.pass) {
  135. throw {httpStatus: 406, message: testing.message}
  136. }
  137. let topic = new Topics();
  138. ControllerUtil.regModelEventHandler(topic, res);
  139. topic.createTopic(payload.topic_name, payload.topic_id, payload.session_id, JSON.parse(payload.participants), JSON.parse(payload.messages),payload.session_type);
  140. });
  141. /**
  142. * 修改议题
  143. */
  144. router.put(APIv2.Sessions.Topics, function (req, res) {
  145. let payload = req.body;
  146. let topicId = payload.topic_id;
  147. let jsonValue = payload.data;
  148. let topic = new Topics();
  149. ControllerUtil.regModelEventHandler(topic, res);
  150. topic.updateTopic(topicId, JSON.parse(jsonValue));
  151. });
  152. /**
  153. * 议题是否已结束,若top_id为current,则检查最后一个议题的状态
  154. */
  155. router.get(APIv2.Sessions.TopicEnded, function (req, res) {
  156. let sessionId = req.params.session_id;
  157. let topicId = req.params.topic_id;
  158. let topic = new Topics();
  159. ControllerUtil.regModelEventHandler(topic, res);
  160. topic.isTopicEnded(sessionId, topicId, null);
  161. });
  162. /**
  163. *结束议题
  164. */
  165. router.post(APIv2.Sessions.TopicEnded, function (req, res) {
  166. let payload = req.body;
  167. let endUser = payload.end_user;
  168. let endUserName = payload.end_user_name;
  169. let topicId = payload.topic_id;
  170. let agent = payload.agent;
  171. let topic = new Topics();
  172. ControllerUtil.regModelEventHandler(topic, res);
  173. topic.endTopic(topicId, endUser, endUserName,agent);
  174. });
  175. /**
  176. * 进入议题
  177. */
  178. router.post(APIv2.Sessions.TopicInto, function (req, res) {
  179. let payload = req.body;
  180. let intoUser = payload.into_user;
  181. let senderId = payload.sender_id;
  182. let intoUserName = payload.into_user_name;
  183. let topicId = payload.topic_id;
  184. let topic = new Topics();
  185. ControllerUtil.regModelEventHandler(topic, res);
  186. topic.intoTopic(topicId, intoUser, intoUserName,senderId,payload.content);
  187. });
  188. module.exports = router;