Browse Source

Merge branch 'feature-refactor' of http://192.168.1.220:10080/Amoy/im.doctor into feature-refactor

sand 8 years ago
parent
commit
94a14a05ce

+ 9 - 4
src/server/endpoints/chats.endpoint.js

@ -109,15 +109,20 @@ router.get(APIv1.Chats.TEST,function(req,res){
        message.senderName="test1";
        sessions.saveMessageBySession(message,sessionId);
    }
    //http://192.168.131.107:3008/api/v1/chats/test?test=5&page=0&pagesize=10&user=3121&sessionId=testsessionmsg1
    //http://192.168.131.107:3008/api/v1/chats/test?test=5&user=3121&sessionId=testsessionmsg1
    if(test==5){
        let sessions = new Sessions();
        ControllerUtil.regModelEventHandler(sessions, res);
        let sessionId = req.query.sessionId;
        let user = req.query.user;
        let page = req.query.page;
        let pagesize = req.query.pagesize;
        sessions.getSessionMessages(sessionId,user,page,pagesize);
        let type = req.query.type;
        if(type==1){
            //置顶
            sessions.stickSession(sessionId,user);
        }else{
            //取消置顶
            sessions.cancelStickSession(sessionId,user);
        }
    }
})

+ 3 - 2
src/server/include/commons.js

@ -100,7 +100,7 @@ exports.REDIS_KEYS = {
    MessagesByTimestamp: "sessions:" + REDIS_KEY_REPLACER + ":messages_by_timestamp"
};
exports.STICK_NUM = 90000000000000;
exports.STICK_NUM = 9000000000000;
exports.IM_DB = {
    "P2PMSG": "p2p_messages",
@ -108,5 +108,6 @@ exports.IM_DB = {
    "GROUPMSG": "group_messages",
    "PARTICIPANTS": "participants",
    "SESSIONS": "sessions",
    "TOPICS": "topics"
    "TOPICS": "topics",
    "STICKY_SESSION":"sticky_sessions"
};

+ 7 - 1
src/server/models/sessions/sessions.js

@ -299,13 +299,17 @@ class Sessions extends RedisModel {
                   redis.zaddAsync(user_session_key, Commons.STICK_NUM,sessionId).then(function(res){
                       log.info("stickSession:"+sessionId+",res:"+res);
                       modelUtil.emitData(self.eventEmitter,{"status":200,"msg":"置顶成功!"});
                   }).then(function(){
                       SessionRepo.stickSession(sessionId,user,Commons.STICK_NUM);
                   })
                }else{
                    //已有置顶的数据,取出来加1保存回去
                    scoreres =  scoreres+1;
                    scoreres =  Number(scoreres)+1;
                    redis.zaddAsync(user_session_key, scoreres,sessionId).then(function(){
                        log.info("stickSession:"+sessionId+",res:"+res);
                        modelUtil.emitData(self.eventEmitter,{"status":200,"msg":"置顶成功!"});
                    }).then(function(){
                        SessionRepo.stickSession(sessionId,user,scoreres);
                    })
                }
            })
@ -326,6 +330,8 @@ class Sessions extends RedisModel {
            redis.zaddAsync(user_session_key, res,sessionId).then(function(res){
                log.info("cancelStickSession:"+sessionId);
                modelUtil.emitData(self.eventEmitter,{"status":200,"msg":"取消置顶成功!"});
            }).then(function(){
                SessionRepo.unstickSession(sessionId,user);
            });
        })
    }

+ 52 - 1
src/server/repository/mysql/session.repo.js

@ -15,7 +15,7 @@ class SessionRepo {
     * @param handler
     */
    static getUserSessionsFromMysql(userId,handler){
        let sql ="select select session_id from participants w where w.participaint_id = ? group by w.session_id";
        let sql ="select session_id from participants w where w.participaint_id = ? group by w.session_id";
        let sessionsql = "select id,name,type,create_date from session s where s.id in("+sql+")";
        ImDb.execQuery({
            "sql": sessionsql,
@ -31,6 +31,28 @@ class SessionRepo {
        });
    }
    /**
     * 获取置顶的消息
     * @param userId
     * @param handler
     */
    static getUserStickSessionsFromMysql(userId,handler){
        let sql ="select session_id from participants w where w.participaint_id = ? group by w.session_id";
        let sessionsql = "select s.id,s.name,s.type,s.create_date from session s,sticky_sessions ss  where s.id = ss.session_id s.id in("+sql+")";
        ImDb.execQuery({
            "sql": sessionsql,
            "args": [userId],
            "handler": function (err, res) {
                if(err) {
                    log.error("sql:"+sessionsql+"data:userId:"+userId);
                }else{
                    log.info("getMysqlUserSessions success by userId :"+userId);
                }
                handler(err,res);
            }
        });
    }
    /**
     * 获取session单个对象
     * @param sessionId
@ -75,6 +97,35 @@ class SessionRepo {
        });
    }
    static stickSession(sessionId,user,score){
        let sql ="insert into "+IMTABLE.STICKY_SESSION+" (user_id,session_id,score) VALUES (?,?,?) ";
        ImDb.execQuery({
            "sql": sql,
            "args": [user,sessionId,score],
            "handler": function (err, res) {
                if(err) {
                    log.error("sql:"+sql+"data:sessionId:"+sessionId+",user:"+user+",score:"+score);
                }else{
                    log.info("save stickSession to mysql is success by session :"+sessionId);
                }
            }
        });
    }
    static unstickSession(sessionId,user){
        let sql ="delete from "+IMTABLE.STICKY_SESSION+" where user_id=? and session_id=? ";
        ImDb.execQuery({
            "sql": sql,
            "args": [user,sessionId],
            "handler": function (err, res) {
                if(err) {
                    log.error("sql:"+sql+"data:sessionId:"+sessionId+",user:"+user);
                }else{
                    log.info("delete unstickSession to mysql is success by session :"+sessionId);
                }
            }
        });
    }
}
module.exports = SessionRepo;