|
@ -12,6 +12,8 @@ let Participants = require('./participants');
|
|
|
let SessionRepo = require('../../repository/mysql/session.repo');
|
|
|
let TopicRepo = require('../../repository/mysql/topics.repo');
|
|
|
let ParticipantRepo = require('../../repository/mysql/participant.repo');
|
|
|
let ImDb = require('../../repository/mysql/db/im.db');
|
|
|
let WlyySDK = require("../../util/wlyy.sdk");
|
|
|
|
|
|
let WechatClient = require("../client/wechat.client.js");
|
|
|
let AppClient = require("../client/app.client.js");
|
|
@ -824,18 +826,28 @@ class Sessions extends RedisModel {
|
|
|
/**
|
|
|
* 获取所有会话的未读消息数。
|
|
|
*/
|
|
|
getAllSessionsUnreadMessageCount(userId) {
|
|
|
getAllSessionsUnreadMessageCount(userId,handler) {
|
|
|
let self = this;
|
|
|
let count = 0;
|
|
|
let patientCount = 0;
|
|
|
let doctorCount = 0;
|
|
|
SessionRepo.findAll(userId, function (err, res) {
|
|
|
if (err) {
|
|
|
if(handler)
|
|
|
{
|
|
|
handler(err,res)
|
|
|
return;
|
|
|
}
|
|
|
ModelUtil.logError("getAllSessionsUnreadMessageCount is failed", err);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (res.length == 0) {
|
|
|
if(handler)
|
|
|
{
|
|
|
handler(err,count)
|
|
|
return;
|
|
|
}
|
|
|
ModelUtil.emitOK(self.eventEmitter, {count: count});
|
|
|
return;
|
|
|
}
|
|
@ -843,6 +855,11 @@ class Sessions extends RedisModel {
|
|
|
for (let j in res) {
|
|
|
if (res[j].type == SESSION_TYPES.SYSTEM) {
|
|
|
if (j == res.length - 1) {
|
|
|
if(handler)
|
|
|
{
|
|
|
handler(err,count)
|
|
|
return;
|
|
|
}
|
|
|
ModelUtil.emitOK(self.eventEmitter, {count: count, patient: patientCount, doctor: doctorCount});
|
|
|
}
|
|
|
continue;
|
|
@ -854,6 +871,11 @@ class Sessions extends RedisModel {
|
|
|
function callback(res, j, session) {
|
|
|
self.getSessionUnreadMessageCount(res[j].id, userId, function (err, con) {
|
|
|
if (err) {
|
|
|
if(handler)
|
|
|
{
|
|
|
handler(err,count)
|
|
|
return;
|
|
|
}
|
|
|
ModelUtil.logError("getAllSessionsUnreadMessageCount is failed", err);
|
|
|
}
|
|
|
|
|
@ -864,6 +886,11 @@ class Sessions extends RedisModel {
|
|
|
doctorCount = doctorCount + con;
|
|
|
}
|
|
|
if (j == res.length - 1) {
|
|
|
if(handler)
|
|
|
{
|
|
|
handler(err,count)
|
|
|
return;
|
|
|
}
|
|
|
ModelUtil.emitOK(self.eventEmitter, {count: count, patient: patientCount, doctor: doctorCount});
|
|
|
}
|
|
|
})
|
|
@ -1224,6 +1251,7 @@ class Sessions extends RedisModel {
|
|
|
* @param message
|
|
|
*/
|
|
|
static pushNotification(targetUserId, targetUserName, message,sessionType) {
|
|
|
let self = this;
|
|
|
Users.isPatientId(targetUserId, function (err, isPatient) {
|
|
|
if (isPatient) {
|
|
|
WechatClient.sendMessage(targetUserId, targetUserName, message);
|
|
@ -1234,7 +1262,25 @@ class Sessions extends RedisModel {
|
|
|
}
|
|
|
//告知医生新消息
|
|
|
WechatClient.sendSocketMessageToDoctor(targetUserId,message);
|
|
|
AppClient.sendNotification(targetUserId, message);
|
|
|
ImDb.execQuery({
|
|
|
"sql": "SELECT imei, token from user_tokens WHERE user = ?",
|
|
|
"args": [targetUserId],
|
|
|
"handler": function (err, result) {
|
|
|
if (err || result.length == 0) {
|
|
|
return;
|
|
|
}
|
|
|
WlyySDK.request(targetUserId, '', result[0].token, result[0].imei, '/imcommon/message/messages', 'POST', function (err, res) {
|
|
|
let count = 0;
|
|
|
res = JSON.parse(res)
|
|
|
if (res.status == 200) {
|
|
|
let data = res.data;
|
|
|
count = JSON.parse(data.imMsgCount).count + data.system.amount + data.healthIndex.amount + data.sign.amount;
|
|
|
}
|
|
|
AppClient.sendNotification(targetUserId, message,sessionType,count);
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
|
|
|
}
|
|
|
});
|
|
|
}
|