public override bool Match(ReceiveMessage message)
 {
     bool result = true;
     if (!string.IsNullOrEmpty(EventKey))
         result &= message.EventKey == EventKey;
     return result;
 }
 private static string ExecuteMarco(MarcoConfigItem marco, IDbDataSource source,
     DataRow row, ReceiveMessage message)
 {
     if (marco == null)
         return null;
     return Expression.Execute(marco, source, row, message);
 }
        private BaseSendMessage CreateDefaultMessage(ReceiveMessage message)
        {
            IRule defaultReply;
            if (!fDefaultTypeMessage.TryGetValue(message.MsgType, out defaultReply))
                defaultReply = fDefaultMessage;

            return defaultReply.Reply(message);
        }
 private static string ExecuteUrl(UrlMacroConfig marco, IDbDataSource source,
     DataRow row, ReceiveMessage message)
 {
     if (marco == null)
         return null;
     string content = Expression.Execute(marco, source, row, message);
     return marco.ToUri(content);
 }
 private static void SaveLocation(ReceiveMessage message)
 {
     using (WeixinDataSource source = new WeixinDataSource())
     using (UserLocationResolver resolver = new UserLocationResolver(source))
     {
         resolver.Insert(message);
     }
 }
        public void Log(ReceiveMessage message)
        {
            string fileName = DateTime.Now.ToString("yyyyMMdd_hhmmss_ffff",
                ObjectUtil.SysCulture) + ".xml";
            string content = message.WriteXml();

            FileUtil.SaveFile(Path.Combine(BasePath, fileName), content, Encoding.UTF8);
        }
 public Article CreateArticle(IDbDataSource source, DataRow row, ReceiveMessage message)
 {
     Article result = new Article
     {
         Title = ExecuteMarco(Title, source, row, message),
         Description = ExecuteMarco(Description, source, row, message),
         PicUrl = ExecuteUrl(PicUrl, source, row, message),
         Url = ExecuteUrl(Url, source, row, message)
     };
     return result;
 }
 public void Log(ReceiveMessage message)
 {
     using (WeixinDataSource source = new WeixinDataSource())
     using (MessageResolver resolver = new MessageResolver(source))
     {
         resolver.SetCommands(AdapterCommand.Insert);
         DataRow row = resolver.NewRow();
         message.AddToDataRow(row);
         row["CreateDate"] = message.CreateTime;
         resolver.UpdateDatabase();
     }
 }
        public BaseSendMessage Reply(ReceiveMessage message)
        {
            TkDbContext context;
            if (string.IsNullOrEmpty(ContextName))
                context = DbContextUtil.CreateDefault();
            else
                context = DbContextUtil.CreateDbContext(ContextName);
            using (EmptyDbDataSource source = new EmptyDbDataSource())
            {
                source.Context = context;
                string sql = Expression.Execute(Sql, source);
                SqlSelector.Select(source.Context, source.DataSet, TABLE_NAME, sql);
                DataTable table = source.DataSet.Tables[TABLE_NAME];
                if (table.Rows.Count == 0)
                {
                    TextSendMessage result = new TextSendMessage(message, EmptyMessage);
                    return result;
                }
                else
                {
                    NewsSendMessage result = new NewsSendMessage(message);
                    int count = 0;
                    if (fFirstArticles.Count > 0)
                    {
                        foreach (var article in fFirstArticles)
                        {
                            result.Add(article);
                            ++count;
                        }
                    }

                    int maxCount = MAX_COUNT;
                    if (FootArticle != null)
                        maxCount--;
                    foreach (DataRow row in table.Rows)
                    {
                        if (++count > maxCount)
                            break;
                        Article article = DataRowArticle.CreateArticle(source, row, message);
                        result.Add(article);
                    }

                    if (FootArticle != null)
                        result.Add(FootArticle);

                    return result;
                }
            }
        }
 public void Insert(ReceiveMessage message)
 {
     DataRow row = NewRow();
     row.BeginEdit();
     row["Id"] = Context.GetUniId(TableName);
     row["OpenId"] = message.FromUserName;
     row["CreateDate"] = DateTime.Now;
     row["Latitude"] = message.Latitude;
     row["Longitude"] = message.Longitude;
     row["Precision"] = message.Precision;
     row["CityCode"] = WeDataUtil.GetSXCode(Context, message.Latitude, message.Longitude);
     row.EndEdit();
     SetCommands(AdapterCommand.Insert);
     UpdateDatabase();
 }
        public RuleAttribute Match(ReceiveMessage message)
        {
            bool isCorpMode = WeixinSettings.Current.Mode == WeixinMode.Corporation;
            foreach (var attr in fList)
            {
                if (isCorpMode)
                {
                    if (attr.AppId != message.AgentId)
                        continue;
                }
                if (attr.Match(message))
                    return attr;
            }

            return null;
        }
 public BaseSendMessage Reply(ReceiveMessage message)
 {
     using (EmptyDbDataSource source = WeDataUtil.CreateSource())
     using (TableResolver resolver = new CorpAppLogResolver(source))
     {
         resolver.SetCommands(AdapterCommand.Insert);
         DataRow row = resolver.NewRow();
         row.BeginEdit();
         row["LogId"] = resolver.CreateUniId();
         row["AppId"] = message.AgentId;
         row["CreateDate"] = message.CreateTime;
         row["UserId"] = message.FromUserName;
         row.EndEdit();
         resolver.UpdateDatabase();
     }
     return null;
 }
 public BaseSendMessage Reply(ReceiveMessage message)
 {
     TkDbContext context = DbContextUtil.CreateDbContext("Weixin");
     using (EmptyDbDataSource source = new EmptyDbDataSource() { Context = context})
     using (TableResolver resolver = new TableResolver("WE_CORP_APP_LOG", source))
     {
         resolver.SetCommands(AdapterCommand.Insert);
         DataRow row = resolver.NewRow();
         row.BeginEdit();
         row["LogId"] = resolver.CreateUniId();
         row["AppId"] = message.AgentId;
         row["CreateDate"] = message.CreateTime;
         row["UserId"] = message.FromUserName;
         row.EndEdit();
         resolver.UpdateDatabase();
     } 
     return null;
 }
 public bool Reply(ReceiveMessage message, out BaseSendMessage replyMessage)
 {
     IMessageReplyEngine subEngine = fEngineList[(int)message.MsgType];
     RuleAttribute attr = subEngine.Match(message);
     if (attr != null)
     {
         if (attr == RuleAttribute.Empty)
             replyMessage = null;
         else
         {
             IRule reply = PlugInFactoryManager.CreateInstance<IRule>(
                 RulePlugInFactory.REG_NAME, attr.RegName).Convert<IRule>();
             replyMessage = reply.Reply(message);
         }
         return true;
     }
     else
     {
         replyMessage = null;
         return false;
     }
 }
        public BaseSendMessage Reply(ReceiveMessage message)
        {
            BaseGlobalVariable.Current.BeginInvoke(new Action<ReceiveMessage>(SaveLocation), message);

            return null;
        }
