Parcourir la source

居民外层消息推送

huangwenjie il y a 5 ans
Parent
commit
533d111cf5

+ 4 - 0
readme.md

@ -198,6 +198,7 @@ REST API遵循REST最佳实践,规范命名URL中的每个部分。注意POST
                            answer_status:0 //0请求,1已接听
                        }
            30、互联网医院转发
            31、会诊建议
            2101、上门服务-预约信息
            2102、上门服务-修改工单卡片信息
            2103、上门服务-变更工单医生信息
@ -257,6 +258,9 @@ REST API遵循REST最佳实践,规范命名URL中的每个部分。注意POST
            
            h、type =16 医院在线复诊-视频
            sessionId: 居民code+"_"+咨询code+"_"+咨询类型
            
            h、type =17 专家咨询-视频
            sessionId: 居民code+"_"+医生CODE+"_"+17

+ 1 - 1
src/server/endpoints/v2/application.endpoint.js

@ -6,7 +6,7 @@ let request = require('request');
let http = require('http');
let configFile = require('../../include/commons').CONFIG_FILE;
let config = require('../../resources/config/' + configFile);
let ImDb = require('../../repository/mysql/db/im.db');
let ImDb = require('../../repository/oracle/db/im.db');
let WlyySDK = require("../../util/wlyy.sdk");
let log = require('../../util/log.js');

+ 1 - 1
src/server/endpoints/v2/demo.endpoint.js

@ -6,7 +6,7 @@ let request = require('request');
let http = require('http');
let configFile = require('../../include/commons').CONFIG_FILE;
let config = require('../../resources/config/' + configFile);
let ImDb = require('../../repository/mysql/db/im.db');
let ImDb = require('../../repository/oracle/db/im.db');
let WlyySDK = require("../../util/wlyy.sdk");
let log = require('../../util/log.js');
let clientCache = require('../../models/socket.io/client.cache').clientCache();

+ 19 - 16
src/server/include/commons.js

