Example #1
0
        /// <summary>
        /// 保存一条点击量数据记录,有则更新,无则插入
        /// </summary>
        /// <param name="cr">点击量数据</param>
        #region void SaveClickRecord(ClickRecords cr)
        public void SaveClickRecord(ClickRecords cr)
        {
            ClickRecords clickRecord = GetClickRecordByDate(cr.ObjectType, cr.ObjectID, cr.VisitDate);

            if (clickRecord == null)
            {
                lock (syncRoot)
                {
                    clickRecord = GetClickRecordByDate(cr.ObjectType, cr.ObjectID, cr.VisitDate);
                    if (clickRecord == null)
                    {
                        //插入逻辑
                        cr.ID     = We7Helper.CreateNewID();
                        cr.Clicks = 1;
                        Assistant.Insert(cr);
                    }
                    else
                    {
                        //更新逻辑
                        clickRecord.Clicks += 1;
                        Assistant.Update(clickRecord, new string[] { "Clicks" });
                    }
                }
            }
            else
            {
                //更新逻辑
                clickRecord.Clicks += 1;
                Assistant.Update(clickRecord, new string[] { "Clicks" });
            }
        }
Example #2
0
        /// <summary>
        /// 添加记录过程
        /// </summary>
        /// <param name="url">文章url</param>
        protected void AddClick(string url)
        {
            //从URL获取文章SN
            string ArticleID = ArticleHelper.GetArticleIDFromURL(url);

            //string ArticleID = ArticleHelper.GetArticleIDBySN(SN);
            if (!string.IsNullOrEmpty(ArticleID))
            {
                //获取文章实体
                Article article = ArticleHelper.GetArticle(ArticleID);
                if (article != null)
                {
                    //保存日记录
                    ClickRecords cr = new ClickRecords();
                    cr.ObjectID   = article.ID;
                    cr.VisitDate  = ClickRecordHelper.ConvertIntegerFromDate(DateTime.Now);
                    cr.ObjectType = String.IsNullOrEmpty(article.ModelName)? "Article" :article.ModelName;
                    ClickRecordHelper.SaveClickRecord(cr);

                    //获取点击量报表
                    Dictionary <string, int> dictReports
                        = ClickRecordHelper.GetObjectClickReport(cr.ObjectType, article.ID);
                    //通过工厂获取具体的Helper
                    IObjectClickHelper helper = ClickHelperFactory.Create(article.ModelName);
                    helper.UpdateClicks(article.ModelName, article.ID, dictReports);
                }
                else
                {
                    AdviceInfo advice = AdviceFactory.Create().GetAdvice(ArticleID);
                    if (advice != null)
                    {
                        //保存日记录
                        ClickRecords cr = new ClickRecords();
                        cr.ObjectID   = advice.ID;
                        cr.VisitDate  = ClickRecordHelper.ConvertIntegerFromDate(DateTime.Now);
                        cr.ObjectType = "Advice";
                        ClickRecordHelper.SaveClickRecord(cr);

                        //获取点击量报表
                        Dictionary <string, int> dictReports
                            = ClickRecordHelper.GetObjectClickReport(cr.ObjectType, advice.ID);

                        IObjectClickHelper helper = ClickHelperFactory.Create(cr.ObjectType);
                        helper.UpdateClicks(cr.ObjectType, cr.ObjectID, dictReports);
                    }
                }
            }
        }
Example #3
0
        /// <summary>
        /// 获取某对象的点击量键值对报表
        /// </summary>
        /// <param name="objectType">对象类型</param>
        /// <param name="objectID">对象ID</param>
        /// <returns>日点击量;昨日点击量;周点击量;月点击量;季点击量;年点击量;总点击量</returns>
        #region Dictionary<string, int> GetObjectClickReport(string objectType, string objectID)
        public Dictionary <string, int> GetObjectClickReport(string objectType, string objectID)
        {
            Dictionary <string, int> dict = new Dictionary <string, int>();

            List <ClickRecords> listAll = GetObjectClickRecords(objectType, objectID);

            if (listAll != null && listAll.Count > 0)
            {
                int todayInteger      = ConvertIntegerFromDate(DateTime.Now);
                int yesterdayInteger  = ConvertIntegerFromDate(DateTime.Now.AddDays(-1));
                int lastweekInterger  = ConvertIntegerFromDate(DateTime.Now.AddDays(-7));
                int lastmonthInteger  = ConvertIntegerFromDate(DateTime.Now.AddMonths(-1));
                int lastseasonInteger = ConvertIntegerFromDate(DateTime.Now.AddMonths(-3));
                int lastyearInteger   = ConvertIntegerFromDate(DateTime.Now.AddYears(-1));
                int sum = 0;
                //日点击量
                ClickRecords cr = listAll.Find(p => p.VisitDate == todayInteger);
                dict.Add("日点击量", cr != null ? cr.Clicks : 0);
                //昨日点击量
                cr = listAll.Find(p => p.VisitDate == yesterdayInteger);
                dict.Add("昨日点击量", cr != null ? cr.Clicks : 0);
                //周点击量
                List <ClickRecords> listTmp = listAll.FindAll(p => p.VisitDate > lastweekInterger && p.VisitDate <= todayInteger);
                if (listTmp != null && listTmp.Count > 0)
                {
                    sum = 0;
                    foreach (ClickRecords c in listTmp)
                    {
                        sum += c.Clicks;
                    }
                    dict.Add("周点击量", sum);
                }
                else
                {
                    dict.Add("周点击量", 0);
                }
                //月点击量
                listTmp = listAll.FindAll(p => p.VisitDate > lastmonthInteger && p.VisitDate <= todayInteger);
                if (listTmp != null && listTmp.Count > 0)
                {
                    sum = 0;
                    foreach (ClickRecords c in listTmp)
                    {
                        sum += c.Clicks;
                    }
                    dict.Add("月点击量", sum);
                }
                else
                {
                    dict.Add("月点击量", 0);
                }
                //季点击量
                listTmp = listAll.FindAll(p => p.VisitDate > lastseasonInteger && p.VisitDate <= todayInteger);
                if (listTmp != null && listTmp.Count > 0)
                {
                    sum = 0;
                    foreach (ClickRecords c in listTmp)
                    {
                        sum += c.Clicks;
                    }
                    dict.Add("季点击量", sum);
                }
                else
                {
                    dict.Add("季点击量", 0);
                }
                //年点击量
                listTmp = listAll.FindAll(p => p.VisitDate > lastyearInteger && p.VisitDate <= todayInteger);
                if (listTmp != null && listTmp.Count > 0)
                {
                    sum = 0;
                    foreach (ClickRecords c in listTmp)
                    {
                        sum += c.Clicks;
                    }
                    dict.Add("年点击量", sum);
                }
                else
                {
                    dict.Add("年点击量", 0);
                }
                //总点击量
                sum = 0;
                foreach (ClickRecords c in listAll)
                {
                    sum += c.Clicks;
                }
                dict.Add("总点击量", sum);
            }

            return(dict);
        }