topics.repo.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. /**
  2. * 搜索功能。
  3. */
  4. "use strict";
  5. let ImDb = require('../mysql/db/im.db');
  6. let log = require('../../util/log.js');
  7. const DB_TABLES = require('../../include/commons').DB_TABLES;
  8. class TopicRepo {
  9. constructor() {
  10. }
  11. /**
  12. * 查找议题.
  13. *
  14. * @param topicId
  15. * @param handler
  16. */
  17. static findOne(topicId, handler) {
  18. let sql = "select id, session_id, name, create_time, end_by, end_time," +
  19. " start_message_id, end_message_id, description, status from " + DB_TABLES.Topics + " where id = ?";
  20. ImDb.execQuery({
  21. sql: sql,
  22. args: [topicId],
  23. handler: handler
  24. });
  25. }
  26. static findLastTopicStatus(sessionId, handler) {
  27. let sql = "select id from " + DB_TABLES.Topics + " where session_id = ? order by create_time desc limit 0, 1";
  28. ImDb.execQuery({
  29. sql: sql,
  30. args: [sessionId],
  31. handler: function (err, res) {
  32. if (res.length == 0) {
  33. handler(null, null);
  34. } else {
  35. TopicRepo.findTopicStatus(res[0].id, handler);
  36. }
  37. }
  38. });
  39. }
  40. static findTopicStatus(topicId, handler) {
  41. let sql = "select id, status from " + DB_TABLES.Topics + " where id = ?";
  42. ImDb.execQuery({
  43. sql: sql,
  44. args: [topicId],
  45. handler: handler
  46. });
  47. }
  48. /**
  49. * 获取会话中的议题。
  50. *
  51. * @param sessionId
  52. * @param handler
  53. */
  54. static findAllBySessionId(sessionId, handler) {
  55. let sql = "select id, session_id, name, create_time, end_by, end_time," +
  56. " start_message_id, end_message_id, description, status from " + DB_TABLES.Topics + " where session_id = ? order by id";
  57. ImDb.execQuery({
  58. sql: sql,
  59. args: [sessionId],
  60. handler: handler
  61. });
  62. }
  63. /**
  64. * 获取会话中的议题。
  65. *
  66. * @param sessionId
  67. * @param handler
  68. */
  69. static findAllByTopicId(id, handler) {
  70. let sql = "select id, session_id, name, create_time, end_by, end_time," +
  71. " start_message_id, end_message_id, description, status from " + DB_TABLES.Topics + " where id = ? order by id";
  72. ImDb.execQuery({
  73. sql: sql,
  74. args: [id],
  75. handler: handler
  76. });
  77. }
  78. static findAllBySessionIdsAndStatus(sessionIds,status,page,pagesize,handler){
  79. let sql = "select id, session_id, name, create_time, end_by, end_time," +
  80. " start_message_id, end_message_id, description, status from " + DB_TABLES.Topics + " where session_id in ('"+sessionIds+"') and status in ("+status+") order by status desc limit ?,? ";
  81. ImDb.execQuery({
  82. sql: sql,
  83. args: [page,pagesize],
  84. handler: handler
  85. });
  86. }
  87. /**
  88. * 保存议题
  89. *
  90. * @param topicName
  91. * @param topicId
  92. * @param sessionId
  93. * @param messageId
  94. * @param date
  95. * @param description
  96. * @param status
  97. */
  98. static saveTopic(topicName, topicId, sessionId, messageId, date, description, status,handler) {
  99. let sql = "insert into " + DB_TABLES.Topics + " (id,session_id,name,create_time,start_message_id,description,status) VALUES (?,?,?,?,?,?,?)";
  100. ImDb.execQuery({
  101. "sql": sql,
  102. "args": [topicId, sessionId, topicName, date, messageId, description, status],
  103. "handler": function (err, res) {
  104. handler(err,res);
  105. }
  106. });
  107. }
  108. /**
  109. * 结束议题
  110. *
  111. * @param topicId
  112. * @param endUser
  113. * @param date
  114. * @param messageId
  115. * @param status
  116. */
  117. static endTopic(topicId, endUser, date, messageId, status) {
  118. let sql = "update " + DB_TABLES.Topics + " set end_by = ?,end_time=?,end_message_id=?,status = ? where id = ?";
  119. ImDb.execQuery({
  120. "sql": sql,
  121. "args": [endUser, date, messageId, status, topicId],
  122. "handler": function (err, res) {
  123. if (err) {
  124. log.error("endTopic is fail error: " + err);
  125. } else {
  126. log.info("endTopic is success");
  127. }
  128. }
  129. });
  130. }
  131. /**
  132. * 更新议题状态。
  133. *
  134. * @param topicId
  135. * @param jsonValue
  136. */
  137. static updateTopics(topicId, jsonValue,handler) {
  138. var values = [];
  139. let sql = "update topics set ";
  140. var key =[];
  141. for(var j in jsonValue){
  142. key.push(j+" = ?");
  143. values.push(jsonValue[j]);
  144. }
  145. sql = sql+key.join(",");
  146. sql = sql + " where id = ?";
  147. values.push(topicId);
  148. ImDb.execQuery({
  149. "sql": sql,
  150. "args": values,
  151. "handler": function (err, res) {
  152. if (err) {
  153. log.error("updateTopis is fail error: " + err);
  154. } else {
  155. log.info("updateTopis is success");
  156. if(handler){
  157. handler(err,res);
  158. }
  159. }
  160. }
  161. });
  162. }
  163. }
  164. module.exports = TopicRepo;