@ -40,6 +40,7 @@ const SESSION_TYPES = {
    GUIDANCE_HOSPITAL:14,   //互联网医院居民导诊聊天
    GENERAL_EXPERT:15,   //全科医生发起求助专科医生的专家咨询
    PRESCRIPTION_HOSPITAL_VIDEO:16, //互联网医院医院在线复诊-视频
    MUC_VIDEO:17, //视频咨询
};
exports.SESSION_TYPES = SESSION_TYPES;
@ -216,22 +217,22 @@ exports.REDIS_KEYS = {
};
const DB_TABLES = {
    Doctors: "doctors",
    Patients: "patients",
    P2pMessages: "p2p_messages",
    MucMessages: "muc_messages",
    GroupMessages: "group_messages",
    SystemMessages: "system_messages",
    Participants: "participants",
    Sessions: "sessions",
    Topics: "topics",
    StickySessions: "sticky_sessions",
    WlyyConsult:"wlyy_consults",
    WlyyConsultTeam:"wlyy.wlyy_consult_team",
    WlyyConsultS:"wlyy.wlyy_consult",
    WlyyMessage:"wlyy.wlyy_message",
    MessageNoticeSetting:"wlyy.wlyy_message_notice_setting",
    SignFamily:"wlyy.wlyy_sign_family",
    Doctors: "DOCTORS",
    Patients: "PATIENTS",
    P2pMessages: "P2P_MESSAGES",
    MucMessages: "MUC_MESSAGES",
    GroupMessages: "GROUP_MESSAGES",
    SystemMessages: "SYSTEM_MESSAGES",
    Participants: "PARTICIPANTS",
    Sessions: "SESSIONS",
    Topics: "TOPICS",
    StickySessions: "STICKY_SESSIONS",
    WlyyConsult:"WLYY_CONSULTS",
    WlyyConsultTeam:"WLYY_CONSULT_TEAM",
    WlyyConsultS:"WLYY_CONSULT",
    WlyyMessage:"WLYY_MESSAGE",
    MessageNoticeSetting:"WLYY_MESSAGE_NOTICE_SETTING",
    SignFamily:"WLYY_SIGN_FAMILY",
    sessionTypeToTableName: function (sessionType) {
        if (sessionType == SESSION_TYPES.SYSTEM)
@ -260,6 +261,8 @@ const DB_TABLES = {
            return DB_TABLES.MucMessages;
        else if (sessionType == SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO)
            return DB_TABLES.MucMessages;
        else if (sessionType == SESSION_TYPES.MUC_VIDEO)
            return DB_TABLES.MucMessages;
        else throw {message: "Unknown session type"};
    }
};

+ 89 - 76
src/server/models/client/app.client.js

@ -5,13 +5,15 @@
let RedisClient = require('../../repository/redis/redis.client');
let RedisModel = require('./../redis.model');
let AppStatusRepo = require('../../repository/mysql/app.status.repo');
let MessageNoticeSettingRepo = require('../../repository/mysql/message.noticeSetting.repo');
let SignFamilyRepo = require('../../repository/mysql/sign.family.repo');
let AppStatusRepo = require('../../repository/oracle/app.status.repo');
let MessageNoticeSettingRepo = require('../../repository/oracle/message.noticeSetting.repo');
let SignFamilyRepo = require('../../repository/oracle/sign.family.repo');
let ModelUtil = require('../../util/model.util');
let clientCache = require('../socket.io/client.cache').clientCache();
let WlyyAssistantSDK = require("../../util/wlyyAssistant.sdk");
let HlwyyAssistantSDK = require("../../util/hlwyyAssistant.sdk");
let WlyySDK = require("../../util/wlyy.sdk");
let DoctorRepo = require('../../repository/oracle/doctor.repo');
let log = require("../../util/log.js");
let pusher = require('../push/pusher');
@ -23,6 +25,9 @@ const MESSAGE_BUSSINESS_TYPE = require('../../include/commons').MESSAGE_BUSSINES
const REDIS_KEYS = require('../../include/commons').REDIS_KEYS;
const PLATFORMS = require('../../include/commons').PLATFORM;
let configFile = require('../../include/commons').CONFIG_FILE;
let config = require('../../resources/config/' + configFile);
class AppClient extends RedisModel {
    constructor() {
        super();
@ -95,58 +100,64 @@ class AppClient extends RedisModel {
    }
    static sendNotice(targetId, message, sessionType,badge,userStatus){
        //调用接口推送医生助手微信模板
        let param = {
            sessionId:message.session_id||'',
            sessionType:sessionType,
            from:message.sender_id|| '',
            content:message.content,
            contentType:message.content_type,
            businessType:message.businessType || 1,
            doctorCode:targetId
        }
        // let params = 'sessionId='+(message.session_id||'')+'&sessionType='+sessionType+"&from="+(message.sender_id|| '')+'&content='+message.content+'&businessType='+(message.business_type || 1)+'&doctorCode='+targetId;
        // 医生助手有自己的模板消息,不需要通过im发送
        // WlyyAssistantSDK.request('admin', '0a5c5258-8863-4b07-a3f9-88c768528ab4', '', 'admin_imei', '/doctor/feldsher/sendDoctorTemplate', param, function (err, res) {
        //     // WlyySDK.request('admin', '0a5c5258-8863-4b07-a3f9-88c768528ab4', '', 'admin_imei', '/doctor/feldsher/sendDoctorTemplate?' + params, 'GET', function (err, res) {
        //     if(err){
        //         log.error(err);
        //     }else {
        //         log.info(res);
        //     }
        // });
        if (!userStatus) {
            log.warn("User's app status is not found, user id: " + targetId + ", maybe user never login yet or logout?");
            return;
        }
        let tipMessage = CONTENT_TYPES.typeToDescription(parseInt(message.content_type), "您有一条新消息") || message.content;
        let customData = {
            session_id: message.session_id||'',
            session_type: sessionType,
            from: message.sender_id|| '',
            data: message.content,
            business_type: message.business_type || 1
        };
        if (userStatus.platform == PLATFORMS.iOS) {
            pusher.pushToSingleViaAPN(tipMessage, customData, message.content_type, userStatus.device_token,badge, function (err, res) {
                if (err) {
                    ModelUtil.logError("Send notification via APN failed:"+userStatus.device_token, err);
                } else {
                    log.info("Send notification via APN succeed: ", JSON.stringify(res));
                }
            });
        } else if (userStatus.platform == PLATFORMS.Android) {
            let title = '新消息';
            pusher.pushToSingleViaAndroid(title, tipMessage, customData, userStatus.client_id, userStatus.app_in_bg, function (err, res) {
                if (err) {
                    ModelUtil.logError("Send notification via Android failed", err);
                } else {
                    log.info("Send notification via Android succeed: ", JSON.stringify(res));
                }
        let url = config.imClientType.url+"/hlwyy/ims-app-web/#/onlineChat/chatroom?rstitle="+message.sender_name+"%20专家咨询&type=1&sessionId="+message.session_id;
        let messageContent = tipMessage;
        log.info("发送提醒消息给医生--START")
        if("xmijk" == config.imClientType.id){
            log.info("发送提醒消息给医生--xmijk")
        //区域互联网医院
            DoctorRepo.findOne(targetId, function (err, res){
                res.forEach(function (doctorObj) {
                    log.info("doctoridcar:"+doctorObj.idcard)
                    let params = 'sessionId='+(message.session_id||'')+'&sessionType='+sessionType+"&from="+(message.sender_id|| '')+'&content='+encodeURIComponent(message.content)+'&businessType='+(message.business_type || 1)+
                        '&doctor_idcard='+doctorObj.idcard+'&patientName='+encodeURIComponent(message.sender_name)+"&url="+url;
                    //医生助手有自己的模板消息,不需要通过im发送
                    log.info("params"+params);
                    // WlyyAssistantSDK.request('admin', '0a5c5258-8863-4b07-a3f9-88c768528ab4', '', 'admin_imei', '/doctor/feldsher/sendDoctorTemplate', param, function (err, res) {
                    WlyySDK.request('admin', '0a5c5258-8863-4b07-a3f9-88c768528ab4', '', 'admin_imei', '/im/common/message/sendDoctorTemplateByDoctorIdcard?' + params, 'GET', function (err, res) {
                        if(err){
                            log.error(err);
                        }else {
                            log.info(res);
                        }
                    });
                });
            });
        }else if("zsyy" == config.imClientType.id){
            log.info("发送提醒消息给医生--zsyy")
        //中山医院
            //调用接口推送医生助手微信模板
            let param = {
                sessionId:message.session_id||'',
                sessionType:sessionType,
                from:message.sender_id|| '',
                content:message.content,
                contentType:message.content_type,
                businessType:message.businessType || 1,
                doctorCode:targetId
            }
            let params = 'enterpriseId=zsyy&doctor='+targetId+'&content='+encodeURIComponent(messageContent+'[查看详情]('+url+')');
            if(message.type ==1 && message.content.indexOf("relation") >0){
                log.info("该消息是系统提醒消息,不做推送,:消息内容"+message.content)
            }else{
                HlwyyAssistantSDK.request("zsyy",tipMessage,targetId,message.content,url,params, function (err, res) {
                    // WlyyAssistantSDK.request('admin', '0a5c5258-8863-4b07-a3f9-88c768528ab4', '', 'admin_imei', '/doctor/feldsher/sendDoctorTemplate', param, function (err, res) {
                    // WlyySDK.request('admin', '0a5c5258-8863-4b07-a3f9-88c768528ab4', '', 'admin_imei', '/doctor/feldsher/sendDoctorTemplate?' + params, 'GET', function (err, res) {
                    if(err){
                        log.error(err);
                    }else {
                        log.info(res);
                    }
                });
            }
        }
    }
@ -192,31 +203,33 @@ class AppClient extends RedisModel {
                    message.business_type == MESSAGE_BUSSINESS_TYPE.D_CT_06||
                    message.business_type == MESSAGE_BUSSINESS_TYPE.D_CT_07){
                    //是否发送消息
                    MessageNoticeSettingRepo.findOne(targetId,'1',function (err,res) {
                        if(res&&res.length>0){
                            let master_switch = res[0].master_switch;
                            let im_switch = res[0].im_switch;
                            let family_topic_switch = res[0].family_topic_switch;
                            if(master_switch==0||im_switch==0){
                                ModelUtil.logError(targetId+"-关闭im消息,消息id", message.id);
                            }
                            // else if(session_type==SESSION_TYPES.MUC&&family_topic_switch==1){
                            //     SignFamilyRepo.isHealthDoctor(message.session_id,targetId,function (err,res) {
                            //         if(res&&res.length==0){
                            //             ModelUtil.logError("全科医生:"+targetId+"-关闭im消息,消息id", message.id);
                            //         }else{
                            //             AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
                            //         }
                            //     })
                            // }
                            else{
                                AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
                            }
                        }
                    });
                }else{
                    // MessageNoticeSettingRepo.findOne(targetId,'1',function (err,res) {
                    //     if(res&&res.length>0){
                    //         let master_switch = res[0].master_switch;
                    //         let im_switch = res[0].im_switch;
                    //         let family_topic_switch = res[0].family_topic_switch;
                    //         if(master_switch==0||im_switch==0){
                    //             ModelUtil.logError(targetId+"-关闭im消息,消息id", message.id);
                    //         }
                    //         // else if(session_type==SESSION_TYPES.MUC&&family_topic_switch==1){
                    //         //     SignFamilyRepo.isHealthDoctor(message.session_id,targetId,function (err,res) {
                    //         //         if(res&&res.length==0){
                    //         //             ModelUtil.logError("全科医生:"+targetId+"-关闭im消息,消息id", message.id);
                    //         //         }else{
                    //         //             AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
                    //         //         }
                    //         //     })
                    //         // }
                    //         else{
                    //             AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
                    //         }
                    //     }
                    // });
                    AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
                }
                // else{
                //     AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
                // }
            });
        }

+ 142 - 5
src/server/models/client/wechat.client.js

@ -8,16 +8,21 @@ let RedisModel = require('../redis.model');
let ObjectUtil = require("../../util/object.util.js");
let ModelUtil = require('../../util/model.util');
let WechatSDK = require('../../util/wechat.sdk');
let PatientRepo = require('../../repository/mysql/patient.repo');
let TopicRepo = require("../../repository/mysql/topics.repo.js");
let ParticipantRepo = require("../../repository/mysql/participant.repo");
let PatientRepo = require('../../repository/oracle/patient.repo');
let TopicRepo = require("../../repository/oracle/topics.repo.js");
let ParticipantRepo = require("../../repository/oracle/participant.repo");
let redisConn = RedisClient.redisClient().connection;
let clientCache = require('../socket.io/client.cache').clientCache();
let configFile = require('../../include/commons').CONFIG_FILE;
let config = require('../../resources/config/' + configFile);
let log = require("../../util/log.js");
let https = require('https');
let http = require('http');
let async = require('async');
let querystring = require('querystring');
let HlwyyWechatAssistantSDK = require("../../util/hlwyyWechatAssistant.sdk");
var reqq = require('request');
const CONTENT_TYPES = require('../../include/commons').CONTENT_TYPES;
const SESSION_TYPES = require('../../include/commons').SESSION_TYPES;
@ -156,7 +161,10 @@ class WechatClient extends RedisModel {
                }
                if(isSendWXTem){
                    WechatClient.sendViaMessageTemplate(targetUserId, targetUserName, message);
                    //发送第三方接口的微信模版消息
                    WechatClient.sendThirdMessageTemplate(targetUserId, targetUserName, message);
                    //发送厦门i健康的微信模版消息
                    // WechatClient.sendViaMessageTemplate(targetUserId, targetUserName, message);
                }
            }
@ -871,7 +879,136 @@ class WechatClient extends RedisModel {
            .catch(function (err) {
                log.error("Update participant last fetch time failed: ", err);
            });
    }
    };
    /**
     * 发送第三方接口的微信模版消息
     * @param targetUserId
     * @param message
     */
    static sendThirdMessageTemplate(targetUserId, targetUserName, message) {
        async.waterfall([
                // 获取微信openid
                function (callback) {
                    PatientRepo.findOne(targetUserId, function (err, res) {
                        if (err) {
                            ModelUtil.logError("Get wechat openid failed", err);
                            return;
                        }
                        var map = new Map();
                        res.forEach(function (participant) {
                            let openid = participant.openid;
                            let idcard = participant.idcard;
                            let mobile = participant.mobile;
                            let name = participant.name;
                            let id = participant.id;
                            map.set("openid",openid);
                            map.set("idcard",idcard);
                            map.set("mobile",mobile);
                            map.set("name",name);
                            map.set("id",id);
                        })
                        //
                        // let openid = result && result.length > 0 ? result[0].openid : null;
                        // if (!openid) {
                        //     ModelUtil.logError("User haven't bound with wechat, user id: " + targetUserId);
                        //     return;
                        // }
                        //
                        // log.warn("Send via wechat message template, user id: " + targetUserId + ", openid: " + openid);
                        callback(null, map);
                    });
                },
                // 获取议题信息
                function (map, callback) {
                    TopicRepo.findLastTopicStatusAndType(message.session_id, function (err, res) {
                        if (err) {
                            ModelUtil.logError("Get topic failed", err);
                            return;
                        }
                        if (!res || res.length == 0) {
                            ModelUtil.logError("Unable to find session last topic");
                            return;
                        }
                        callback(null, map, message.sender_name, res[0]);
                    });
                },
                // 发送消息
                function (map, senderName, topic,callback) {
                    let replyContent = message.content;
                    switch (Number.parseInt(message.content_type)) {
                        case CONTENT_TYPES.Image:
                            replyContent = "[图片]";
                            break;
                        case CONTENT_TYPES.Audio:
                            replyContent = "[语音]";
                            break;
                        default:
                            break;
                    }
                    let consultTitle = null;
                    let description = null;
                    let url = config.thirdApiMessageConfig.baseUrl;
                    switch (topic.type) {
                        case 8:
                            consultTitle = "续方";
                            description  = "续方咨询";
                            url = url + "/wx/html/yszx/html/prescription-consulting.html";
                        case 11:
                            consultTitle = "上门服务";
                            description  = "上门服务咨询";
                            url = url + "wx/html/appoint_service/html/appoint-serviceDetail.html";
                        default:
                            consultTitle = "咨询回复提醒";
                            description  = topic.description;
                            if("xmijk" == config.imClientType.id){
                                url = "http://zb.xmtyw.cn/ims-wx/index.html#/chatRoom?type=1&consultCode="+topic.id;
                            }else if("zsyy" == config.imClientType.id){
                                url = "http://hlwyy.xmzsh.com/ims-wx/index.html#/chatRoom?type=1&consultCode="+topic.id;
                            }else{}
                    }
                    // 发送模板消息
                    if(map != null){
                        let userName = map.get("name");
                        let idCard = map.get("idcard");
                        let phone = map.get("mobile");
                        let title = consultTitle;
                        let content = "您的咨询有新的回复";
                        let contentString = replyContent;
                        // log.info("推送居民公众号:params:"+params)
                        let params = 'senderName='+encodeURIComponent(senderName)+'&userName='+encodeURIComponent(userName)+'&idCard='+idCard+"&phone="+phone+'&title='+encodeURIComponent(consultTitle)+'&content='+encodeURIComponent(description)+'&contentString='+encodeURIComponent(contentString)+'&url='+encodeURIComponent(url);
                        HlwyyWechatAssistantSDK.request(userName,idCard,phone,title,content,contentString,url,params, function (err, res) {
                            // WlyyAssistantSDK.request('admin', '0a5c5258-8863-4b07-a3f9-88c768528ab4', '', 'admin_imei', '/doctor/feldsher/sendDoctorTemplate', param, function (err, res) {
                            // WlyySDK.request('admin', '0a5c5258-8863-4b07-a3f9-88c768528ab4', '', 'admin_imei', '/doctor/feldsher/sendDoctorTemplate?' + params, 'GET', function (err, res) {
                            if(err){
                                log.error(err);
                            }else {
                                log.info(res);
                            }
                        });
                    }
                    callback(null, null);
                }
            ],
            function (err, res) {
                if (!err) {
                    log.info("Send via wechat template message, DONE!");
                }
            });
    };
}
module.exports = WechatClient;

