/// <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" }); } }
/// <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); } } } }
/// <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); }