浏览代码

代码修改

8 年之前
父节点
当前提交
447585bdd0
共有 1 个文件被更改,包括 51 次插入4 次删除
  1. 51 4
      src/server/models/sessions/sessions.js

+ 51 - 4
src/server/models/sessions/sessions.js

@ -36,11 +36,11 @@ class Sessions extends RedisModel {
     * @param type 会话类型
     * @param type 会话类型
     * @param users 会话成员
     * @param users 会话成员
     */
     */
    createSession(sessionId, name, type, users) {
    createSession(sessionId, name, type, users,handler) {
        let self = this;
        let self = this;
        let _super = super.makeRedisKey;
        let _super = super.makeRedisKey;
        users = eval("["+users+"]")[0];
        users = eval("["+users+"]")[0];
        if (type == 2) {//P2P消息用hash校验
        if (type == config.sessionConfig.P2P) {//P2P消息用hash校验
            var userArray=[];
            var userArray=[];
            for(var key in users){
            for(var key in users){
                userArray.push(key);
                userArray.push(key);
@ -73,7 +73,11 @@ class Sessions extends RedisModel {
                    messages.content = "";
                    messages.content = "";
                    messages.contentType = "1";
                    messages.contentType = "1";
                    self.updateLastContent(session_key, type, name, messages);
                    self.updateLastContent(session_key, type, name, messages);
                    ModelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "session create success!"});
                    if(config.sessionConfig.MUC==type){
                        handler(true);
                    }else {
                        modelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "session create success!"});
                    }
                    self.saveSessionToMysql(sessionId, name, type, createDate);
                    self.saveSessionToMysql(sessionId, name, type, createDate);
                    participants.saveParticipantsToMysql(sessionId, users); //创建session成员到数据库
                    participants.saveParticipantsToMysql(sessionId, users); //创建session成员到数据库
                }
                }
@ -322,7 +326,50 @@ class Sessions extends RedisModel {
            }
            }
        })
        })
    }
    }
    /**
     * 保存消息
     *
     * @param message
     * @param sessionId
     */
    saveMessageByTopic(message, sessionId,handler) {
        let self = this;
        let messages = new Messages();
        let participants = new Participants();
        let session_key = super.makeRedisKey(RedisKeys.Session, sessionId);
        let message_id = mongoose.Types.ObjectId().toString();
        let session_type = 0;
        let name = "";
        participants.existsParticipant(sessionId, message.senderId, function (err,res) {
            //校验发送成员是都在讨论组
            if (res) {
                redis.hmgetAsync(session_key, ["type", "name"]).then(function (res) {
                    session_type = res[0];
                    name = res[1];
                    if (!session_type || !name) {
                        log.error("session is error for key " + session_key);
                        throw "session is not found";
                    }
                }).then(function (res) {
                    //更新消息相关
                    return messages.saveMessageForRedis(message_id, sessionId, message);
                }).then(function (res) {
                    //更新session的最后一条聊天记录
                    return self.updateLastContent(session_key, session_type, name, message);
                }).then(function (res) {
                    //操作mysql数据库
                    messages.saveMessageToMysql(message, session_type, message_id, sessionId);
                    //返回数据给前端。
                    handler(null,message_id)
                    //消息推送
                }).catch(function (res) {
                    handler(res,message_id)
                })
            } else {
                handler( "用户不在此会话当中!",message_id);
            }
        })
    }
    /**
    /**
     * 置顶操作
     * 置顶操作
     */
     */