+ 4 - 4
src/server/models/doctor/doctors.js

@ -6,10 +6,10 @@
 */
"use strict";
let BaseModel = require('../base.model');
let ImDb = require('../../repository/mysql/db/im.db');
let ParticipantRepo = require('../../repository/mysql/participant.repo');
let DoctorRepo = require('../../repository/mysql/doctor.repo');
let SessionRepo = require('../../repository/mysql/session.repo');
let ImDb = require('../../repository/oracle/db/im.db');
let ParticipantRepo = require('../../repository/oracle/participant.repo');
let DoctorRepo = require('../../repository/oracle/doctor.repo');
let SessionRepo = require('../../repository/oracle/session.repo');
let ModelUtil = require('../../util/model.util');
let ObjectUtil = require("../../util/object.util.js");
let async = require('async');

+ 3 - 3
src/server/models/messages/messages.js

@ -3,10 +3,10 @@
 */
"use strict";
let MessageRepo = require('../../repository/mysql/message.repo');
let MessageRepo = require('../../repository/oracle/message.repo');
let RedisModel = require('./../redis.model.js');
let SessionRepo = require('../../repository/mysql/session.repo');
let ParticipantRepo = require('../../repository/mysql/participant.repo');
let SessionRepo = require('../../repository/oracle/session.repo');
let ParticipantRepo = require('../../repository/oracle/participant.repo');
let RedisClient = require('../../repository/redis/redis.client.js');
let ModelUtil = require('../../util/model.util');
var ObjectUtil = require("../../util/object.util.js");

