|
@ -6,6 +6,7 @@
|
|
|
let ImDb = require('../oracle/db/im.db');
|
|
|
let DbUtil = require('../../util/db.util');
|
|
|
let log = require('../../util/log.js');
|
|
|
let oracledbUtil = require('../../util/oracledb.util');
|
|
|
|
|
|
const DB_TABLES = require('../../include/commons').DB_TABLES;
|
|
|
const SESSION_USER_STATUS = require('../../include/commons').SESSION_USER_STATUS;
|
|
@ -23,12 +24,12 @@ class ParticipantRepo {
|
|
|
* @param handler
|
|
|
*/
|
|
|
static findAll(sessionId, handler) {
|
|
|
let sql = "SELECT U.ID, U.NAME, U.SEX, U.BIRTHDATE, U.AVATAR,U.HOSPITAL_NAME, P.PARTICIPANT_ROLE ROLE, FALSE IS_PATIENT,P.LAST_FETCH_TIME,U.LEVEL,U.MOBILE FROM SESSIONS S, PARTICIPANTS P, DOCTORS U " +
|
|
|
"WHERE S.ID = ? AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID UNION " +
|
|
|
"SELECT U.ID, U.NAME, U.SEX, U.BIRTHDATE, U.AVATAR,U.HOSPITAL_NAME, P.PARTICIPANT_ROLE ROLE, TRUE IS_PATIENT,P.LAST_FETCH_TIME,0 AS LEVEL,U.MOBILE FROM SESSIONS S, PARTICIPANTS P, PATIENTS U " +
|
|
|
"WHERE S.ID = ? AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID";
|
|
|
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\" " +
|
|
|
"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\" " +
|
|
|
"WHERE S.ID = :ID AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID";
|
|
|
|
|
|
ImDb.execQuery({
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [sessionId, sessionId],
|
|
|
"handler": function(err,res){
|
|
@ -52,13 +53,13 @@ class ParticipantRepo {
|
|
|
*/
|
|
|
static findIds(sessionId, handler) {
|
|
|
let sql =
|
|
|
"SELECT U.ID, U.NAME, FALSE IS_PATIENT, P.PARTICIPANT_ROLE,U.AVATAR FROM SESSIONS S, PARTICIPANTS P, DOCTORS U " +
|
|
|
"WHERE S.ID = ? AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID " +
|
|
|
"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 " +
|
|
|
"WHERE S.ID = :ID AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID " +
|
|
|
"UNION " +
|
|
|
"SELECT U.ID, U.NAME, TRUE IS_PATIENT, P.PARTICIPANT_ROLE,U.AVATAR FROM SESSIONS S, PARTICIPANTS P, PATIENTS U " +
|
|
|
"WHERE S.ID = ? AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID ";
|
|
|
"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 " +
|
|
|
"WHERE S.ID = :ID AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID ";
|
|
|
|
|
|
ImDb.execQuery({
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [sessionId, sessionId],
|
|
|
"handler": handler
|
|
@ -71,8 +72,8 @@ class ParticipantRepo {
|
|
|
* @param handler
|
|
|
*/
|
|
|
static findParricipantBySessionId(sessionId,handler){
|
|
|
let sql = "SELECT PARTICIPANT_ID,PARTICIPANT_ROLE FROM PARTICIPANTS P WHERE P.SESSION_ID = ?";
|
|
|
ImDb.execQuery({
|
|
|
let sql = "SELECT \"PARTICIPANT_ID\" as \"participant_id\" ,\"PARTICIPANT_ROLE\" as \"participant_role\" FROM PARTICIPANTS P WHERE P.SESSION_ID = :SESSION_ID";
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [sessionId],
|
|
|
"handler": handler
|
|
@ -86,10 +87,10 @@ class ParticipantRepo {
|
|
|
*/
|
|
|
static findDoctorIds(sessionId,handler){
|
|
|
let sql =
|
|
|
"SELECT U.ID, U.NAME, FALSE IS_PATIENT, P.PARTICIPANT_ROLE,U.AVATAR FROM SESSIONS S, PARTICIPANTS P, DOCTORS U " +
|
|
|
"WHERE S.ID = ? AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID ";
|
|
|
"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 " +
|
|
|
"WHERE S.ID = :ID AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID ";
|
|
|
|
|
|
ImDb.execQuery({
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [sessionId],
|
|
|
"handler": handler
|
|
@ -103,12 +104,12 @@ class ParticipantRepo {
|
|
|
*/
|
|
|
static findFamilyIds(sessionId, handler){
|
|
|
let sql =
|
|
|
"SELECT U.ID, U.NAME, TRUE IS_PATIENT, P.PARTICIPANT_ROLE,U.AVATAR,PS.NAME PNAME,PS.ID PID " +
|
|
|
"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\" " +
|
|
|
"FROM SESSIONS S, PARTICIPANTS P, PATIENTS U ,WLYY.WLYY_PATIENT_FAMILY_MEMBER M,PATIENTS PS " +
|
|
|
"WHERE S.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 ";
|
|
|
"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 ";
|
|
|
//新增发送代理人
|
|
|
|
|
|
ImDb.execQuery({
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [sessionId],
|
|
|
"handler": handler
|
|
@ -122,12 +123,12 @@ class ParticipantRepo {
|
|
|
* @param handler
|
|
|
*/
|
|
|
static findAllAvatars(sessionId, handler) {
|
|
|
let sql = "SELECT U.ID, U.AVATAR,'0' AS ISPATIENT,U.NAME AS NAME FROM SESSIONS S, PARTICIPANTS P, DOCTORS U " +
|
|
|
"WHERE S.ID = ? AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID UNION " +
|
|
|
"SELECT U.ID, U.AVATAR,'1' AS ISPATIENT,U.NAME AS NAME FROM SESSIONS S, PARTICIPANTS P, PATIENTS U " +
|
|
|
"WHERE S.ID = ? AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID";
|
|
|
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 " +
|
|
|
"WHERE S.ID = :ID AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = U.ID";
|
|
|
|
|
|
ImDb.execQuery({
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [sessionId, sessionId],
|
|
|
"handler": handler
|
|
@ -143,8 +144,8 @@ class ParticipantRepo {
|
|
|
* @param handler
|
|
|
*/
|
|
|
static updateParticipant(sessionId, participantId, role, handler) {
|
|
|
let sql = "UPDATE PARTICIPANTS SET PARTICIPANT_ROLE = ? WHERE SESSION_ID = ? AND PARTICIPANT_ID = ?";
|
|
|
ImDb.execQuery({
|
|
|
let sql = "UPDATE PARTICIPANTS SET PARTICIPANT_ROLE = :PARTICIPANT_ROLE WHERE SESSION_ID = :SESSION_ID AND PARTICIPANT_ID = :PARTICIPANT_ID";
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [role, sessionId, participantId],
|
|
|
"handler": handler
|
|
@ -164,8 +165,8 @@ class ParticipantRepo {
|
|
|
}
|
|
|
|
|
|
static getBusinessType(users, handler) {
|
|
|
let sql = "SELECT COUNT(1) AS COUNT FROM PATIENTS P WHERE P.ID IN (?)";
|
|
|
ImDb.execQuery({
|
|
|
let sql = "SELECT COUNT(1) as \"count\" FROM PATIENTS P WHERE P.ID IN (:ID)";
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [users],
|
|
|
"handler": function (err, res) {
|
|
@ -185,8 +186,8 @@ class ParticipantRepo {
|
|
|
}
|
|
|
|
|
|
static findNameById(userId, handler) {
|
|
|
let sql = "SELECT P.NAME,P.SEX,P.BIRTHDATE FROM PATIENTS P WHERE P.ID =? UNION SELECT D.NAME,D.SEX,D.BIRTHDATE FROM DOCTORS D WHERE D.ID =?";
|
|
|
ImDb.execQuery({
|
|
|
let sql = "SELECT P.\"NAME\" as \"name\",P.\"SEX\" as \"sex\",P.\"BIRTHDATE\" as \"birthdate\" FROM PATIENTS P WHERE P.ID =? UNION SELECT D.NAME,D.SEX,D.BIRTHDATE FROM DOCTORS D WHERE D.ID =?";
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [userId, userId],
|
|
|
"handler": function (err, res) {
|
|
@ -209,10 +210,10 @@ class ParticipantRepo {
|
|
|
});
|
|
|
|
|
|
let sql = "SELECT DISTINCT S.* FROM " + DB_TABLES.Participants + " P1," + DB_TABLES.Participants + " P2," +
|
|
|
DB_TABLES.Sessions + " S WHERE P1.SESSION_ID = S.ID AND P2.SESSION_ID = S.ID AND S.TYPE =? " +
|
|
|
"AND ((P1.PARTICIPANT_ID =? AND P2.PARTICIPANT_ID = ?) OR (P1.PARTICIPANT_ID =? AND P2.PARTICIPANT_ID = ?))";
|
|
|
DB_TABLES.Sessions + " S WHERE P1.SESSION_ID = S.ID AND P2.SESSION_ID = S.ID AND S.TYPE =:TYPE " +
|
|
|
"AND ((P1.PARTICIPANT_ID =:PARTICIPANT_ID AND P2.PARTICIPANT_ID = :PARTICIPANT_ID) OR (P1.PARTICIPANT_ID =:PARTICIPANT_ID AND P2.PARTICIPANT_ID = :PARTICIPANT_ID))";
|
|
|
|
|
|
ImDb.execQuery({
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [SESSION_TYPES.MUC, userTemp[0], userTemp[1], userTemp[1], userTemp[0]],
|
|
|
"handler": handler
|
|
@ -228,8 +229,8 @@ class ParticipantRepo {
|
|
|
* @param handler
|
|
|
*/
|
|
|
static updateLastFetchTime(lastMessageTime, sessionId, participantId, handler) {
|
|
|
let sql = "UPDATE " + DB_TABLES.Participants + " SET LAST_FETCH_TIME=? WHERE SESSION_ID = ? AND PARTICIPANT_ID =?";
|
|
|
ImDb.execQuery({
|
|
|
let sql = "UPDATE " + DB_TABLES.Participants + " SET LAST_FETCH_TIME=:LAST_FETCH_TIME WHERE SESSION_ID = :SESSION_ID AND PARTICIPANT_ID =:PARTICIPANT_ID";
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [lastMessageTime, sessionId, participantId],
|
|
|
"handler": handler
|
|
@ -244,10 +245,10 @@ class ParticipantRepo {
|
|
|
* @param handler
|
|
|
*/
|
|
|
static existsParticipant(sessionId, userId, handler) {
|
|
|
let sql = "SELECT CASE WHEN COUNT(*) > 0 THEN TRUE ELSE FALSE END EXIST FROM PARTICIPANTS W WHERE W.SESSION_ID =? AND W.PARTICIPANT_ID = ? ";
|
|
|
let sql = "SELECT CASE WHEN COUNT(*) > 0 THEN TRUE ELSE FALSE END EXIST FROM PARTICIPANTS W WHERE W.SESSION_ID =:SESSION_ID AND W.PARTICIPANT_ID = :PARTICIPANT_ID ";
|
|
|
log.info("用户是否在指定Session中:sql:" + sql);
|
|
|
log.info("用户是否在指定Session中:args:" + [sessionId, userId]);
|
|
|
ImDb.execQuery({
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [sessionId, userId],
|
|
|
"handler": handler
|
|
@ -269,7 +270,7 @@ class ParticipantRepo {
|
|
|
log.info("saveParticipantsToMysql:[users.length] = " + users.length);
|
|
|
for (let j in users) {
|
|
|
let tokens = users[j].split(":");
|
|
|
sql += "(?,?,?,?)";
|
|
|
sql += "(:SESSION_ID,:PARTICIPANT_ID,:PARTICIPANT_ROLE,:LAST_FETCH_TIME)";
|
|
|
args.push(sessionId);
|
|
|
args.push(tokens[0]);
|
|
|
args.push(tokens.length > 1 ? tokens[1] : '0');
|
|
@ -278,7 +279,7 @@ class ParticipantRepo {
|
|
|
log.info("saveParticipantsToMysql:[args] = " + args);
|
|
|
}
|
|
|
sql += " ON DUPLICATE KEY UPDATE PARTICIPANT_ROLE = VALUES(PARTICIPANT_ROLE)";
|
|
|
ImDb.execQuery({
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": args,
|
|
|
"handler": handler
|
|
@ -286,8 +287,8 @@ class ParticipantRepo {
|
|
|
}
|
|
|
|
|
|
static deleteUserFromMysql(sessionId, userId, handler) {
|
|
|
let sql = "DELETE FROM " + DB_TABLES.Participants + " WHERE PARTICIPANT_ID=? AND SESSION_ID=? ";
|
|
|
ImDb.execQuery({
|
|
|
let sql = "DELETE FROM " + DB_TABLES.Participants + " WHERE PARTICIPANT_ID=:PARTICIPANT_ID AND SESSION_ID=:SESSION_ID ";
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [userId, sessionId],
|
|
|
"handler": handler || function (err, res) {
|
|
@ -297,8 +298,8 @@ class ParticipantRepo {
|
|
|
}
|
|
|
|
|
|
static deleteAllUser(sessionId, handler) {
|
|
|
let sql = "DELETE FROM " + DB_TABLES.Participants + " WHERE SESSION_ID=? ";
|
|
|
ImDb.execQuery({
|
|
|
let sql = "DELETE FROM " + DB_TABLES.Participants + " WHERE SESSION_ID=:SESSION_ID ";
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [sessionId],
|
|
|
"handler": handler || function (err, res) {
|
|
@ -308,8 +309,8 @@ class ParticipantRepo {
|
|
|
}
|
|
|
|
|
|
static findLastFetchTime(sessionId,userId,handler){
|
|
|
let sql = "SELECT LAST_FETCH_TIME FROM PARTICIPANTS P WHERE P.SESSION_ID = ? AND P.PARTICIPANT_ID=?";
|
|
|
ImDb.execQuery({
|
|
|
let sql = "SELECT \"LAST_FETCH_TIME\" as \"last_fetch_time\" FROM PARTICIPANTS P WHERE P.SESSION_ID = ? AND P.PARTICIPANT_ID=?";
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [sessionId,userId],
|
|
|
"handler": handler
|