|
@ -5,6 +5,8 @@
|
|
|
|
|
|
var ImDb = require("../oracle/db/im.db.js");
|
|
var ImDb = require("../oracle/db/im.db.js");
|
|
|
|
|
|
|
|
let oracledbUtil = require('../../util/oracledb.util');
|
|
|
|
|
|
class PrivateMsgRepo {
|
|
class PrivateMsgRepo {
|
|
constructor() {
|
|
constructor() {
|
|
}
|
|
}
|
|
@ -19,7 +21,7 @@ class PrivateMsgRepo {
|
|
* @param handler
|
|
* @param handler
|
|
*/
|
|
*/
|
|
static save(to, from, type, content, handler) {
|
|
static save(to, from, type, content, handler) {
|
|
ImDb.execQuery({
|
|
|
|
|
|
oracledbUtil.query({
|
|
"sql": "INSERT INTO MSG_P2P (TO_UID,FROM_UID,TYPE,CONTENT) VALUES (:TO_UID,:FROM_UID,:TYPE,:CONTENT)",
|
|
"sql": "INSERT INTO MSG_P2P (TO_UID,FROM_UID,TYPE,CONTENT) VALUES (:TO_UID,:FROM_UID,:TYPE,:CONTENT)",
|
|
"args": [to, from, type, content],
|
|
"args": [to, from, type, content],
|
|
"handler": handler
|
|
"handler": handler
|
|
@ -27,8 +29,8 @@ class PrivateMsgRepo {
|
|
};
|
|
};
|
|
|
|
|
|
static findOneMessage(messageId, handler) {
|
|
static findOneMessage(messageId, handler) {
|
|
ImDb.execQuery({
|
|
|
|
"sql": "SELECT MSG_ID, TO_UID, FROM_UID, TYPE, CONTENT, TIMESTAMP FROM MSG_P2P WHERE MSG_ID = ?",
|
|
|
|
|
|
oracledbUtil.query({
|
|
|
|
"sql": "SELECT MSG_ID, TO_UID, FROM_UID, TYPE, CONTENT, TIMESTAMP FROM MSG_P2P WHERE MSG_ID = :MSG_ID",
|
|
"args": [messageId],
|
|
"args": [messageId],
|
|
"handler": handler
|
|
"handler": handler
|
|
});
|
|
});
|
|
@ -36,8 +38,8 @@ class PrivateMsgRepo {
|
|
|
|
|
|
|
|
|
|
static findOnePatientMessage(messageId, handler) {
|
|
static findOnePatientMessage(messageId, handler) {
|
|
ImDb.execQuery({
|
|
|
|
"sql": "SELECT M.*,D.NAME,D.PHOTO FROM MSG_P2P M, WLYY.WLYY_DOCTOR D, WLYY.WLYY_PATIENT P WHERE M.FROM_UID = D. CODE AND M.TO_UID = P. CODE AND M.MSG_ID =?",
|
|
|
|
|
|
oracledbUtil.query({
|
|
|
|
"sql": "SELECT M.*,D.NAME,D.PHOTO FROM MSG_P2P M, WLYY.WLYY_DOCTOR D, WLYY.WLYY_PATIENT P WHERE M.FROM_UID = D. CODE AND M.TO_UID = P. CODE AND M.MSG_ID =:MSG_ID",
|
|
"args": [messageId],
|
|
"args": [messageId],
|
|
"handler": handler
|
|
"handler": handler
|
|
});
|
|
});
|
|
@ -57,12 +59,12 @@ class PrivateMsgRepo {
|
|
*/
|
|
*/
|
|
static findAllMessages(to, from, contentType, start, end, count, closedInterval, handler) {
|
|
static findAllMessages(to, from, contentType, start, end, count, closedInterval, handler) {
|
|
var sql = "SELECT MSG_ID, TO_UID, FROM_UID, TYPE, CONTENT, TIMESTAMP FROM MSG_P2P " +
|
|
var sql = "SELECT MSG_ID, TO_UID, FROM_UID, TYPE, CONTENT, TIMESTAMP FROM MSG_P2P " +
|
|
"WHERE ((TO_UID=? AND FROM_UID=?) OR (TO_UID=? AND FROM_UID=?)) " +
|
|
|
|
" AND TYPE IN (" + contentType + ") AND MSG_ID BETWEEN ? AND ? ORDER BY MSG_ID DESC LIMIT ?";
|
|
|
|
|
|
"WHERE ((TO_UID=:TO_UID AND FROM_UID=:FROM_UID) OR (TO_UID=:TO_UID AND FROM_UID=:FROM_UID)) " +
|
|
|
|
" AND TYPE IN (" + contentType + ") AND MSG_ID BETWEEN '"+closedInterval ? end : end + 1+"' AND '"+closedInterval ? start : start - 1+"' ORDER BY MSG_ID DESC ";
|
|
|
|
|
|
ImDb.execQuery({
|
|
|
|
|
|
oracledbUtil.query({
|
|
"sql": sql,
|
|
"sql": sql,
|
|
"args": [to, from, from, to, closedInterval ? end : end + 1, closedInterval ? start : start - 1, count],
|
|
|
|
|
|
"args": [to, from, from, to],
|
|
"handler": handler
|
|
"handler": handler
|
|
});
|
|
});
|
|
};
|
|
};
|
|
@ -83,12 +85,12 @@ class PrivateMsgRepo {
|
|
// "(ms3.uid = ? AND ms3.peer_uid = d.code) GROUP BY d.code, d.name ORDER BY ms3.timestamp DESC";
|
|
// "(ms3.uid = ? AND ms3.peer_uid = d.code) GROUP BY d.code, d.name ORDER BY ms3.timestamp DESC";
|
|
var sql = "SELECT D. CODE AS CODE, D. NAME AS NAME, D.SEX, D.PHOTO, S.LAST_CONTENT_TYPE, S.LAST_CONTENT, S. TIMESTAMP AS TIMESTAMP, S.NEW_MSG_COUNT " +
|
|
var sql = "SELECT D. CODE AS CODE, D. NAME AS NAME, D.SEX, D.PHOTO, S.LAST_CONTENT_TYPE, S.LAST_CONTENT, S. TIMESTAMP AS TIMESTAMP, S.NEW_MSG_COUNT " +
|
|
"FROM MSG_P2P P, WLYY.WLYY_DOCTOR D, MSG_STATISTIC S " +
|
|
"FROM MSG_P2P P, WLYY.WLYY_DOCTOR D, MSG_STATISTIC S " +
|
|
"WHERE (( P.FROM_UID = D. CODE AND P.TO_UID = ? ) OR ( P.TO_UID = D. CODE AND P.FROM_UID = ? )) " +
|
|
|
|
"AND S.FROM_GID IS NULL AND S.UID = ? " +
|
|
|
|
|
|
"WHERE (( P.FROM_UID = D. CODE AND P.TO_UID = :TO_UID ) OR ( P.TO_UID = D. CODE AND P.FROM_UID = :FROM_UID )) " +
|
|
|
|
"AND S.FROM_GID IS NULL AND S.UID = :UID " +
|
|
"AND S.PEER_UID = D. CODE " +
|
|
"AND S.PEER_UID = D. CODE " +
|
|
"GROUP BY D. NAME, D. CODE, D.HOSPITAL_NAME, D.JOB_NAME, D.SEX, D.PHOTO ORDER BY P.MSG_ID DESC"
|
|
"GROUP BY D. NAME, D. CODE, D.HOSPITAL_NAME, D.JOB_NAME, D.SEX, D.PHOTO ORDER BY P.MSG_ID DESC"
|
|
|
|
|
|
ImDb.execQuery({
|
|
|
|
|
|
oracledbUtil.query({
|
|
"sql": sql,
|
|
"sql": sql,
|
|
"args": [userId, userId, userId],
|
|
"args": [userId, userId, userId],
|
|
"handler": handler
|
|
"handler": handler
|
|
@ -108,17 +110,17 @@ class PrivateMsgRepo {
|
|
// "AND ((ms.from_uid = ? AND ms.uid = p.code) OR (ms.uid = ? AND ms.from_uid = p.code)) ORDER BY ms.timestamp";
|
|
// "AND ((ms.from_uid = ? AND ms.uid = p.code) OR (ms.uid = ? AND ms.from_uid = p.code)) ORDER BY ms.timestamp";
|
|
var sql = "SELECT P1. CODE AS CODE , P1. NAME AS NAME, P1.BIRTHDAY, P1.SEX, P1.PHOTO, W.LAST_CONTENT, W.LAST_CONTENT_TYPE, W. TIMESTAMP AS TIMESTAMP, W.NEW_MSG_COUNT " +
|
|
var sql = "SELECT P1. CODE AS CODE , P1. NAME AS NAME, P1.BIRTHDAY, P1.SEX, P1.PHOTO, W.LAST_CONTENT, W.LAST_CONTENT_TYPE, W. TIMESTAMP AS TIMESTAMP, W.NEW_MSG_COUNT " +
|
|
"FROM MSG_P2P P, WLYY.WLYY_PATIENT P1, MSG_STATISTIC W " +
|
|
"FROM MSG_P2P P, WLYY.WLYY_PATIENT P1, MSG_STATISTIC W " +
|
|
"WHERE (( P.TO_UID = P1.`CODE` AND P.FROM_UID = ? ) OR ( P.FROM_UID = P1.`CODE` AND P.TO_UID = ? )) " +
|
|
|
|
"AND W.LAST_CONTENT_TYPE IN (1, 2, 3, 5, 6) AND W.UID = ? AND W.PEER_UID = P1.`CODE` AND W.FROM_GID IS NULL " +
|
|
|
|
|
|
"WHERE (( P.TO_UID = P1.`CODE` AND P.FROM_UID = :FROM_UID ) OR ( P.FROM_UID = P1.`CODE` AND P.TO_UID = :TO_UID )) " +
|
|
|
|
"AND W.LAST_CONTENT_TYPE IN (1, 2, 3, 5, 6) AND W.UID = :UID AND W.PEER_UID = P1.`CODE` AND W.FROM_GID IS NULL " +
|
|
"GROUP BY P1. CODE, P1. NAME, P1.BIRTHDAY, P1.SEX, P1.PHOTO " +
|
|
"GROUP BY P1. CODE, P1. NAME, P1.BIRTHDAY, P1.SEX, P1.PHOTO " +
|
|
"UNION ALL " +
|
|
"UNION ALL " +
|
|
"SELECT P1. CODE AS CODE, P1. NAME AS NAME, P1.BIRTHDAY, P1.SEX, P1.PHOTO, W.LAST_CONTENT, T.TYPE, W. TIMESTAMP AS TIMESTAMP, W.NEW_MSG_COUNT " +
|
|
"SELECT P1. CODE AS CODE, P1. NAME AS NAME, P1.BIRTHDAY, P1.SEX, P1.PHOTO, W.LAST_CONTENT, T.TYPE, W. TIMESTAMP AS TIMESTAMP, W.NEW_MSG_COUNT " +
|
|
"FROM MSG_P2P P, WLYY.WLYY_PATIENT P1, MSG_STATISTIC W, WLYY.WLYY_CONSULT_TEAM T " +
|
|
"FROM MSG_P2P P, WLYY.WLYY_PATIENT P1, MSG_STATISTIC W, WLYY.WLYY_CONSULT_TEAM T " +
|
|
"WHERE (( P.TO_UID = P1.`CODE` AND P.FROM_UID = ? ) OR ( P.FROM_UID = P1.`CODE` AND P.TO_UID = ? )) " +
|
|
|
|
|
|
"WHERE (( P.TO_UID = P1.`CODE` AND P.FROM_UID = :FROM_UID ) OR ( P.FROM_UID = P1.`CODE` AND P.TO_UID = :TO_UID )) " +
|
|
"AND W.LAST_CONTENT_TYPE = 7 AND T.TYPE = 6 " +
|
|
"AND W.LAST_CONTENT_TYPE = 7 AND T.TYPE = 6 " +
|
|
"AND (( T.PATIENT = P.FROM_UID AND T.DOCTOR = P.TO_UID ) OR ( T.PATIENT = P.TO_UID AND T.DOCTOR = P.FROM_UID )) " +
|
|
"AND (( T.PATIENT = P.FROM_UID AND T.DOCTOR = P.TO_UID ) OR ( T.PATIENT = P.TO_UID AND T.DOCTOR = P.FROM_UID )) " +
|
|
"AND W.UID = ? AND W.PEER_UID = P1.`CODE` AND W.FROM_GID IS NULL GROUP BY P1. CODE, P1. NAME, P1.BIRTHDAY, P1.SEX, P1.PHOTO;";
|
|
|
|
ImDb.execQuery({
|
|
|
|
|
|
"AND W.UID = :UID AND W.PEER_UID = P1.`CODE` AND W.FROM_GID IS NULL GROUP BY P1. CODE, P1. NAME, P1.BIRTHDAY, P1.SEX, P1.PHOTO;";
|
|
|
|
oracledbUtil.query({
|
|
"sql": sql,
|
|
"sql": sql,
|
|
"args": [userId, userId, userId, userId, userId, userId],
|
|
"args": [userId, userId, userId, userId, userId, userId],
|
|
"handler": handler
|
|
"handler": handler
|
|
@ -136,20 +138,20 @@ class PrivateMsgRepo {
|
|
*/
|
|
*/
|
|
static findUnread (from, to, start, count, handler) {
|
|
static findUnread (from, to, start, count, handler) {
|
|
var sql = "SELECT MSG_ID, TO_UID, FROM_UID, TYPE, CONTENT, TIMESTAMP FROM MSG_P2P " +
|
|
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 rownum <= ?";
|
|
|
|
|
|
"WHERE FROM_UID = :FROM_UID AND TO_UID = :TO_UID AND MSG_ID < :MSG_ID ORDER BY TIMESTAMP DESC rownum <= "+count+" ";
|
|
|
|
|
|
ImDb.execQuery({
|
|
|
|
|
|
oracledbUtil.query({
|
|
"sql": sql,
|
|
"sql": sql,
|
|
"args": [from, to, start, count],
|
|
|
|
|
|
"args": [from, to, start],
|
|
"handler": handler
|
|
"handler": handler
|
|
});
|
|
});
|
|
};
|
|
};
|
|
|
|
|
|
static isCurrentSessionFinished(doctorId, patientId, handler) {
|
|
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 " +
|
|
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 rownum = 1";
|
|
|
|
|
|
"FROM WLYY.WLYY_CONSULT_TEAM C WHERE C.DOCTOR=:DOCTOR AND C.PATIENT = :PATIENT ORDER BY ID DESC rownum = 1";
|
|
|
|
|
|
ImDb.execQuery({
|
|
|
|
|
|
oracledbUtil.query({
|
|
"sql": sql,
|
|
"sql": sql,
|
|
"args": [doctorId, patientId],
|
|
"args": [doctorId, patientId],
|
|
"handler": handler
|
|
"handler": handler
|