/// <summary> /// 一次使用时长各档位分布人数 /// </summary> private void GetOnceUseLength() { string myzhouqi = HttpContext.Current.Request["period"]; net91com.Stat.Core.PeriodOptions Period; switch (myzhouqi) { case "一天": Period = net91com.Stat.Core.PeriodOptions.Daily; break; case "一周": Period = net91com.Stat.Core.PeriodOptions.Weekly; break; case "一月": Period = net91com.Stat.Core.PeriodOptions.Monthly; break; default: Period = net91com.Stat.Core.PeriodOptions.Daily; break; } int softid = Convert.ToInt32(HttpContext.Current.Request["soft"]); int platid = Convert.ToInt32(HttpContext.Current.Request["plat"]); string version = HttpContext.Current.Request["version"]; DateTime begintime = Convert.ToDateTime(HttpContext.Current.Request["begintime"]); DateTime endtime = Convert.ToDateTime(HttpContext.Current.Request["endtime"]); CheckHasRight(softid, "Reports/SoftSessionlenReport.aspx"); ///单次是没有周期的概念 Period = net91com.Stat.Core.PeriodOptions.Daily; ULSessionService sessionService = new ULSessionService(true); List <Sjqd_ULSessionsSingle> users = null; users = sessionService.GetSingleULSessionsLengthCache(softid, platid, version, (int)Period, begintime, endtime, CacheTimeOption.TenMinutes); if (users.Count != 0) { StringBuilder sbY; sbY = new StringBuilder("[{ name:'单次使用时长',"); sbY.Append("data:["); sbY.Append(users[0].Percent * 100 + ","); sbY.Append(users[1].Percent * 100 + ","); sbY.Append(users[2].Percent * 100 + ","); sbY.Append(users[3].Percent * 100 + ","); sbY.Append(users[4].Percent * 100 + ","); sbY.Append(users[5].Percent * 100 + ","); sbY.Append(users[6].Percent * 100 + ","); sbY.Append(users[7].Percent * 100 + "]}]"); StringBuilder sbX = new StringBuilder("{ categories:['1-3秒用户','3-60秒用户','1-5分钟用户','5-10分钟用户','10-30分钟用户','30-60分钟用户','1-2小时用户','2小时以上用户']}"); string result = "{ x:" + sbX.ToString() + "," + " y:" + sbY.ToString() + "}"; HttpContext.Current.Response.Write(result); } else { string result = "{ x:{},y:[]}"; HttpContext.Current.Response.Write(result); } }
/// <summary> /// 对应周期平均每个用户启动次数 /// </summary> private void GetSessionPerUser() { string myzhouqi = HttpContext.Current.Request["period"]; net91com.Stat.Core.PeriodOptions Period; switch (myzhouqi) { case "一天": Period = net91com.Stat.Core.PeriodOptions.Daily; break; case "一周": Period = net91com.Stat.Core.PeriodOptions.Weekly; break; case "一月": Period = net91com.Stat.Core.PeriodOptions.Monthly; break; default: Period = net91com.Stat.Core.PeriodOptions.Daily; break; } int softid = Convert.ToInt32(HttpContext.Current.Request["soft"]); int platid = Convert.ToInt32(HttpContext.Current.Request["plat"]); int versionid = Convert.ToInt32(HttpContext.Current.Request["version"]); DateTime begintime = Convert.ToDateTime(HttpContext.Current.Request["begintime"]); DateTime endtime = Convert.ToDateTime(HttpContext.Current.Request["endtime"]); CheckHasRight(softid, "Reports/SoftSessionlenReport.aspx"); ULSessionService sessionService = new ULSessionService(true); List <DateTime> X_DateTime = new List <DateTime>(); List <Sjqd_ULSessionAvgUsers> avgUsers = sessionService.GetULSessionAvgUsersCache(softid, platid, (int)Period, begintime, endtime, CacheTimeOption.TenMinutes).OrderBy(p => p.StatDate).ToList(); if (avgUsers.Count != 0) { X_DateTime = avgUsers.Select(p => p.StatDate).Distinct().ToList(); MaxNumCoef = X_DateTime.Count / MaxNum + 1; SetxAxisJson(X_DateTime); string result = "{ x:" + SetxAxisJson(X_DateTime) + "," + "y:" + GetDataJsonList(avgUsers, X_DateTime, false) + "}"; HttpContext.Current.Response.Write(result); } else { string result = "{ x:{},y:[]}"; HttpContext.Current.Response.Write(result); } }
/// <summary> /// 使用时长分布excel导出 /// </summary> private void GetDownSessionLengthExcel() { string myzhouqi = HttpContext.Current.Request["period"]; net91com.Stat.Core.PeriodOptions Period; switch (myzhouqi) { case "一天": Period = net91com.Stat.Core.PeriodOptions.Daily; break; case "一周": Period = net91com.Stat.Core.PeriodOptions.Weekly; break; case "一月": Period = net91com.Stat.Core.PeriodOptions.Monthly; break; default: Period = net91com.Stat.Core.PeriodOptions.Daily; break; } int softid = Convert.ToInt32(HttpContext.Current.Request["soft"]); int platid = Convert.ToInt32(HttpContext.Current.Request["plat"]); int versionid = Convert.ToInt32(HttpContext.Current.Request["version"]); DateTime begintime = Convert.ToDateTime(HttpContext.Current.Request["begintime"]); DateTime endtime = Convert.ToDateTime(HttpContext.Current.Request["endtime"]); CheckHasRight(softid, "Reports/SoftSessionlenReport.aspx"); ULSessionService sessionService = new ULSessionService(true); HttpResponse resp; resp = HttpContext.Current.Response; resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); string headername = "使用时长分布" + ".xls"; AddHead(headername); List <Sjqd_ULSessionAvgUsers> avgUsers = sessionService.GetULSessionAvgUsersCache(softid, platid, (int)Period, begintime, endtime, CacheTimeOption.TenMinutes).OrderByDescending(p => p.StatDate).ToList(); ///文件标题+内容 string colHeaders = "", ls_item = ""; //列数 int cl = 7; colHeaders += "日期" + "\t" + "活跃用户" + "\t" + "累计启动次数" + "\t" + "人均启动次数" + "\t" + "累计使用时长(分)" + "\t" + "人均每次使用时长(秒)" + "\t" + "人均使用时长(分)" + "\t\n"; resp.Write(colHeaders); //向HTTP输出流中写入取得的数据信息 //逐行处理数据 foreach (Sjqd_ULSessionAvgUsers row in avgUsers) { //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据 for (int i = 0; i < cl; i++) { if (i == 0) { ls_item += row.StatDate.ToString("yyyy-MM-dd") + "\t"; } else if (i == 1) { ls_item += row.UseUsers + "\t"; } else if (i == 2) { ls_item += row.AllSessions + "\t"; } else if (i == 3) { ls_item += row.AvgSessions + "\t"; } else if (i == 4) { ls_item += row.AllSessionLength / 60 + "\t"; } else if (i == 5) { ls_item += row.AvgLengthPerSession + "\t"; } else if (i == 6) { ls_item += row.AvgSessionLength / 60 + "\n"; } } resp.Write(ls_item); ls_item = ""; } resp.End(); }
/// <summary> /// 启动次数分布 /// </summary> private void GetSessions() { string myzhouqi = HttpContext.Current.Request["period"]; net91com.Stat.Core.PeriodOptions Period; switch (myzhouqi) { case "一天": Period = net91com.Stat.Core.PeriodOptions.Daily; break; case "一周": Period = net91com.Stat.Core.PeriodOptions.Weekly; break; case "一月": Period = net91com.Stat.Core.PeriodOptions.Monthly; break; default: Period = net91com.Stat.Core.PeriodOptions.Daily; break; } int softid = Convert.ToInt32(HttpContext.Current.Request["soft"]); int platid = Convert.ToInt32(HttpContext.Current.Request["plat"]); var version = HttpContext.Current.Request["version"]; DateTime begintime = Convert.ToDateTime(HttpContext.Current.Request["begintime"]); DateTime endtime = Convert.ToDateTime(HttpContext.Current.Request["endtime"]); CheckHasRight(softid, "Reports/SoftSessionlenReport.aspx"); ULSessionService sessionService = new ULSessionService(true); List <Sjqd_ULSessionsCount> users = sessionService.GetULSessionsCountCache(softid, platid, version, (int)Period, begintime, endtime, CacheTimeOption.TenMinutes); if (users.Count != 0) { StringBuilder sbYWeek; StringBuilder sbX = new StringBuilder(); if (Period == net91com.Stat.Core.PeriodOptions.Daily) { sbX.Append("{ categories:['1次用户','2-3次用户','4-6次用户','7-9次用户','10-12用户','13-17次用户','18-22次用户','22次以上用户']}"); sbYWeek = new StringBuilder("[{ name:'累计启动天数',"); } else if (Period == net91com.Stat.Core.PeriodOptions.Weekly) { sbX.Append("{ categories:['1天用户','2天用户','3天用户','4天用户','5天用户','6天用户','7天用户']}"); sbYWeek = new StringBuilder("[{ name:'累计启动天数',"); } else { sbX.Append("{ categories:['1-2天用户','3-4天用户','5-8天用户','9-12天用户','13-16天用户','17-20天用户','21-25天用户','25天以上用户']}"); sbYWeek = new StringBuilder("[{ name:'累计启动天数',"); } sbYWeek.Append("data:["); sbYWeek.Append(users[0].Percent * 100 + ","); sbYWeek.Append(users[1].Percent * 100 + ","); sbYWeek.Append(users[2].Percent * 100 + ","); sbYWeek.Append(users[3].Percent * 100 + ","); sbYWeek.Append(users[4].Percent * 100 + ","); sbYWeek.Append(users[5].Percent * 100 + ","); if (Period != net91com.Stat.Core.PeriodOptions.Daily) { sbYWeek.Append(users[6].Percent * 100 + "]}]"); } else { sbYWeek.Append(users[6].Percent * 100 + ","); sbYWeek.Append(users[7].Percent * 100 + "]}]"); } string resultWeek = "{ x:" + sbX.ToString() + "," + " y:" + sbYWeek.ToString() + "}"; HttpContext.Current.Response.Write(resultWeek); return; } else { string result = "{ x:{},y:[]}"; HttpContext.Current.Response.Write(result); } }