/// <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); }
/// <summary> /// 执行结束方法 /// </summary> /// <param name="msgContext"></param> protected virtual void ExecuteEnd(WxMsgContext msgContext) { }
protected override void ExecuteEnd(WxMsgContext msgContext) { LogUtil.Info(msgContext.RecMsg.RecMsgXml.InnerXml, "PlatformMsg"); }
/// <summary> /// 执行过程中,业务执行前 /// 如果对 ReplyMsg 赋值,则后续 /// </summary> /// <param name="context"></param> protected virtual void Executing(WxMsgContext context) { }
protected override void Executing(WxMsgContext context) { LogUtil.Info($"当前消息正文:{context.RecMsg.RecMsgXml.InnerXml}", "Executing"); }