这个方法用于实现页面访问统计, 不足之处还望各位原油指正
总访问量,日访问量,周访问量
代码中使用了Linq
/// <summary>
/// 更新案例访问量
/// </summary>
/// <param name="ID">案例ID</param>
public static void UpdateViewCount(int ID)
{
var ctx = LinqDB.LQProvider.GetLQDB();
LinqDB.Photo_Categories pc = ctx.Photo_Categories.SingleOrDefault(p => p.ID == ID);
//如果没有取到对象则跳出
if (pc==null)
{
return;
}
//获取当前Session
HttpSessionState session = HttpContext.Current.Session;
string key = "ViewCount_Photo_Categories";
List<int> ids = new List<int>();
//创建一个列表对象保存当前用户浏览过的相册ID集合
//从Session中读取列表
if (session[key] is List<int>)
{
ids = session[key] as List<int>;
}
//如果列表中不存在则添加并保存至session 并更新访问量
if (!ids.Contains(ID))
{
ids.Add(ID);
session[key] = ids;
//最后访问时间
DateTime lastViewTime = pc.LastViewTime ?? DateTime.Now;
//当前时间与最后访问时间的差
TimeSpan deffer = DateTime.Now - lastViewTime;
//访问总数
int ViewCount = pc.ViewCount ?? 0;
//周访问
int WeekViewCount = pc.WeekViewCount ?? 0;
//日访问
int DayViewCount = pc.DayViewCount ?? 0;
//如果相差天数大于7天
if (deffer.TotalDays > 7)
{
//重设周访问量
WeekViewCount = 1;
}
else //不大于7天
{
//如果相差时间大于24小时
if (deffer.TotalHours > 24d)
{
DayViewCount = 1;
}
else//如果在24小时之内
{
//日访问增加
DayViewCount++;
}
//周访问量增加
WeekViewCount++;
}
//总访问量增加
ViewCount++;
pc.ViewCount = ViewCount;
pc.WeekViewCount = WeekViewCount;
pc.DayViewCount = DayViewCount;
pc.LastViewTime = lastViewTime;
ctx.SubmitChanges();//提交数据库
}
}
/// 更新案例访问量
/// </summary>
/// <param name="ID">案例ID</param>
public static void UpdateViewCount(int ID)
{
var ctx = LinqDB.LQProvider.GetLQDB();
LinqDB.Photo_Categories pc = ctx.Photo_Categories.SingleOrDefault(p => p.ID == ID);
//如果没有取到对象则跳出
if (pc==null)
{
return;
}
//获取当前Session
HttpSessionState session = HttpContext.Current.Session;
string key = "ViewCount_Photo_Categories";
List<int> ids = new List<int>();
//创建一个列表对象保存当前用户浏览过的相册ID集合
//从Session中读取列表
if (session[key] is List<int>)
{
ids = session[key] as List<int>;
}
//如果列表中不存在则添加并保存至session 并更新访问量
if (!ids.Contains(ID))
{
ids.Add(ID);
session[key] = ids;
//最后访问时间
DateTime lastViewTime = pc.LastViewTime ?? DateTime.Now;
//当前时间与最后访问时间的差
TimeSpan deffer = DateTime.Now - lastViewTime;
//访问总数
int ViewCount = pc.ViewCount ?? 0;
//周访问
int WeekViewCount = pc.WeekViewCount ?? 0;
//日访问
int DayViewCount = pc.DayViewCount ?? 0;
//如果相差天数大于7天
if (deffer.TotalDays > 7)
{
//重设周访问量
WeekViewCount = 1;
}
else //不大于7天
{
//如果相差时间大于24小时
if (deffer.TotalHours > 24d)
{
DayViewCount = 1;
}
else//如果在24小时之内
{
//日访问增加
DayViewCount++;
}
//周访问量增加
WeekViewCount++;
}
//总访问量增加
ViewCount++;
pc.ViewCount = ViewCount;
pc.WeekViewCount = WeekViewCount;
pc.DayViewCount = DayViewCount;
pc.LastViewTime = lastViewTime;
ctx.SubmitChanges();//提交数据库
}
}