+ 1 - 1
src/server/models/migration/migration.js

@ -6,7 +6,7 @@
 */
'use strict';
let ImDb = require('../../repository/mysql/db/im.db');
let ImDb = require('../../repository/oracle/db/im.db');
let ObjectUtil = require("../../util/object.util.js");
let DbUtil = require("../../util/db.util.js");

+ 8 - 8
src/server/models/migration/migration.redis.js

@ -2,14 +2,14 @@
let RedisClient = require('../../repository/redis/redis.client');
let RedisModel = require('../redis.model');
let ImDb = require('../../repository/mysql/db/im.db');
let ParticipantRepo = require('../../repository/mysql/participant.repo');
let DoctorRepo = require('../../repository/mysql/doctor.repo');
let PatientRepo = require('../../repository/mysql/patient.repo');
let SessionRepo = require('../../repository/mysql/session.repo');
let MessageRepo = require('../../repository/mysql/message.repo');
let TopicRepo = require('../../repository/mysql/topics.repo');
let AppStatusRepo = require('../../repository/mysql/app.status.repo');
let ImDb = require('../../repository/oracle/db/im.db');
let ParticipantRepo = require('../../repository/oracle/participant.repo');
let DoctorRepo = require('../../repository/oracle/doctor.repo');
let PatientRepo = require('../../repository/oracle/patient.repo');
let SessionRepo = require('../../repository/oracle/session.repo');
let MessageRepo = require('../../repository/oracle/message.repo');
let TopicRepo = require('../../repository/oracle/topics.repo');
let AppStatusRepo = require('../../repository/oracle/app.status.repo');
let ModelUtil = require('../../util/model.util');
let ObjectUtil = require("../../util/object.util.js");
let Patient = require('../user/patient');

+ 1 - 1
src/server/models/migration/migration.topics.js

@ -6,7 +6,7 @@
 */
'use strict';
let ImDb = require('../../repository/mysql/db/im.db');
let ImDb = require('../../repository/oracle/db/im.db');
let ObjectUtil = require("../../util/object.util.js");
let DbUtil = require("../../util/db.util.js");

+ 2 - 2
src/server/models/redis/pubSub.js

@ -28,8 +28,8 @@ let Messages = require('../messages/messages');
const REDIS_KEYS = require('../../include/commons').REDIS_KEYS;
let ObjectUtil = require("../../util/object.util.js");
let logger = require('../../util/log.js');
let SessionRepo = require('../../repository/mysql/session.repo');
let ParticipantRepo = require('../../repository/mysql/participant.repo');
let SessionRepo = require('../../repository/oracle/session.repo');
let ParticipantRepo = require('../../repository/oracle/participant.repo');
const SESSION_TYPES = require('../../include/commons').SESSION_TYPES;
const SESSION_BUSINESS_TYPE = require('../../include/commons').SESSION_BUSINESS_TYPE;

+ 12 - 5
src/server/models/sessions/sessions.js

