|
@ -6,6 +6,9 @@
|
|
|
let ImDb = require('../oracle/db/im.db');
|
|
|
let log = require('../../util/log.js');
|
|
|
|
|
|
//oracle工具类
|
|
|
let oracledbUtil = require('../../util/oracledb.util');
|
|
|
|
|
|
const DB_TABLES = require('../../include/commons').DB_TABLES;
|
|
|
const PARTICIPANT_ROLES = require('../../include/commons').PARTICIPANT_ROLES;
|
|
|
const SESSION_STATUS = require('../../include/commons').SESSION_STATUS;
|
|
@ -38,17 +41,26 @@ class SessionRepo {
|
|
|
* @param handler
|
|
|
*/
|
|
|
static findAll(userId, handler) {
|
|
|
let sql = "SELECT SESSION_ID FROM " + DB_TABLES.Participants + " W WHERE W.PARTICIPANT_ID = ? AND PARTICIPANT_ROLE =0 GROUP BY W.SESSION_ID";
|
|
|
let sql = "SELECT SESSION_ID FROM " + DB_TABLES.Participants + " W WHERE W.PARTICIPANT_ID = '"+userId+"' AND PARTICIPANT_ROLE =0 GROUP BY W.SESSION_ID";
|
|
|
let sys_session = "SELECT SESSION_ID FROM " + DB_TABLES.Participants + " W WHERE W.PARTICIPANT_ID = 'SYSTEM' AND PARTICIPANT_ROLE =0 GROUP BY W.SESSION_ID";
|
|
|
let sessionSQL = "SELECT ID, NAME, TYPE, CREATE_DATE,BUSINESS_TYPE, LAST_SENDER_ID, LAST_SENDER_NAME, LAST_CONTENT_TYPE, LAST_CONTENT, LAST_MESSAGE_TIME,STATUS FROM "
|
|
|
+ DB_TABLES.Sessions + " S WHERE S.ID IN(" + sql + ") AND S.ID NOT IN ("+sys_session+")";
|
|
|
ImDb.execQuery({
|
|
|
"sql": sessionSQL,
|
|
|
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [userId],
|
|
|
"handler": handler || function (err, res) {
|
|
|
if(err) log.error(err);
|
|
|
}
|
|
|
});
|
|
|
//
|
|
|
// ImDb.execQuery({
|
|
|
// "sql": sessionSQL,
|
|
|
// "args": [userId],
|
|
|
// "handler": handler || function (err, res) {
|
|
|
// if(err) log.error(err);
|
|
|
// }
|
|
|
// });
|
|
|
}
|
|
|
|
|
|
/**
|
|
@ -150,24 +162,30 @@ class SessionRepo {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
let sqlTemp = "SELECT rownum r,SESSION_ID FROM " + DB_TABLES.Participants + " W WHERE W.PARTICIPANT_ID IN('"+userId+"') 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 "
|
|
|
let sqlTemp = "SELECT SESSION_ID FROM " + DB_TABLES.Participants + " W WHERE W.PARTICIPANT_ID IN('"+userId+"') GROUP BY W.SESSION_ID";
|
|
|
let sessionSQL = "SELECT rownum r, 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(" + sqlTemp + ") AND S.TYPE IN("+type+") ";
|
|
|
|
|
|
if(status != null && status != ""){
|
|
|
sessionSQL += " AND S.STATUS="+status
|
|
|
}
|
|
|
|
|
|
sessionSQL += " ORDER BY S.LAST_MESSAGE_TIME DESC "
|
|
|
let sql = "SELECT * FROM ( "+sessionSQL+" AND rownum<="+pagesize+" ) WHERE r>="+page
|
|
|
let sql = "SELECT * FROM ( "+sessionSQL+" AND rownum<="+pagesize+" ORDER BY S.LAST_MESSAGE_TIME DESC ) WHERE r>="+page
|
|
|
log.info(sessionSQL)
|
|
|
ImDb.execQuery({
|
|
|
oracledbUtil.query({
|
|
|
"sql": sql,
|
|
|
"args": [userId],
|
|
|
"handler": handler || function (err, res) {
|
|
|
if(err) log.error(err);
|
|
|
}
|
|
|
});
|
|
|
// ImDb.execQuery({
|
|
|
// "sql": sql,
|
|
|
// "args": [userId],
|
|
|
// "handler": handler || function (err, res) {
|
|
|
// if(err) log.error(err);
|
|
|
// }
|
|
|
// });
|
|
|
}
|
|
|
|
|
|
static findAllByTypeAndStatus(userId, businessType,status,page,pagesize, handler) {
|
|
@ -183,13 +201,13 @@ class SessionRepo {
|
|
|
if(status == SESSION_STATUS.ENDED){
|
|
|
if(businessType == SESSION_BUSINESS_TYPE.PATIENT){//区分居民,有未读消息的置顶排列
|
|
|
//找出已经结束的咨询
|
|
|
sql = "SELECT SESSION_ID FROM " + DB_TABLES.Participants + " W WHERE W.PARTICIPANT_ID = '"+userId+"' GROUP BY W.SESSION_ID";
|
|
|
sql = "SELECT SESSION_ID FROM " + DB_TABLES.Participants + " W WHERE W.PARTICIPANT_ID = ? GROUP BY W.SESSION_ID";
|
|
|
//找出角色讨论组中为旁听且未结束的咨询
|
|
|
let sql1 = ("SELECT SESSION_ID FROM " + DB_TABLES.Participants + " W WHERE W.PARTICIPANT_ID = '"+userId+"' AND PARTICIPANT_ROLE ="+PARTICIPANT_ROLES.REGULAR+" GROUP BY W.SESSION_ID")
|
|
|
let sql1 = ("SELECT SESSION_ID FROM " + DB_TABLES.Participants + " W WHERE W.PARTICIPANT_ID = ? AND PARTICIPANT_ROLE ="+PARTICIPANT_ROLES.REGULAR+" GROUP BY W.SESSION_ID")
|
|
|
sessionSQL = "SELECT rownum r, S.* FROM " + DB_TABLES.Sessions + " s, " + DB_TABLES.Participants + " P " +
|
|
|
" WHERE ((S.ID IN(" + sql + ") AND S.BUSINESS_TYPE = "+businessType+" AND S.STATUS = 1) OR (S.ID IN(" + sql1 + ") AND S.BUSINESS_TYPE = "+businessType+" AND S.STATUS = 0)) " +
|
|
|
" WHERE ((S.ID IN(" + sql + ") AND S.BUSINESS_TYPE = ? AND S.STATUS = 1) OR (S.ID IN(" + sql1 + ") AND S.BUSINESS_TYPE = ? AND S.STATUS = 0)) " +
|
|
|
// " and s.id = p.session_id and p.participant_id = ? ORDER BY (p.last_fetch_time - s.last_message_time+1)>0,s.create_date desc limit "+page+","+pagesize;
|
|
|
" AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = '"+userId+"' ";
|
|
|
" AND S.ID = P.SESSION_ID AND P.PARTICIPANT_ID = ? ";
|
|
|
sessionSQL = "SELECT*FROM ( " + sessionSQL +" AND rownum<="+pagesize+" ORDER BY S.LAST_MESSAGE_TIME DESC ) WHERE r>="+page;
|
|
|
|
|
|
ImDb.execQuery({
|