Browse Source

数据库层oracle改造

huangwenjie 5 years ago
parent
commit
07e96544fb

+ 9 - 4
src/server/repository/oracle/message.repo.js

@ -53,10 +53,14 @@ class MessageRepo {
                    params.push(messageType);
                }
                let sql = "SELECT ID, SESSION_ID, SENDER_ID, SENDER_NAME, CONTENT_TYPE, CONTENT, TIMESTAMP FROM " +
                    MessageTable + " W WHERE " + where + " ORDER BY W.ID LIMIT ?, ?";
                params.push(page);
                let sqlTemp = "SELECT rownum r,ID, SESSION_ID, SENDER_ID, SENDER_NAME, CONTENT_TYPE, CONTENT, TIMESTAMP FROM " +
                    MessageTable + " W WHERE " + where + " ORDER BY W.ID ";
                let sql = "SELECT*FROM ( "+sqlTemp+" AND rownum<=?) WHERE r>=?"
                params.push(size);
                params.push(page);
                ImDb.execQuery({
                    "sql": sql,
                    "args": params,
@ -152,7 +156,8 @@ class MessageRepo {
    static findLastMessage(sessionId,sessionType,handler){
        let sql =
            "SELECT S.CONTENT_TYPE, S.CONTENT,S.AGENT FROM " + DB_TABLES.sessionTypeToTableName(sessionType) + " S " +
            "WHERE S.SESSION_ID = ? ORDER BY S.TIMESTAMP DESC LIMIT 1 ";
            "WHERE S.SESSION_ID = ? ORDER BY S.TIMESTAMP DESC rownum=1 ";
        log.info("获取会话医生的id sql : " + sql);
        log.info("获取会话医生的id args : " + [sessionId]);
        ImDb.execQuery({

+ 2 - 2
src/server/repository/oracle/private.msg.repo.js

@ -136,7 +136,7 @@ class PrivateMsgRepo {
     */
    static findUnread  (from, to, start, count, handler) {
        var sql = "SELECT MSG_ID, TO_UID, FROM_UID, TYPE, CONTENT, TIMESTAMP FROM MSG_P2P " +
            "WHERE FROM_UID = ? AND TO_UID = ? AND MSG_ID < ? ORDER BY TIMESTAMP DESC LIMIT ?";
            "WHERE FROM_UID = ? AND TO_UID = ? AND MSG_ID < ? ORDER BY TIMESTAMP DESC rownum <= ?";
        ImDb.execQuery({
            "sql": sql,
@ -147,7 +147,7 @@ class PrivateMsgRepo {
    static isCurrentSessionFinished(doctorId, patientId, handler) {
        var sql = "SELECT C.CONSULT CONSULT_ID, CASE WHEN C.END_MSG_ID IS NOT NULL THEN 1 ELSE 0 END FINISHED " +
            "FROM WLYY.WLYY_CONSULT_TEAM C WHERE C.DOCTOR=? AND C.PATIENT = ? ORDER BY ID DESC LIMIT 1";
            "FROM WLYY.WLYY_CONSULT_TEAM C WHERE C.DOCTOR=? AND C.PATIENT = ? ORDER BY ID DESC rownum = 1";
        ImDb.execQuery({
            "sql": sql,

+ 16 - 9
src/server/repository/oracle/search.repo.js

@ -110,7 +110,7 @@ class SearchRepo {
     * @param handler
     */
    static searchUser(sessionIdList,userId, keyword, userTable, page, size, handler) {
        let sql = "SELECT DISTINCT U.NAME USER_NAME,S.ID SESSION_ID, S.NAME SESSION_NAME, S.TYPE SESSION_TYPE, S.BUSINESS_TYPE, U.ID USER_ID,U.SEX, U.BIRTHDATE, U.AVATAR,U.IDCARD %S " +
        let sql = "SELECT*FROM ( SELECT DISTINCT rownum r,U.NAME USER_NAME,S.ID SESSION_ID, S.NAME SESSION_NAME, S.TYPE SESSION_TYPE, S.BUSINESS_TYPE, U.ID USER_ID,U.SEX, U.BIRTHDATE, U.AVATAR,U.IDCARD %S " +
            " FROM  PARTICIPANTS P, " + userTable +
            " U,SESSIONS S WHERE S.ID IN (?) AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID AND P.PARTICIPANT_ID<>? AND (U.NAME LIKE ? OR U.IDCARD LIKE ?) ";
@ -119,13 +119,16 @@ class SearchRepo {
        }else{
            sql += " AND S.TYPE IN (1,2,8)  AND S.BUSINESS_TYPE = 2 ";
        }
        sql += " LIMIT ?, ? ";
        sql += " AND rownum<=?) WHERE r>=?";
        sql = vsprintf(sql, [userTable == DB_TABLES.Doctors ? ', HOSPITAL_NAME' : '']);
        keyword = '%' + keyword + '%';
        ImDb.execQuery({
            sql: sql,
            args: [sessionIdList,userId, keyword,keyword, page * size, size],
            args: [sessionIdList,userId, keyword,keyword, size,page * size],
            handler: handler
        });
    }
@ -138,16 +141,18 @@ class SearchRepo {
            return handler(null, []);
        }
        let sql = "SELECT * FROM(" +
        let sqlTemp = "SELECT rownum r,* FROM(" +
            "SELECT S.ID, S.NAME, S.TYPE, S.CREATE_DATE, S.BUSINESS_TYPE,GROUP_CONCAT(U. NAME) AS PARTICIPANT_NAME " +
            "FROM SESSIONS S,  DOCTORS U ,PARTICIPANTS P " +
            "WHERE S.ID IN (?) AND S.TYPE IN (3,4) AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID AND P.PARTICIPANT_ID<>? AND (U.NAME LIKE ? OR S.NAME LIKE ?) GROUP BY S.ID " +
            ") X LIMIT ?, ?";
            ") X ";
        let sql = "SELECT*FROM ( "+sqlTemp+" AND rownum<=?) WHERE r>=?"
        keyword = '%' + keyword + '%';
        ImDb.execQuery({
            sql: sql,
            args: [sessionIdList,userId, keyword,keyword, page * size, size],
            args: [sessionIdList,userId, keyword,keyword, size,page * size],
            handler: handler
        });
    }
@ -156,7 +161,7 @@ class SearchRepo {
     * 消息搜索
     */
    static searchMessages(sessionIdList,userId, keyword, page, size, handler) {
        let sql = "SELECT * FROM(" +
        let sqlTemp = "SELECT rownum r, * FROM(" +
            "SELECT S.ID SESSION_ID, S.NAME SESSION_NAME, S.TYPE SESSION_TYPE, S.BUSINESS_TYPE SESSION_BUSINESS_TYPE, M.ID MESSAGE_ID, M.SENDER_ID, M.SENDER_NAME, M.TIMESTAMP, M.CONTENT " +
            "FROM SESSIONS S, MUC_MESSAGES M " +
            "WHERE S.ID IN (?) AND S.ID = M.SESSION_ID AND S.`TYPE` = 1 AND M.CONTENT_TYPE = 1 AND M.CONTENT LIKE ? " +
@ -168,12 +173,14 @@ class SearchRepo {
            "SELECT S.ID SESSION_ID, S.NAME SESSION_NAME, S.TYPE SESSION_TYPE, S.BUSINESS_TYPE SESSION_BUSINESS_TYPE, M.ID MESSAGE_ID, M.SENDER_ID, M.SENDER_NAME, M.TIMESTAMP, M.CONTENT " +
            "FROM SESSIONS S, GROUP_MESSAGES M " +
            "WHERE S.ID IN (?) AND S.ID = M.SESSION_ID AND S.`TYPE` IN (3,5) AND M.CONTENT_TYPE = 1 AND M.CONTENT LIKE ? ) X " +
            "ORDER BY X.SESSION_ID, X.MESSAGE_ID LIMIT ?, ?";
            "ORDER BY X.SESSION_ID, X.MESSAGE_ID ";
        keyword = '%' + keyword + '%';
        let sql = "SELECT*FROM ( "+sqlTemp+" AND rownum<=?) WHERE r>=?"
        ImDb.execQuery({
            sql: sql,
            args: [sessionIdList, keyword, sessionIdList, keyword, sessionIdList, keyword, page * size, size],
            args: [sessionIdList, keyword, sessionIdList, keyword, sessionIdList, keyword, size,page * size],
            handler: handler
        });
    }

+ 8 - 5
src/server/repository/oracle/session.repo.js

@ -150,18 +150,21 @@ class SessionRepo {
            }
        }
        let sql = "SELECT SESSION_ID FROM " + DB_TABLES.Participants + " W WHERE W.PARTICIPANT_ID IN(?) GROUP BY W.SESSION_ID";
        let sqlTemp = "SELECT rownum r,SESSION_ID FROM " + DB_TABLES.Participants + " W WHERE W.PARTICIPANT_ID IN(?) GROUP BY W.SESSION_ID";
        let sessionSQL = "SELECT ID, NAME, TYPE, CREATE_DATE, LAST_SENDER_ID, LAST_SENDER_NAME, LAST_CONTENT_TYPE, LAST_CONTENT, LAST_MESSAGE_TIME FROM "
            + DB_TABLES.Sessions + " S WHERE S.ID IN(" + sql + ") AND S.TYPE IN("+type+") ";
            + DB_TABLES.Sessions + " S WHERE S.ID IN(" + sqlTemp + ") AND S.TYPE IN("+type+") ";
        if(status != null && status != ""){
            sessionSQL += " AND S.STATUS="+status
        }
        sessionSQL +=  " ORDER BY S.LAST_MESSAGE_TIME DESC LIMIT "+page+","+pagesize;
        log.info(sessionSQL)
        sessionSQL +=  " ORDER BY S.LAST_MESSAGE_TIME DESC "
        let sql = "SELECT*FROM ( "+sessionSQL+" AND rownum<="+pagesize+") WHERE r>="+page
        log.info(sql)
        ImDb.execQuery({
            "sql": sessionSQL,
            "sql": sql,
            "args": [userId],
            "handler": handler || function (err, res) {
                if(err) log.error(err);

+ 3 - 1
src/server/repository/oracle/topics.repo.js

@ -276,7 +276,9 @@ class TopicRepo {
    }
    static findLastTopicStatusAndType(sessionId, handler) {
        let sql = "SELECT ID FROM " + DB_TABLES.Topics + " WHERE  SESSION_ID = ? ORDER BY CREATE_TIME DESC LIMIT 0, 1";
        let sqlTemp = "SELECT rownum r, ID FROM " + DB_TABLES.Topics + " WHERE  SESSION_ID = ? ORDER BY CREATE_TIME DESC ";
        let sql = "SELECT*FROM ( "+sqlTemp+" AND rownum<=1) WHERE r>=0"
        ImDb.execQuery({
            sql: sql,
            args: [sessionId],

+ 3 - 1
src/server/repository/oracle/wechat.token.repo.js

@ -21,8 +21,10 @@ class WeChatTokenRepo {
     * @param handler 回调函数
     */
    static findOne(handler) {
        let sqlTemp = "SELECT rownum r, ACCESS_TOKEN, EXPIRES_IN, ADD_TIMESTAMP FROM WLYY.WX_ACCESS_TOKEN WHERE ACC_ID = '"+config.wechatConfig.accId+"' ORDER BY ADD_TIMESTAMP DESC"
        let sql = "SELECT*FROM ( "+sqlTemp+" AND rownum<=1) WHERE r>=0"
        ImDb.execQuery({
            "sql": "SELECT ACCESS_TOKEN, EXPIRES_IN, ADD_TIMESTAMP FROM WLYY.WX_ACCESS_TOKEN WHERE ACC_ID = '"+config.wechatConfig.accId+"' ORDER BY ADD_TIMESTAMP DESC LIMIT 0, 1"
            "sql":
            , "handler": handler
        });
    };