示例#1
0
        /// <summary>
        ///  执行具体消息处理委托
        /// </summary>
        /// <returns></returns>
        private WXChatContext 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 WXChatContext {
                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>
        /// <returns></returns>
        private async Task <WXChatContext> ExecuteProcessor(XmlDocument recMsgXml,
                                                            IDictionary <string, string> recMsgDirs, BaseBaseProcessor processor)
        {
            var recMsg = processor.CreateRecMsg();

            recMsg.LoadMsgDirs(recMsgDirs);
            recMsg.RecMsgXml = recMsgXml;

            var msgContext = new WXChatContext {
                RecMsg = recMsg, ReplyMsg = await processor.InternalExecute(recMsg)
            };

            if (msgContext.ReplyMsg == null)
            {
                msgContext.ReplyMsg = (await ProcessUnknowMsg(recMsg)) ?? WXNoneReplyMsg.None;
            }

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

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