Browse Source

Merge branch 'im-internet-hospital-oracle' of huangwenjie/im.doctor into im-internet-hospital-oracle

huangwenjie 5 năm trước cách đây
mục cha
commit
4e6d6048a2

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

@ -1718,6 +1718,7 @@ class Sessions extends RedisModel {
        // 发送成员必须处于会话中
        participants.existsParticipant(sessionId, message.sender_id, function (err, res) {
            log.info("1599-message.sender_id=" + message.sender_id);
            log.info(res);
            log.info("res[0].exist=" + res[0].exist);
            if ( res[0].exist || message.sender_id == "system") {
                redis.hmgetAsync(session_key, ["type", "name"]).then(function (res) {

+ 1 - 1
src/server/models/user/users.js

@ -356,7 +356,7 @@ class Users extends RedisModel {
        async.waterfall([
                function (callback) {
                    ImDb.execQuery({
                        "sql": "select case when count(*) > 0 then true else false end 'is_patient' from patients where id = ?",
                        "sql": "select case when count(*) > 0 then 1 else 0 end 'is_patient' from patients where id = :id",
                        "args": [userId],
                        "handler": function (err, res) {
                            if (err) {

+ 8 - 8
src/server/repository/oracle/participant.repo.js

@ -24,9 +24,9 @@ class ParticipantRepo {
     * @param handler
     */
    static findAll(sessionId, handler) {
        let sql = "SELECT U.\"ID\" AS \"id\",U.\"NAME\" AS \"name\",U.\"SEX\" AS \"sex\",U.\"BIRTHDATE\" AS \"birthdate\",U.\"AVATAR\" AS \"avatar\",U.\"HOSPITAL_NAME\" AS \"hospital_name\",P.\"PARTICIPANT_ROLE ROLE\" AS \"participant_role\",FALSE \"IS_PATIENT\" AS \"is_patient\",P.\"LAST_FETCH_TIME\" AS \"last_fetch_time\",U.\"LEVEL\" AS \"level\",U.\"MOBILE\" AS \"mobile\" " +
        let sql = "SELECT U.\"ID\" AS \"id\",U.\"NAME\" AS \"name\",U.\"SEX\" AS \"sex\",U.\"BIRTHDATE\" AS \"birthdate\",U.\"AVATAR\" AS \"avatar\",U.\"HOSPITAL_NAME\" AS \"hospital_name\",P.\"PARTICIPANT_ROLE ROLE\" AS \"participant_role\",0 AS \"is_patient\",P.\"LAST_FETCH_TIME\" AS \"last_fetch_time\",U.\"LEVEL\" AS \"level\",U.\"MOBILE\" AS \"mobile\" FROM sessions s, participants p, doctors u" +
            "WHERE S.ID = :ID AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID UNION " +
            "SELECT U.\"ID\" AS \"id\",U.\"NAME\" AS \"name\",U.\"SEX\" AS \"sex\",U.\"BIRTHDATE\" AS \"birthdate\",U.\"AVATAR\" AS \"avatar\",U.\"HOSPITAL_NAME\" AS \"hospital_name\",P.\"PARTICIPANT_ROLE ROLE\" AS \"participant_role\",FALSE \"IS_PATIENT\" AS \"is_patient\",P.\"LAST_FETCH_TIME\" AS \"last_fetch_time\",U.\"LEVEL\" AS \"level\",U.\"MOBILE\" AS \"mobile\" " +
            "SELECT U.\"ID\" AS \"id\",U.\"NAME\" AS \"name\",U.\"SEX\" AS \"sex\",U.\"BIRTHDATE\" AS \"birthdate\",U.\"AVATAR\" AS \"avatar\",U.\"HOSPITAL_NAME\" AS \"hospital_name\",P.\"PARTICIPANT_ROLE ROLE\" AS \"participant_role\",1 AS \"is_patient\",P.\"LAST_FETCH_TIME\" AS \"last_fetch_time\",0 AS \"level\",U.\"MOBILE\" AS \"mobile\" FROM sessions s, participants p, patients u " +
            "WHERE S.ID = :ID AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID";
        oracledbUtil.query({
@ -53,10 +53,10 @@ class ParticipantRepo {
     */
    static findIds(sessionId, handler) {
        let sql =
            "SELECT U.\"ID\" AS \"id\",U.\"NAME\" AS \"name\",FALSE \"IS_PATIENT\" AS \"is_patient\",P.\"PARTICIPANT_ROLE\" AS \"participant_role\",U.\"AVATAR\" AS \"avatar\" FROM SESSIONS S, PARTICIPANTS P, DOCTORS U " +
            "SELECT U.\"ID\" AS \"id\",U.\"NAME\" AS \"name\",0  AS \"is_patient\",P.\"PARTICIPANT_ROLE\" AS \"participant_role\",U.\"AVATAR\" AS \"avatar\" FROM SESSIONS S, PARTICIPANTS P, DOCTORS U " +
            "WHERE S.ID = :ID AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID " +
            "UNION " +
            "SELECT U.\"ID\" AS \"id\",U.\"NAME\" AS \"name\",FALSE \"IS_PATIENT\" AS \"is_patient\",P.\"PARTICIPANT_ROLE\" AS \"participant_role\",U.\"AVATAR\" AS \"avatar\" FROM SESSIONS S, PARTICIPANTS P, PATIENTS U " +
            "SELECT U.\"ID\" AS \"id\",U.\"NAME\" AS \"name\",1  AS \"is_patient\",P.\"PARTICIPANT_ROLE\" AS \"participant_role\",U.\"AVATAR\" AS \"avatar\" FROM SESSIONS S, PARTICIPANTS P, PATIENTS U " +
            "WHERE S.ID = :ID AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID ";
        oracledbUtil.query({
@ -87,7 +87,7 @@ class ParticipantRepo {
     */
    static findDoctorIds(sessionId,handler){
        let sql =
            "SELECT U.\"ID\" as \"id\", U.\"NAME\" as \"name\", FALSE \"IS_PATIENT\" as \"is_patient\", \"PARTICIPANT_ROLE\" as \"participant_role\" ,U.\"AVATAR\" as \"avatar\" FROM SESSIONS S, PARTICIPANTS P, DOCTORS U " +
            "SELECT U.\"ID\" as \"id\", U.\"NAME\" as \"name\", 0  as \"is_patient\", \"PARTICIPANT_ROLE\" as \"participant_role\" ,U.\"AVATAR\" as \"avatar\" FROM SESSIONS S, PARTICIPANTS P, DOCTORS U " +
            "WHERE S.ID = :ID AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID ";
        oracledbUtil.query({
@ -104,7 +104,7 @@ class ParticipantRepo {
     */
    static findFamilyIds(sessionId, handler){
        let sql =
            "U.\"ID\" as \"id\", U.\"NAME\" as \"name\", FALSE \"IS_PATIENT\" as \"is_patient\", \"PARTICIPANT_ROLE\" as \"participant_role\",U.\"AVATAR\" as \"avatar\",PS.\"NAME PNAME\",PS.\"ID\" as \"pid\" " +
            "U.\"ID\" as \"id\", U.\"NAME\" as \"name\", 0 as \"is_patient\", \"PARTICIPANT_ROLE\" as \"participant_role\",U.\"AVATAR\" as \"avatar\",PS.\"NAME PNAME\",PS.\"ID\" as \"pid\" " +
            "FROM SESSIONS S, PARTICIPANTS P, PATIENTS U ,WLYY.WLYY_PATIENT_FAMILY_MEMBER M,PATIENTS PS " +
            "WHERE S.ID = :ID AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = M.PATIENT AND M.FAMILY_MEMBER = U.ID AND M.IS_AUTHORIZE = 1 AND P.PARTICIPANT_ID = PS.ID ";
        //新增发送代理人
@ -125,7 +125,7 @@ class ParticipantRepo {
    static findAllAvatars(sessionId, handler) {
        let sql = "U.\"ID\" as \"id\", U.\"AVATAR\" as \"avatar\",'0' AS \"is_patient\",U.\"NAME\" as \"name\" FROM SESSIONS S, PARTICIPANTS P, DOCTORS U " +
            "WHERE S.ID = :ID AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID UNION " +
            "SELECT U.\"ID\" as \"id\", U.\"AVATAR\" as \"avatar\",'0' AS \"is_patient\",U.\"NAME\" as \"name\" FROM SESSIONS S, PARTICIPANTS P, PATIENTS U " +
            "SELECT U.\"ID\" as \"id\", U.\"AVATAR\" as \"avatar\",'1' AS \"is_patient\",U.\"NAME\" as \"name\" FROM SESSIONS S, PARTICIPANTS P, PATIENTS U " +
            "WHERE S.ID = :ID AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID";
        oracledbUtil.query({
@ -313,7 +313,7 @@ class ParticipantRepo {
    }
    static findLastFetchTime(sessionId,userId,handler){
        let sql = "SELECT \"LAST_FETCH_TIME\" as \"last_fetch_time\" FROM PARTICIPANTS P WHERE P.SESSION_ID = ? AND P.PARTICIPANT_ID=?";
        let sql = "SELECT \"LAST_FETCH_TIME\" as \"last_fetch_time\" FROM PARTICIPANTS P WHERE P.SESSION_ID = :SESSION_ID AND P.PARTICIPANT_ID=:PARTICIPANT_ID";
        oracledbUtil.query({
            "sql": sql,
            "args": [sessionId,userId],

+ 26 - 27
src/server/util/oracledb.util.js

@ -27,35 +27,34 @@ let query = function(options){
                return handler(err, null);
            }
            if(sql.indexOf("INSERT") >0 || sql.indexOf("UPDATE") >0){
                connection.execute(sql, args, {autoCommit:true},function (err, result)
                {
                    if (err) {
                        log.error(err.message)
                        log.error("Execute SQL failed: sql" + sql);
                        log.error("Execute SQL failed: args" + args);
                        doRelease(connection);
                        return handler(err, result);
                    }
                    console.log(result);
                    handler(null, result.rows);
            connection.execute(sql, args,{autoCommit:true}, function (err, result)
            {
                if (err) {
                    log.error(err.message)
                    log.error("Execute SQL failed: sql" + sql);
                    log.error("Execute SQL failed: args" + args);
                    doRelease(connection);
                });
            }else{
                connection.execute(sql, args, function (err, result)
                {
                    if (err) {
                        log.error(err.message)
                        log.error("Execute SQL failed: sql" + sql);
                        log.error("Execute SQL failed: args" + args);
                        doRelease(connection);
                        return handler(err, result);
                    }
                    console.log(result);
                    return handler(err, result);
                }
                console.log(result);
                if(!result.rows ||  result.rows.length == 0){
                    handler(null, result.rows);
                    doRelease(connection);
                });
            }
                }else{
                    handler(null, result.rows.map((v)=>
                    {
                        return result.metaData.reduce((p, key, i)=>
                        {
                            log.info("开始组装数据库返回值:"+i)
                            p[key.name] = v[i];
                            log.info(p)
                            return p;
                        }, {})
                    }));
                }
                doRelease(connection);
            });
        }
    );
}