@ -141,6 +141,7 @@ class Sessions extends RedisModel {
                SESSION_TYPES.GUIDANCE_HOSPITAL ||
                SESSION_TYPES.GENERAL_EXPERT ||
                SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO ||
                SESSION_TYPES.MUC_VIDEO ||
                SESSION_TYPES.ONDOOR_NURSING){
                callCreate(sessionId, SESSION_BUSINESS_TYPE.PATIENT);
            }else if(type==SESSION_TYPES.DISCUSSION||type==SESSION_TYPES.GROUP){
@ -163,6 +164,7 @@ class Sessions extends RedisModel {
                    SESSION_TYPES.GUIDANCE_HOSPITAL ||
                    SESSION_TYPES.GENERAL_EXPERT ||
                    SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO ||
                    SESSION_TYPES.MUC_VIDEO ||
                    SESSION_TYPES.ONDOOR_NURSING) {
                    businessType = 2;
                }
@ -227,6 +229,7 @@ class Sessions extends RedisModel {
                SESSION_TYPES.GUIDANCE_HOSPITAL ||
                SESSION_TYPES.GENERAL_EXPERT ||
                SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO ||
                SESSION_TYPES.MUC_VIDEO ||
                SESSION_TYPES.ONDOOR_NURSING){
                callCreateSession(SESSION_BUSINESS_TYPE.PATIENT);
            }else if(type==SESSION_TYPES.SPECIALISTGROUP||type==SESSION_TYPES.DISCUSSION){
@ -1264,6 +1267,7 @@ class Sessions extends RedisModel {
                                            SESSION_TYPES.GUIDANCE_HOSPITAL ||
                                            SESSION_TYPES.GENERAL_EXPERT ||
                                            SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO ||
                                            SESSION_TYPES.MUC_VIDEO ||
                                            SESSION_TYPES.ONDOOR_NURSING){
                                            for(var j in users){
                                                if(users[j]==userId)continue;
@ -1304,6 +1308,7 @@ class Sessions extends RedisModel {
                                            SESSION_TYPES.GUIDANCE_HOSPITAL ||
                                            SESSION_TYPES.GENERAL_EXPERT ||
                                            SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO ||
                                            SESSION_TYPES.MUC_VIDEO ||
                                            SESSION_TYPES.ONDOOR_NURSING){
                                            for(var j in users){
                                                if(users[j]==userId)continue;
@ -1591,6 +1596,7 @@ class Sessions extends RedisModel {
                        SESSION_TYPES.GUIDANCE_HOSPITAL ||
                        SESSION_TYPES.GENERAL_EXPERT ||
                        SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO ||
                        SESSION_TYPES.MUC_VIDEO ||
                        SESSION_TYPES.ONDOOR_NURSING){
                        if(message.content_type == CONTENT_TYPES.PlainText ||
                           message.content_type == CONTENT_TYPES.Image ||
@ -1943,11 +1949,11 @@ class Sessions extends RedisModel {
                let count = 0;
                //系统消息
                MessageRepo.getWlyyMessageCount(targetUserId,function (err,res) {
                    if(res){
                        count = res[0].count;
                    }
                });
                // MessageRepo.getWlyyMessageCount(targetUserId,function (err,res) {
                //     if(res){
                //         count = res[0].count;
                //     }
                // });
                //im消息
                let sessions = new Sessions();
                sessions.getAllSessionsUnreadMessageCount(targetUserId,null,function (err,res) {
@ -1957,6 +1963,7 @@ class Sessions extends RedisModel {
                });
                if(config.environment!='local'){//pc版不推送个推,通过redis的publish
                    log.info("推送医生智能助手")
                    AppClient.sendNotification(targetUserId, message,sessionType,count);
                }
                //外网pcim通过socket推送

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

@ -272,6 +272,7 @@ class Topics extends RedisModel {
                SESSION_TYPES.GUIDANCE_HOSPITAL ||
                SESSION_TYPES.GENERAL_EXPERT ||
                SESSION_TYPES.PRESCRIPTION_HOSPITAL_VIDEO ||
                SESSION_TYPES.MUC_VIDEO ||
                SESSION_TYPES.ONDOOR_NURSING)) {
            ModelUtil.emitOK(self.eventEmitter, {status: -1, message: "会话ID为空,请先生成会话ID"});
            return;

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

@ -8,14 +8,14 @@
let RedisClient = require('../../repository/redis/redis.client');
let RedisModel = require('../redis.model');
let ImDb = require('../../repository/mysql/db/im.db');
let ParticipantRepo = require('../../repository/mysql/participant.repo');
let DoctorRepo = require('../../repository/mysql/doctor.repo');
let PatientRepo = require('../../repository/mysql/patient.repo');
let SessionRepo = require('../../repository/mysql/session.repo');
let MessageRepo = require('../../repository/mysql/message.repo');
let TopicRepo = require('../../repository/mysql/topics.repo');
let AppStatusRepo = require('../../repository/mysql/app.status.repo');
let ImDb = require('../../repository/oracle/db/im.db');
let ParticipantRepo = require('../../repository/oracle/participant.repo');
let DoctorRepo = require('../../repository/oracle/doctor.repo');
let PatientRepo = require('../../repository/oracle/patient.repo');
let SessionRepo = require('../../repository/oracle/session.repo');
let MessageRepo = require('../../repository/oracle/message.repo');
let TopicRepo = require('../../repository/oracle/topics.repo');
let AppStatusRepo = require('../../repository/oracle/app.status.repo');
let ModelUtil = require('../../util/model.util');
let ObjectUtil = require("../../util/object.util.js");
let Patient = require('./patient');

+ 1 - 0
src/server/package.json

@ -22,6 +22,7 @@
    "morgan": "~1.5.3",
    "mysql": "~2.5.3",
    "node-schedule": "^1.2.0",
    "oracledb": "^4.2.0",
    "redis": "^2.6.3",
    "request": "^2.79.0",
    "serve-favicon": "~2.2.1",

+ 1 - 1
src/server/repository/mysql/doctor.repo.js

@ -14,7 +14,7 @@ class DoctorRepo {
    static findOne(doctorId, handler) {
        ImDb.execQuery({
            "sql": "select id, name, sex, birthdate, avatar from doctors where id = ? ",
            "sql": "select id, name, sex, birthdate, avatar ,idcard from doctors where id = ? ",
            "args": [doctorId],
            "handler": handler
        });

+ 1 - 1
src/server/repository/mysql/patient.repo.js

@ -16,7 +16,7 @@ class PatientRepo {
    static findOne(patientId, handler){
        ImDb.execQuery({
            "sql": "select id, name, sex, birthdate, avatar, openid from patients where id = ? ",
            "sql": "select id, name, sex, birthdate, avatar, openid, idcard,mobile from patients where id = ? ",
            "args": [patientId],
            "handler": handler
        });

+ 4 - 2
src/server/repository/mysql/session.repo.js

@ -141,6 +141,7 @@ class SessionRepo {
     * @param handler
     */
    static findListByType(userId, type,page,pagesize, status,handler) {
        log.info("type="+type);
        if (page > 0) {
            if (page == 1) {
                page = 0;
@ -151,16 +152,17 @@ class SessionRepo {
        let sql = "select session_id from " + DB_TABLES.Participants + " w where w.participant_id in(?) 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 "
            + DB_TABLES.Sessions + " s where s.id in(" + sql + ") and s.type=? ";
            + DB_TABLES.Sessions + " s where s.id in(" + sql + ") and s.type in("+type+") ";
        if(status != null && status != ""){
            sessionSQL += " and s.status="+status
        }
        sessionSQL +=  " order by s.last_message_time desc limit "+page+","+pagesize;
        log.info(sessionSQL)
        ImDb.execQuery({
            "sql": sessionSQL,
            "args": [userId, type],
            "args": [userId],
            "handler": handler || function (err, res) {
                if(err) log.error(err);
            }

+ 1 - 1
src/server/repository/mysql/topics.repo.js

@ -304,7 +304,7 @@ class TopicRepo {
    }
    static findTopicStatusAndType(topicId, handler) {
        let sql = "select t.id, t.name, t.description, t.status,t.agent,c.type from topics t,wlyy.wlyy_consult c where t.id = ? and t.id = c.code";
        let sql = "select t.id, t.name, t.description, t.status,t.agent,c.type from topics t,base.wlyy_consult c where t.id = ? and t.id = c.id";
        ImDb.execQuery({
            sql: sql,

+ 23 - 0
src/server/repository/oracle/db/im.db.js

@ -0,0 +1,23 @@
/**
 * IM db数据库 oracle
 * huangwenjie
 */
"use strict";
var configFile = require('../../../include/commons').CONFIG_FILE;
var config =  require('../../../resources/config/' + configFile);
var oracledb = require('oracledb')
var dbUtil = require('../../../util/db.util');
var pool = oracledb.createPool(config.imDbConfig);
class ImDb {
    constructor() {
    }
    static execQuery (options) {
        dbUtil.execQuery(pool, options);
    };
}
module.exports = ImDb;

+ 26 - 0
src/server/resources/config/config.prod.js

@ -65,6 +65,23 @@ let wechatConfig = {
    }
};
//  第三方微信(模版消息/个推消息)接口配置
//中山医院
let thirdApiMessageConfig = {
    host: '172.16.1.42',
    port: 10023,
    model:"/mqsdk",
    enpoint :"/ehospitalNotice"
};
//企业微信模版消息
let hlwyyDAServerConfig = {
    host: '172.16.1.42',
    port: 10023,
    model:"/enterprise",
    enpoint :"/sendMKMesByDoctor"
};
// 会话配置
let sessionConfig = {
    maxMessageCount: 1000,                  // 会话缓存的消息数量
@ -80,6 +97,12 @@ let topicConfig = {
    TERMINATING_CRON: "* 59 * * * *"        // 议题自动关闭的任务执行时间间隔
};
//IM 客户端医院参数配置
let imClientType = {
    id : "zsyy",
    url : "https://hlwyy.xmzsh.com"
}
exports.environment = 'prod';
exports.pubChannel = 'phone_to_pc';
exports.subChannel = 'pc_to_phone';
@ -99,6 +122,9 @@ exports.innerRedisConfig = innerRedisConfig;
exports.getTuiConfig = getTuiConfig;
exports.wlyyServerConfig = wlyyServerConfig;
exports.wlyyDAServerConfig = wlyyDAServerConfig;
exports.hlwyyDAServerConfig = hlwyyDAServerConfig;
exports.wechatConfig = wechatConfig;
exports.thirdApiMessageConfig = thirdApiMessageConfig;
exports.sessionConfig = sessionConfig;
exports.topicConfig = topicConfig;
exports.imClientType = imClientType;

+ 131 - 0
src/server/resources/config/config.prod_xmijk.js

@ -0,0 +1,131 @@
"use strict";
let imDbConfig = {
    host: '59.61.92.90',
    user: 'wlyy',
    port: 9409,
    password: 'qY#j2n5O',
    database: 'im',
    connectionLimit: '100',
    charset : 'utf8mb4'
};
// Redis
let redisConfig = {
    host: '59.61.92.90',
    port: 9206,
    db: 1,
    password:'jkzlehr'
};
// let redisConfig = {
//     host: '192.0.33.26',
//     port: 6380,
//     db: 1,
//     password:'Kb6wKDQP1W4'
// };
// 内网Redis
let innerRedisConfig = {
    host: '192.0.33.26',
    port: 6390,
    db: 1,
    password:'Kb6wKDQP1W4'
};
// 三师后台
let wlyyServerConfig = {
    host: 'www.xmtyw.cn',
    port: 80,
    model:"/wlyytest"
};
//医生助手配置
let wlyyDAServerConfig = {
    host: '192.168.120.167',
    port: 5550,
    model:"/assistant"
};
// 个推AppStore版参数
let getTuiConfig = {
    HOST: 'https://api.getui.com/apiex.htm',
    APPID: 'qWmRh2X88l7HuE36z3qBe8',
    APPKEY: 'EzERfV8c849lBkZqHWzQG1',
    MASTERSECRET: 'veXiajQrId6iojy7Qv8kZ2'
};
// 微信配置
let wechatConfig = {
    appId: 'wxad04e9c4c5255acf',
    appSecret: 'ae77c48ccf1af5d07069f5153d1ac8d3',
    token: '27eb3bb24f149a7760cf1bb154b08040',
    accId: 'gh_ffd64560fb21',
    baseUrl: 'www.xmtyw.cn/wlyy',
    template: {
        consultTemplate: '0mF_vHj-ILx8EH8DwzmAi7LqzjqYiU9IrSRRmziTZyc'  // 咨询回复模板
    }
};
//  第三方微信(模版消息/个推消息)接口配置
//  区域互联网医院
let thirdApiMessageConfig = {
    host: 'www.xmtyw.cn',
    port: 80,
    model:"/wlyytest",
    enpoint :"/im/common/message/sendWxTemple"
};
//企业微信模版消息
let hlwyyDAServerConfig = {
    host: '172.16.1.42',
    port: 10023,
    model:"/enterprise",
    enpoint :"/sendMKMesByDoctor"
};
// 会话配置
let sessionConfig = {
    maxMessageCount: 1000,                  // 会话缓存的消息数量
    maxMessageTimespan: 7 * 24 * 3600,      // 会话缓存的最大时间跨度
    expireTime: 3 * 60 * 60 * 1000,         // 会话过期时间,以毫秒计
    expireSessionCleanCount: 10             // 每次清理多少个过期会话
};
//IM 客户端医院参数配置
let imClientType = {
    id : "xmijk",
    url : "http://zb.xmtyw.com",
}
// 议题配置
let topicConfig = {
    TTL: 24,                                // 议题的存活时间,TTL = Time To Live
    TERMINATING_CRON: "* 59 * * * *"        // 议题自动关闭的任务执行时间间隔
};
exports.environment = 'prod';
exports.pubChannel = 'phone_to_pc';
exports.subChannel = 'pc_to_phone';
exports.pubSubSwitch = true;
exports.app = 'im.server';
exports.version = '2.0.0';
exports.debug = true;
exports.serverPort = 16000;
exports.sessionExpire = 1800;
exports.showSQL = false;
exports.imDbConfig = imDbConfig;
exports.redisConfig = redisConfig;
exports.innerRedisConfig = innerRedisConfig;
exports.getTuiConfig = getTuiConfig;
exports.wlyyServerConfig = wlyyServerConfig;
exports.wlyyDAServerConfig = wlyyDAServerConfig;
exports.hlwyyDAServerConfig = hlwyyDAServerConfig;
exports.wechatConfig = wechatConfig;
exports.thirdApiMessageConfig = thirdApiMessageConfig;
exports.sessionConfig = sessionConfig;
exports.topicConfig = topicConfig;
exports.imClientType = imClientType;

+ 104 - 0
src/server/resources/config/config.prod_xzzx.js

@ -0,0 +1,104 @@
"use strict";
let imDbConfig = {
    host: '192.168.103.155',
    user: 'jkzl',
    port:7306,
    password: 'jkzl@2020',
    database: 'im',
    connectionLimit: '100',
    charset : 'utf8mb4'
};
// Redis
let redisConfig = {
    host: '192.168.103.158',
    port: 6380,
    db: 1,
    password:'q4YaQemf'
};
// let redisConfig = {
//     host: '192.0.33.26',
//     port: 6380,
//     db: 1,
//     password:'Kb6wKDQP1W4'
// };
// 内网Redis
let innerRedisConfig = {
    host: '192.0.33.26',
    port: 6390,
    db: 1,
    password:'Kb6wKDQP1W4'
};
// 三师后台
let wlyyServerConfig = {
    host: 'www.xmtyw.cn',
    port: 80,
    model:"/wlyy"
};
//医生助手配置
let wlyyDAServerConfig = {
    host: '192.168.120.167',
    port: 5550,
    model:"/assistant"
};
// 个推AppStore版参数
let getTuiConfig = {
    HOST: 'https://api.getui.com/apiex.htm',
    APPID: 'qWmRh2X88l7HuE36z3qBe8',
    APPKEY: 'EzERfV8c849lBkZqHWzQG1',
    MASTERSECRET: 'veXiajQrId6iojy7Qv8kZ2'
};
// 微信配置
let wechatConfig = {
    appId: 'wxad04e9c4c5255acf',
    appSecret: 'ae77c48ccf1af5d07069f5153d1ac8d3',
    token: '27eb3bb24f149a7760cf1bb154b08040',
    accId: 'gh_ffd64560fb21',
    baseUrl: 'www.xmtyw.cn/wlyy',
    template: {
        consultTemplate: '0mF_vHj-ILx8EH8DwzmAi7LqzjqYiU9IrSRRmziTZyc'  // 咨询回复模板
    }
};
// 会话配置
let sessionConfig = {
    maxMessageCount: 1000,                  // 会话缓存的消息数量
    maxMessageTimespan: 7 * 24 * 3600,      // 会话缓存的最大时间跨度
    expireTime: 3 * 60 * 60 * 1000,         // 会话过期时间,以毫秒计
    expireSessionCleanCount: 10             // 每次清理多少个过期会话
};
// 议题配置
let topicConfig = {
    TTL: 24,                                // 议题的存活时间,TTL = Time To Live
    TERMINATING_CRON: "* 59 * * * *"        // 议题自动关闭的任务执行时间间隔
};
exports.environment = 'prod';
exports.pubChannel = 'phone_to_pc';
exports.subChannel = 'pc_to_phone';
exports.pubSubSwitch = true;
exports.app = 'im.server';
exports.version = '2.0.0';
exports.debug = true;
exports.serverPort = 3000;
exports.sessionExpire = 1800;
exports.showSQL = false;
exports.imDbConfig = imDbConfig;
exports.redisConfig = redisConfig;
exports.innerRedisConfig = innerRedisConfig;
exports.getTuiConfig = getTuiConfig;
exports.wlyyServerConfig = wlyyServerConfig;
exports.wlyyDAServerConfig = wlyyDAServerConfig;
exports.wechatConfig = wechatConfig;
exports.sessionConfig = sessionConfig;
exports.topicConfig = topicConfig;

+ 62 - 0
src/server/util/hlwyyAssistant.sdk.bak.js

@ -0,0 +1,62 @@
/**
 * 简易互联网医院 企业微信消息推送 SDK,提供互联网医院 企业微信消息推送接口调用。
 */
'use strict';
let http = require('http');
let querystring = require('querystring');
let configFile = require('../include/commons').CONFIG_FILE;
let config = require('../resources/config/' + configFile);
let log = require('./log.js');
class HlwyyAssistantSDK {
    constructor(){}
    static request(enterpriseId,title,doctor,description,url, params,handler){
        // let userAgent = {
        //     admin_token: adminToken,
        //     token: token,
        //     uid: userId,
        //     imei: imei
        // };
        var postData=querystring.stringify(params);
        let options = {
            hostname: config.hlwyyDAServerConfig.host,
            port: config.hlwyyDAServerConfig.port,
            path: config.hlwyyDAServerConfig.model+config.hlwyyDAServerConfig.enpoint+"?"+params,
            method: 'POST',
            headers: {
                // 'userAgent': JSON.stringify(userAgent),
                'Content-Type': 'application/x-www-form-urlencoded;text/html;charset=utf-8'
                // 'Content-Type': 'application/json;charset=UTF-8'
            }
            // ,
            // body:JSON.stringify({enterpriseId:enterpriseId,
            //     title:title,
            //     doctor:doctor,
            //     description:description,
            //     url:url})
        };
        let req = http.request(options, function (res) {
            res.setEncoding('utf-8');
            res.on('data', function (chunk) {
                log.info('企业微信消息推送->请求成功:', chunk);
                handler(null, chunk);
            });
        });
        req.on('error', function (err) {
            log.error('企业微信消息推送->请求失败: ', err.message);
            handler(err, null);
        });
        req.write(postData);
        req.end();
    }
}
module.exports = HlwyyAssistantSDK;

+ 95 - 0
src/server/util/hlwyyAssistant.sdk.js

@ -0,0 +1,95 @@
/**
 * 简易互联网医院 企业微信消息推送 SDK,提供互联网医院 企业微信消息推送接口调用。
 */
'use strict';
let http = require('http');
var reqq = require('request');
let querystring = require('querystring');
let configFile = require('../include/commons').CONFIG_FILE;
let config = require('../resources/config/' + configFile);
let log = require('./log.js');
class HlwyyAssistantSDK {
    constructor(){}
    static request(enterpriseId,title,doctor,description,url, params,handler){
        log.info("1:"+enterpriseId)
        log.info("2:"+title)
        log.info("3:"+doctor)
        log.info("4:"+description)
        log.info("5:"+url)
        // let userAgent = {
        //     admin_token: adminToken,
        //     token: token,
        //     uid: userId,
        //     imei: imei
        // };
        // var postData=querystring.stringify(params);
        //
        // let options = {
        //     hostname: config.hlwyyDAServerConfig.host,
        //     port: config.hlwyyDAServerConfig.port,
        //     path: config.hlwyyDAServerConfig.model+config.hlwyyDAServerConfig.enpoint+"?"+params,
        //     method: 'POST',
        //     headers: {
        //         // 'userAgent': JSON.stringify(userAgent),
        //         'Content-Type': 'application/x-www-form-urlencoded;text/html;charset=utf-8'
        //         // 'Content-Type': 'application/json;charset=UTF-8'
        //     }
            // ,
            // body:JSON.stringify({enterpriseId:enterpriseId,
            //     title:title,
            //     doctor:doctor,
            //     description:description,
            //     url:url})
        // };
        //
        // let requestData= JSON.stringify({enterpriseId:enterpriseId,
        //         title:title,
        //         doctor:doctor,
        //         description:description,
        //         url:url})
        reqq({
            url: "http://"+config.hlwyyDAServerConfig.host+":"+config.hlwyyDAServerConfig.port+config.hlwyyDAServerConfig.model+config.hlwyyDAServerConfig.enpoint+"?"+params,
            method: "POST",
            json: true,
            headers: {
                "content-type": "application/json",
            },
            body: params
        }, function(error, response, body) {
            if (!error && response.statusCode == 200) {
                log.info('企业微信消息推送->请求成功:', body);
                // console.log(body) // 请求成功的处理逻辑
            }else{
                log.error('企业微信消息推送->请求失败: ', error.message);
            }
        });
        //
        //
        // let req = http.request(options, function (res) {
        //     res.setEncoding('utf-8');
        //     res.on('data', function (chunk) {
        //         log.info('企业微信消息推送->请求成功:', chunk);
        //
        //         handler(null, chunk);
        //     });
        // });
        //
        // req.on('error', function (err) {
        //     log.error('企业微信消息推送->请求失败: ', err.message);
        //
        //     handler(err, null);
        // });
        // req.write(postData);
        // req.end();
    }
}
module.exports = HlwyyAssistantSDK;

+ 46 - 0
src/server/util/hlwyyWechatAssistant.sdk.js

@ -0,0 +1,46 @@
/**
 * 简易互联网医院 企业微信消息推送 SDK,提供互联网医院 企业微信消息推送接口调用。
 */
'use strict';
let http = require('http');
var wechatreqq = require('request');
let querystring = require('querystring');
let configFile = require('../include/commons').CONFIG_FILE;
let config = require('../resources/config/' + configFile);
let log = require('./log.js');
class HlwyyWechatAssistantSDK {
    constructor(){}
    static request(userName,idCard,phone,title,contentSrt,contentStringStr,url,params,handler){
        log.info("1:"+userName)
        log.info("2:"+idCard)
        log.info("3:"+phone)
        log.info("4:"+title)
        log.info("5:"+contentSrt)
        log.info("6:"+contentStringStr)
        log.info("7:"+params)
        log.info("8:"+"http://"+config.thirdApiMessageConfig.host+":"+config.thirdApiMessageConfig.port+config.thirdApiMessageConfig.model+config.thirdApiMessageConfig.enpoint+"?"+params)
        wechatreqq({
            url: "http://"+config.thirdApiMessageConfig.host+":"+config.thirdApiMessageConfig.port+config.thirdApiMessageConfig.model+config.thirdApiMessageConfig.enpoint+"?"+params,
            json: true,
            headers: {
                "content-type": "application/json",
            },
            method: 'POST',
            body: JSON.stringify(params)
        }, function(error, response, body) {
            if (!error && response.statusCode == 200) {
                log.info('请求居民微信模版消息接口发送模版消息->请求成功:', body);
                // console.log(body) // 请求成功的处理逻辑
            }else{
                // log.error('请求居民微信模版消息发送模版消息->请求失败:', body.toString());
                // log.error('请求居民微信模版消息发送模版消息->请求失败:', response.toString());
                log.error('请求居民微信模版消息发送模版消息->请求失败:', error.message);
            }
        });
    }
}
module.exports = HlwyyWechatAssistantSDK;

+ 1 - 1
src/server/util/wechat.sdk.js

@ -6,7 +6,7 @@
 */
"use strict";
let WechatTokenRepo = require('../repository/mysql/wechat.token.repo.js');
let WechatTokenRepo = require('../repository/oracle/wechat.token.repo.js');
let configFile = require('../include/commons').CONFIG_FILE;
let config = require('../resources/config/' + configFile);

+ 7 - 0
src/server/util/wlyy.sdk.js

@ -12,6 +12,12 @@ class WlyySDK {
    constructor(){}
    static request(userId, adminToken, token, imei, endpoint, method, handler){
        log.info("userId:"+userId);
        log.info("adminToken:"+adminToken);
        log.info("token:"+token);
        log.info("imei:"+imei);
        log.info("endpoint:"+endpoint);
        log.info("method:"+method);
        let userAgent = {
            admin_token: adminToken,
            token: token,
@ -30,6 +36,7 @@ class WlyySDK {
        };
        let req = http.request(options, function (res) {
            log.info("请求参数,options"+options.toString())
            res.setEncoding('utf-8');
            res.on('data', function (chunk) {
                log.info('家庭医生平台->请求成功:', chunk);