Explorar o código

1、上门咨询回复微信模板跳转链接添加
2、修改消息内容时,数据双写到redis和mysql

LiTaohong %!s(int64=6) %!d(string=hai) anos
pai
achega
dea71e02a6

+ 17 - 3
src/server/models/client/wechat.client.js

@ -401,9 +401,23 @@ class WechatClient extends RedisModel {
                    var patient = map.get("openid");
                    map.delete("openid");
                    let agent = topic.agent;
                    let consultTitle = topic.type==8?"续方":"健康";
                    let description = topic.type==8?"续方咨询":topic.description;
                    let url = config.wechatConfig.baseUrl + (topic.type==8?"/wx/html/yszx/html/prescription-consulting.html":"/wx/html/yszx/html/consulting-doctor.html");
                    let consultTitle = null;
                    let description = null;
                    let url = config.wechatConfig.baseUrl;
                    switch (topic.type) {
                        case 8:
                            consultTitle = "续方";
                            description  = "续方咨询";
                            url = url + "/wx/html/yszx/html/prescription-consulting.html";
                        case 11:
                            consultTitle = "上门服务";
                            description  = "上门服务咨询";
                            url = url + "wx/common/chat/html/common_chat.html";
                        default:
                            consultTitle = "健康";
                            description  = topic.description;
                            url = url + "/wx/html/yszx/html/consulting-doctor.html";
                    }
                    if(agent){//代理人发起的议题
                        var agentOpenid = "";
                        if(map.size>0){

+ 32 - 5
src/server/models/messages/messages.js

@ -20,6 +20,7 @@ let configFile = require('../../include/commons').CONFIG_FILE;
let config = require('../../resources/config/' + configFile);
let logger = require('../../util/log');
let pubSub = require("../redis/pubSub.js");
let async = require("async");
const REDIS_KEYS = require('../../include/commons').REDIS_KEYS;
@ -98,7 +99,10 @@ class Messages extends RedisModel {
        let sessionKey = RedisModel.makeRedisKey(REDIS_KEYS.Session, sessionId);
        let messageKey = RedisModel.makeRedisKey(REDIS_KEYS.Messages, sessionId);
        let messageTimestampKey = RedisModel.makeRedisKey(REDIS_KEYS.MessagesByTimestamp, sessionId);
        log.info("  message.timestamp = " + message.timestamp);
        log.info("  message.sender_id = " + message.sender_id);
        log.info("  message.sender_name= " + message.sender_name);
        log.info("  message.timestamp.getTime() = " + message.timestamp.getTime());
        let msgJson = {
            id: message.id,
            sender_id: message.sender_id,
@ -218,11 +222,34 @@ class Messages extends RedisModel {
     */
    updateMsgContent(sessionType,sessionId, messageId, content,handler) {
        let self = this;
        MessageRepo.updateMsgContent(sessionType,sessionId, messageId, content, function (err, res) {
        async.waterfall( [
            function (callback) {
                MessageRepo.selectOneMessage(sessionType, messageId, function (err, res) {
                    if (err) {
                        ModelUtil.emitError(self.eventEmitter, {message: "this message not exist,id: " + messageId});
                    } else {
                        res[0].content = content;
                        log.info("res[0].timestamp="+res[0].timestamp.getTime());
                        callback(null,res[0]);
                    }
                })
            },
            function (messageObj) {
                log.info("  11messages.timestamp="+messageObj.timestamp.getTime());
                let messages = new Messages();
                messages.saveMessageToRedis(sessionId, sessionType, messageId, messageObj);
                MessageRepo.updateMsgContent(sessionType,sessionId, messageId, content, function (err, res) {
                    if (err) {
                        ModelUtil.emitError(self.eventEmitter, {message: "update message content failed: " + err});
                    } else {
                        ModelUtil.emitOK(self.eventEmitter, {status: 200,data: content});
                    }
                })
            }
        ], function (err, res) {
            if (err) {
                ModelUtil.emitError(self.eventEmitter, {message: "update message content failed: " + err});
            } else {
                ModelUtil.emitOK(self.eventEmitter, {status: 200,data: content});
                ModelUtil.emitError(self.eventEmitter, "update message content failed:" + err);
            }
        });
    }

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

@ -9,6 +9,7 @@ let log = require('../../util/log.js');
let SessionRepo = require('../../repository/mysql/session.repo');
let ImDb = require('../mysql/db/im.db');
const DB_TABLES = require('../../include/commons').DB_TABLES;
class MessageRepo {
@ -115,7 +116,28 @@ class MessageRepo {
        log.info(sql);
        ImDb.execQuery({
            "sql": sql,
            "args": [content,new Date(), messageId,sessionId],
            "args": [content.toString(),new Date(), messageId,sessionId],
            "handler": handler || function (err, res) {
                if (err) log.error(err);
            }
        });
    }
    /**
     * 修改消息内容
     *
     * @param message 消息对象
     * @param sessionType 会话类型,参见 SESSIONS_TYPES
     * @param messageId
     * @param sessionId
     * @param handler
     */
    static selectOneMessage(sessionType,messageId,handler) {
        let sql = "SELECT * from " + DB_TABLES.sessionTypeToTableName(sessionType)  + "  where id = ?";
        log.info(sql);
        ImDb.execQuery({
            "sql": sql,
            "args": [messageId],
            "handler": handler || function (err, res) {
                if (err) log.error(err);
            }