Browse Source

议题增加状态描述,更新sql

Sand 8 years ago
parent
commit
4391820177

+ 11 - 0
src/server/include/commons.js

@ -34,6 +34,17 @@ const SESSION_TYPES = {
exports.SESSION_TYPES = SESSION_TYPES;
/**
 * 会话状态
 */
const TOPIC_STATUS = {
    NEW: 0,             // 新建
    PROCEEDINGS: 1,     // 进行中
    FINISHED: 10        // 结束
};
exports.TOPIC_STATUS = TOPIC_STATUS;
/**
 * 会话参与者角色
 */

+ 13 - 4
src/server/models/user/users.js

@ -281,7 +281,7 @@ class Users extends RedisModel {
                                        // cache topics for MUC
                                        let topicsKey = RedisModel.makeRedisKey(REDIS_KEYS.Topics, sessionId);
                                        TopicRepo.findAll(sessionId, function (err, topics) {
                                        TopicRepo.findAllBySessionId(sessionId, function (err, topics) {
                                            if (err) {
                                                ModelUtil.emitError(self.eventEmitter, err.message);
                                                return;
@ -296,11 +296,20 @@ class Users extends RedisModel {
                                                let endTime = ObjectUtil.timestampToLong(topic.end_time);
                                                let startMessageId = topic.start_message_id;
                                                let endMessageId = topic.end_message_id;
                                                let description = topic.description;
                                                let status = topic.status;
                                                redisConn.multi()
                                                    .zadd(topicsKey, topicId)
                                                    .hmset(topicKey, 'name', name, 'session_id', sessionId, 'create_time',
                                                        createTime, 'end_by', endBy, 'end_time', endTime, 'start_message_id',
                                                        startMessageId, 'end_message_id', endMessageId)
                                                    .hmset(topicKey,
                                                        'name', name,
                                                        'session_id', sessionId,
                                                        'create_time', createTime,
                                                        'end_by', endBy,
                                                        'end_time', endTime,
                                                        'start_message_id', startMessageId,
                                                        'end_message_id', endMessageId,
                                                        'description', description,
                                                        'status', status)
                                                    .execAsync().then(function (res) {
                                                });
                                            });

+ 21 - 2
src/server/repository/mysql/topic.repo.js

@ -11,14 +11,33 @@ let ImDb = require('./db/im.db');
class TopicsRepo {
    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 topics where id = ?";
        ImDb.execQuery({
            sql: sql,
            args: [topicId],
            handler: handler
        });
    }
    /**
     * 获取会话中的议题。
     *
     * @param sessionId
     * @param handler
     */
    static findAll(sessionId, handler){
        let sql = "select id, session_id, name, create_time, end_by, end_time, start_message_id, end_message_id from topics where session_id = ?";
    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 topics where session_id = ?";
        ImDb.execQuery({
            sql: sql,
            args: [sessionId],

+ 1 - 0
src/server/resources/schema/ichat_1.2.8_table_schema.sql

@ -92,6 +92,7 @@ CREATE TABLE `topics`
	`end_time` TIMESTAMP(0) COMMENT '结束时间',
	`start_message_id` INTEGER COMMENT '消息起始ID',
	`end_message_id` INTEGER COMMENT '消息结束ID',
	`status` INT COMMENT '议题状态,0新建,1已回复未结束,10结束',
	CONSTRAINT `PK_topics` PRIMARY KEY (`id`)
) COMMENT='议题,仅MUC模式使用。'
;

+ 20 - 14
src/server/resources/schema/temp.sql

@ -1,6 +1,6 @@
/* ---------------------------------------------------- */
/*  Generated by Enterprise Architect Version 12.0 		*/
/*  Created On : 04-Jan-2017 5:41:28 PM 				*/
/*  Created On : 05-Jan-2017 8:54:40 AM 				*/
/*  DBMS       : MySql 						*/
/* ---------------------------------------------------- */
@ -8,24 +8,30 @@ SET FOREIGN_KEY_CHECKS=0
/* Drop Tables */
DROP TABLE IF EXISTS `sessions` CASCADE
DROP TABLE IF EXISTS `topics` CASCADE
;
/* Create Tables */
CREATE TABLE `sessions`
CREATE TABLE `topics`
(
	`id` VARCHAR(50) NOT NULL COMMENT '会话标识。会话标识来源根据业务场景:1 医生间P2P会话使用随机生成的ID;2 医生间的群会话使用行政团队的ID;3 医生与患者间的咨询以患者的ID+当前咨询次数为ID',
	`name` VARCHAR(50) NOT NULL COMMENT '会话名称',
	`type` INTEGER NOT NULL COMMENT '会话类型,1表示MUC会话,2表示P2P,3表示群会话,4表示临时讨论组',
	`create_date` DATETIME(0) NOT NULL COMMENT '创建时间',
	`last_sender_id` VARCHAR(50) COMMENT '消息最后发送人ID',
	`last_sender_name` VARCHAR(50) COMMENT '消息最后发送人姓名',
	`last_content_type` VARCHAR(50) COMMENT '消息最后内容类型',
	`last_content` VARCHAR(1024) COMMENT '消息最后内容',
	`last_message_time` TIMESTAMP(0) COMMENT '消息最后时间',
	CONSTRAINT `PK_sessions` PRIMARY KEY (`id`)
) COMMENT='会话'
	`id` VARCHAR(32) NOT NULL COMMENT 'ID',
	`session_id` VARCHAR(50) NOT NULL COMMENT 'MUC会话ID',
	`name` VARCHAR(50) COMMENT '议题名称',
	`create_time` TIMESTAMP(0) COMMENT '创建时间',
	`end_by` VARCHAR(50) COMMENT '结束人ID',
	`end_time` TIMESTAMP(0) COMMENT '结束时间',
	`start_message_id` INTEGER COMMENT '消息起始ID',
	`end_message_id` INTEGER COMMENT '消息结束ID',
	`status` INT COMMENT '议题状态,0新建,1已回复未结束,10结束',
	CONSTRAINT `PK_topics` PRIMARY KEY (`id`)
) COMMENT='议题,仅MUC模式使用。'
;
/* Create Primary Keys, Indexes, Uniques, Checks */
ALTER TABLE `topics` 
 ADD INDEX `IXFK_topics_sessions` (`session_id` ASC)
;
SET FOREIGN_KEY_CHECKS=1