Пример #1
0
        /// <summary>
        ///  执行具体消息处理委托
        /// </summary>
        /// <returns></returns>
        private WxMsgContext ExecuteProcessor <TRecMsg>(XmlDocument recMsgXml,
                                                        IDictionary <string, string> recMsgDirs, TRecMsg recMsg, Func <TRecMsg, WxBaseReplyMsg> func)
            where TRecMsg : WxBaseRecMsg, new()
        {
            if (recMsg == null)
            {
                recMsg = new TRecMsg();
            }
            recMsg.LoadMsgDirs(recMsgDirs);
            recMsg.RecMsgXml = recMsgXml;

            var msgContext = new WxMsgContext {
                RecMsg = recMsg
            };

            Executing(msgContext);

            if (msgContext.ReplyMsg == null)
            {
                msgContext.ReplyMsg = func?.Invoke(recMsg);
            }

            if (msgContext.ReplyMsg == null)
            {
                msgContext.ReplyMsg = ExecuteUnknowProcessor(recMsg) ?? WxNoneReplyMsg.None;
            }

            msgContext.ReplyMsg.ToUserName   = recMsg.FromUserName;
            msgContext.ReplyMsg.FromUserName = recMsg.ToUserName;
            msgContext.ReplyMsg.CreateTime   = DateTime.Now.ToLocalSeconds();

            return(msgContext);
        }
Пример #2
0
 /// <summary>
 ///  执行结束方法
 /// </summary>
 /// <param name="msgContext"></param>
 protected virtual void ExecuteEnd(WxMsgContext msgContext)
 {
 }
Пример #3
0
 protected override void ExecuteEnd(WxMsgContext msgContext)
 {
     LogUtil.Info(msgContext.RecMsg.RecMsgXml.InnerXml, "PlatformMsg");
 }
Пример #4
0
 /// <summary>
 ///  执行过程中,业务执行前
 ///     如果对 ReplyMsg 赋值,则后续
 /// </summary>
 /// <param name="context"></param>
 protected virtual void Executing(WxMsgContext context)
 {
 }
Пример #5
0
 protected override void Executing(WxMsgContext context)
 {
     LogUtil.Info($"当前消息正文:{context.RecMsg.RecMsgXml.InnerXml}", "Executing");
 }