Exemple #16
0
 internal ImageSendMessage(ReceiveMessage receive, string mediaId)
     : this(receive.FromUserName, mediaId)
 {
 }
 internal MusicSendMessage(ReceiveMessage message, string thumbMediaId, string title,
     string description, string musicUrl, string hqMusicUrl)
     : this(message.FromUserName, thumbMediaId, title, description, musicUrl, hqMusicUrl)
 {
 }
 public BaseSendMessage Reply(ReceiveMessage message)
 {
     BaseSendMessage result = CreateDefaultMessage(message);
     return result;
 }
Exemple #19
0
 internal NewsSendMessage(ReceiveMessage message)
     : this(message.FromUserName)
 {
 }
 public BaseSendMessage Reply(ReceiveMessage message)
 {
     return RuleUtil.Execute(RuleUtil.ProcessCorpUser, false, message.FromUserName);
 }
 public override bool Match(ReceiveMessage message)
 {
     return Match(MatchType, Text, message.Content);
 }
 internal VoiceSendMessage(ReceiveMessage receive, string mediaId)
     : this(receive.FromUserName, mediaId)
 {
 }
 public void SetData(params object[] args)
 {
     fMessage = ObjectUtil.ConfirmQueryObject<ReceiveMessage>(this, args);
     //TkDebug.AssertNotNull(fMessage,
     //    "宏OpenId需要ReceiveMessage对象,但是没有从外部对象中找到", this);
 }
 public override bool Match(ReceiveMessage message)
 {
     if (string.IsNullOrEmpty(Text))
         return true;
     return TextRuleAttribute.Match(MatchType, Text, message.Recognition);
 }
 public BaseSendMessage Reply(ReceiveMessage message)
 {
     return RuleUtil.Execute(RuleUtil.ProcessNormalUser, true, message.FromUserName);
 }
 public override bool Match(ReceiveMessage message)
 {
     //return string.IsNullOrEmpty(message.EventKey);
     return true;
 }
 public RuleAttribute Match(ReceiveMessage message)
 {
     return RuleAttribute.Empty;
 }
 public BaseSendMessage Reply(ReceiveMessage message)
 {
     IRule reply = fConfig.Reply.CreateObject();
     return reply.Reply(message);
 }
 public override bool Match(ReceiveMessage message)
 {
     return true;
 }
 internal NewsSendMessage(ReceiveMessage message)
     : this(message.FromUserName)
 {
 }
 public abstract bool Match(ReceiveMessage message);
 internal TextSendMessage(ReceiveMessage receive, string content)
     : this(receive.FromUserName, content)
 {
 }