/// <summary> /// 定时器委托任务 调用的方法 /// </summary> /// <param name="source"></param> /// <param name="e"></param> public static void SetContent(object source, ElapsedEventArgs e) { ILog log = LogManager.GetLogger("TaskAction"); Cache ca = HttpRuntime.Cache; try { List <RankModel> rankAll = new List <RankModel>(); var onlineUseralle = ServiceStackManage.Redis.GetDatabase().HashGetAll("UserInfo", CommandFlags.None); //如果可以访问,就加入到缓存 for (int i = 0; i < onlineUseralle.Count(); i++) { RankModel model = new RankModel(); model.Name = onlineUseralle[i].Name; model.Value = onlineUseralle[i].Value; string[] s = model.Value.Split('_'); model.VipGrade = Convert.ToInt32(s[4]); rankAll.Add(model); } if (onlineUseralle != null) { if (onlineUseralle.Length != 0) { ca.Insert("onlineList", rankAll); //这里给数据加缓存 string json = JsonConvert.SerializeObject(rankAll.Skip(0).Take(200)); OnLineInfoBLL.InsertNewJson(new GL.Data.Model.OnLineInfo { CreateTime = DateTime.Now, OnLineInfoJson = json }); } } } catch (Exception ex) {//如果连不上redis log.Error("TaskAction(定时读取在线人数到缓存):" + ex.Message + "\n"); List <RankModel> rankAll = ca["onlineList"] as List <RankModel>; if (rankAll == null) { string rJson = OnLineInfoBLL.GetNewJson(); rankAll = (List <RankModel>)JsonConvert.DeserializeObject <List <RankModel> >(rJson); } if (rankAll.Count == 0) { string rJson = OnLineInfoBLL.GetNewJson(); rankAll = (List <RankModel>)JsonConvert.DeserializeObject <List <RankModel> >(rJson); } ca.Insert("onlineList", rankAll); //这里给数据加缓存 } }
// GET: OnLinePlay public object GetOnLineUser([FromUri] string pageSize, [FromUri] string pageIndex) { ILog log = LogManager.GetLogger("OnLinePlay"); //默认分页配置 if (string.IsNullOrEmpty(pageSize)) { pageSize = "10"; } if (string.IsNullOrEmpty(pageIndex)) { pageIndex = "1"; } Cache ca = HttpContext.Current.Cache; List <RankModel> rankAll = new List <RankModel>(); try { rankAll = ca["onlineList"] as List <RankModel>; } catch (Exception ex) { log.Error("OnLinePlay(读取在线玩家):" + ex.Message); rankAll = new List <RankModel>(); } if (rankAll == null) { log.Error("OnLinePlay(读取在线玩家):读取的缓存转换为null"); string rJson = OnLineInfoBLL.GetNewJson(); rankAll = (List <RankModel>)JsonConvert.DeserializeObject <List <RankModel> >(rJson); } int onlineUserTotal = rankAll.Count(); if (onlineUserTotal == 0) { log.Error("OnLinePlay(读取在线玩家):读取的缓存转换为长度为0"); string rJson = OnLineInfoBLL.GetNewJson(); rankAll = (List <RankModel>)JsonConvert.DeserializeObject <List <RankModel> >(rJson); } int pageSizeInt = Convert.ToInt32(pageSize); //取多少行数据 int pageIndexInt = Convert.ToInt32(pageIndex); //取第几页 int pageTotal = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(onlineUserTotal * 1.0 / pageSizeInt))); //总页数 int skip = (pageIndexInt - 1) * pageSizeInt; //跳过多少行 //取需要的数据 IEnumerable <RankModel> onlineUser = ( from a in rankAll select a ).OrderByDescending(m => m.VipGrade).Skip(skip).Take(pageSizeInt); List <RankListData> ModelList = new List <RankListData>(); foreach (RankModel item in onlineUser) { string[] rs = item.Value.ToString().Split('_'); RankListData data = new RankListData(); data.dwFaceID = Convert.ToInt32(rs[2]); data.strFaceUrl = rs[1]; data.dwUserID = Convert.ToInt32(item.Name); data.gameID = GameId(rs[5]); data.isOnline = IsOnline(rs[5]); data.llValue = Convert.ToDouble(rs[3]); data.strRoleName = rs[0]; data.vipGrade = Convert.ToInt32(rs[4]); ModelList.Add(data); } return(Json(new { dwType = 0, list = ModelList, showNum = pageSizeInt, totalPage = pageTotal, curPage = pageIndex })); }