Esempio n. 1
0
    /// <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);  //这里给数据加缓存
        }
    }
Esempio n. 2
0
        // 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
            }));
        }