Browse Source

代码修改

yeshijie 7 years ago
parent
commit
6b5298ad34

+ 72 - 61
src/server/models/client/app.client.js

@ -92,6 +92,61 @@ 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;
        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));
                }
            });
        }
    }
    /**
     * 向App端推送消息。指令性消息不推。
     *
@ -112,13 +167,14 @@ class AppClient extends RedisModel {
                    ModelUtil.logError("Get user app status failed", err);
                    return;
                }
                if(sessionType==SESSION_TYPES.SYSTEM||
                    sessionType==SESSION_TYPES.MUC||
                    sessionType==SESSION_TYPES.P2P||
                    sessionType==SESSION_TYPES.GROUP||
                    sessionType==SESSION_TYPES.DISCUSSION||
                    sessionType==SESSION_TYPES.PRESCRIPTION){
                var isSend = true;
                var session_type = isNaN(Number(sessionType))?sessionType:Number(sessionType);
                if(session_type==SESSION_TYPES.SYSTEM||
                    session_type==SESSION_TYPES.MUC||
                    session_type==SESSION_TYPES.P2P||
                    session_type==SESSION_TYPES.GROUP||
                    session_type==SESSION_TYPES.DISCUSSION||
                    session_type==SESSION_TYPES.PRESCRIPTION){
                    //是否发送消息
                    MessageNoticeSettingRepo.findOne(targetId,'1',function (err,res) {
                        if(res&&res.length>0){
@ -127,17 +183,21 @@ class AppClient extends RedisModel {
                            let family_topic_switch = res[0].family_topic_switch;
                            if(master_switch==0||im_switch==0){
                                ModelUtil.logError(targetId+"-关闭im消息,消息id", message.id);
                                return;
                            }else if(sessionType==SESSION_TYPES.MUC&&family_topic_switch==0){
                            }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);
                                        return;
                                    }else{
                                        AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
                                    }
                                })
                            }else{
                                AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
                            }
                        }
                    });
                }else{
                    AppClient.sendNotice(targetId, message, sessionType,badge,userStatus)
                }
                // let pc_doctorClient = clientCache.findByIdAndType("pc_"+targetId,SOCKET_TYPES.PC_DOCTOR);
@ -145,61 +205,12 @@ class AppClient extends RedisModel {
                //     log.warn("User's pc is online, user id: " + targetId + ", we cannot send getui.");
                //     return;
                // }
                //调用接口推送医生助手微信模板
                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;
                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));
                        }
                    });
                }
            });
        }
    }
}
// Expose class

+ 1 - 1
src/server/repository/mysql/message.noticeSetting.repo.js

@ -23,7 +23,7 @@ class MessageNoticeSettingRepo{
     * return  master_switch 总开关(1开,0关)',im_switch im消息开关(1开,0关)',family_topic_switch 健管师邀请后推送开关(1开,0关)',
     */
    static findOne(user,type, handler) {
        let sql = "select master_switch,im_switch,family_topic_switch from " + DB_TABLES.MessageNoticeSetting + " s where s.user = ? and s.type=? ";
        let sql = "select master_switch,im_switch,family_topic_switch,sound_switch,vibration_switch from " + DB_TABLES.MessageNoticeSetting + " s where s.user = ? and s.type=? ";
        ImDb.execQuery({
            "sql": sql,
            "args": [user,type],