/** * 搜索功能。 */ "use strict"; let ImDb = require('../mysql/db/im.db'); let log = require('../../util/log.js'); const DB_TABLES = require('../../include/commons').DB_TABLES; class TopicRepo { constructor() { } /** * 查找议题. * * @param topicId * @param handler */ static findOne(topicId, handler) { let sql = "select id, session_id, name, create_time, end_by, end_time," + " start_message_id, end_message_id, description, status from " + DB_TABLES.Topics + " where id = ?"; ImDb.execQuery({ sql: sql, args: [topicId], handler: handler }); } static findLastTopicStatus(sessionId, handler) { let sql = "select id from " + DB_TABLES.Topics + " where session_id = ? order by create_time desc limit 0, 1"; ImDb.execQuery({ sql: sql, args: [sessionId], handler: function (err, res) { if (res.length == 0) { handler(null, null); } else { TopicRepo.findTopicStatus(res[0].id, handler); } } }); } static findTopicStatus(topicId, handler) { let sql = "select id, status from " + DB_TABLES.Topics + " where id = ?"; ImDb.execQuery({ sql: sql, args: [topicId], handler: handler }); } /** * 获取会话中的议题。 * * @param sessionId * @param handler */ static findAllBySessionId(sessionId, handler) { let sql = "select id, session_id, name, create_time, end_by, end_time," + " start_message_id, end_message_id, description, status from " + DB_TABLES.Topics + " where session_id = ? order by id"; ImDb.execQuery({ sql: sql, args: [sessionId], handler: handler }); } /** * 获取会话中的议题。 * * @param sessionId * @param handler */ static findAllByTopicId(id, handler) { let sql = "select id, session_id, name, create_time, end_by, end_time," + " start_message_id, end_message_id, description, status from " + DB_TABLES.Topics + " where id = ? order by id"; ImDb.execQuery({ sql: sql, args: [id], handler: handler }); } static findAllBySessionIdsAndStatus(sessionIds,status,page,pagesize,handler){ let sql = "select id, session_id, name, create_time, end_by, end_time," + " 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 ?,? "; ImDb.execQuery({ sql: sql, args: [page,pagesize], handler: handler }); } /** * 保存议题 * * @param topicName * @param topicId * @param sessionId * @param messageId * @param date * @param description * @param status */ static saveTopic(topicName, topicId, sessionId, messageId, date, description, status,handler) { let sql = "insert into " + DB_TABLES.Topics + " (id,session_id,name,create_time,start_message_id,description,status) VALUES (?,?,?,?,?,?,?)"; ImDb.execQuery({ "sql": sql, "args": [topicId, sessionId, topicName, date, messageId, description, status], "handler": function (err, res) { handler(err,res); } }); } /** * 结束议题 * * @param topicId * @param endUser * @param date * @param messageId * @param status */ static endTopic(topicId, endUser, date, messageId, status) { let sql = "update " + DB_TABLES.Topics + " set end_by = ?,end_time=?,end_message_id=?,status = ? where id = ?"; ImDb.execQuery({ "sql": sql, "args": [endUser, date, messageId, status, topicId], "handler": function (err, res) { if (err) { log.error("endTopic is fail error: " + err); } else { log.info("endTopic is success"); } } }); } /** * 更新议题状态。 * * @param topicId * @param jsonValue */ static updateTopics(topicId, jsonValue,handler) { var values = []; let sql = "update topics set "; var key =[]; for(var j in jsonValue){ key.push(j+" = ?"); values.push(jsonValue[j]); } sql = sql+key.join(","); sql = sql + " where id = ?"; values.push(topicId); ImDb.execQuery({ "sql": sql, "args": values, "handler": function (err, res) { if (err) { log.error("updateTopis is fail error: " + err); } else { log.info("updateTopis is success"); if(handler){ handler(err,res); } } } }); } } module.exports = TopicRepo;