//获取基础信息统计 public void GetTableJcXx() { //已经按照时间倒叙了 取得范围是80天里面选 _usersfor80Days = Ds.GetUsersWithNoPeriodCache(EndTime.AddDays(-80), EndTime, SoftID, PlatID, CacheTimeOption.HalfDay).OrderByDescending(p => p.StatDate).ToList(); List <SoftUser> users = _usersfor80Days; if (users.Count != 0) { int totalNum = users.Max(p => p.TotalNum); //周用户数据 SoftUser weekUser = users.Where(p => p.Period == (int)net91com.Stat.Core.PeriodOptions.Weekly).OrderByDescending(p => p.StatDate).FirstOrDefault(); int weekActivity = 0; string weekPercent = "--"; if (weekUser != null) { weekActivity = weekUser.ActiveNum; weekPercent = weekUser.ActivityPercent; } SoftUser monthUser = users.Where(p => p.Period == (int)net91com.Stat.Core.PeriodOptions.Monthly).OrderByDescending(p => p.StatDate).FirstOrDefault(); ///获取月留存数据 var list = new RetainedUsersService(true) .GetStatRetainedUsersCache(SoftID, PlatID, -1, net91com.Stat.Core.PeriodOptions.Monthly, EndTime.AddDays(-80), EndTime, CacheTimeOption.TenMinutes, ChannelTypeOptions.Category, loginService); Sjqd_StatChannelRetainedUsers lastretainuser = list.Count == 0? null:list.OrderBy(p => p.OriginalDate).Last(); //数据库还 没有值 int monthActivity = 0; string monthPercent = "--"; int monthnew = 0; if (monthUser != null) { monthActivity = monthUser.ActiveNum; monthPercent = monthUser.ActivityPercent; monthnew = monthUser.NewNum; } string percent = lastretainuser == null ? "--" : (lastretainuser.RetainedUserCount * 100 / (decimal)lastretainuser.OriginalNewUserCount).ToString("0.00") + "%"; StringBuilder sb = new StringBuilder("<table class=\" tablesorter \" cellspacing=\"1\">"); sb.Append(@" <thead><tr> <th>累计用户</th> <th>周活跃用户</th> <th>周跃率</th> <th>月活跃用户</th> <th>月活跃率</th> <th>月新增用户</th> <th>上月留存率</th> </tr></thead>"); sb.Append("<tbody>"); sb.Append("<tr class=\"tableover\">"); sb.AppendFormat(@"<td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td><td>{5}</td><td>{6}</td>", Utility.SetNum(totalNum), Utility.SetNum(weekActivity), weekPercent, Utility.SetNum(monthActivity), monthPercent, monthnew, percent); sb.Append("</tr>"); sb.Append("</tbody></table>"); TabStrJcXx = sb.ToString(); } }
///绑定StatRetaindeUsers 对象 public Sjqd_StatChannelRetainedUsers RetainedUserBind(IDataReader dataReader) { Sjqd_StatChannelRetainedUsers modelretained = new Sjqd_StatChannelRetainedUsers(); object obj; obj = dataReader["ChannelID"]; if (obj != null && obj != DBNull.Value) { modelretained.ChannelID = Convert.ToInt32(obj); } obj = dataReader["SoftID"]; if (obj != null && obj != DBNull.Value) { modelretained.SoftID = Convert.ToInt32(obj); } obj = dataReader["Period"]; if (obj != null && obj != DBNull.Value) { modelretained.Period = (net91com.Stat.Core.PeriodOptions)Convert.ToInt32(obj); } obj = dataReader["Platform"]; if (obj != null && obj != DBNull.Value) { modelretained.Platform = (MobileOption)Convert.ToInt32(obj); } obj = dataReader["OriginalNewUserCount"]; if (obj != null && obj != DBNull.Value) { modelretained.OriginalNewUserCount = Convert.ToInt32(obj); } obj = dataReader["RetainedUserCount"]; if (obj != null && obj != DBNull.Value) { modelretained.RetainedUserCount = Convert.ToInt32(obj); } obj = dataReader["OriginalDate"]; if (obj != null && obj != DBNull.Value) { int temp = Convert.ToInt32(obj); modelretained.OriginalDate = new DateTime(temp / 10000, temp / 100 % 100, temp % 100, 0, 0, 0); } obj = dataReader["StatDate"]; if (obj != null && obj != DBNull.Value) { int temp = Convert.ToInt32(obj); modelretained.StatDate = new DateTime(temp / 10000, temp / 100 % 100, temp % 100, 0, 0, 0); } return(modelretained); }