public List <PersonScoreRank> GetNewPersonStepRank(List <MetaData> allMetaData)
        {
            var personRank = new List <PersonScoreRank>();
            var wechatMap  = XiaoMiData.GetWeChatNameById();

            foreach (var metadata in allMetaData)
            {
                var onePerson = new PersonScoreRank();
                if (personRank.Exists(p => p.WechatId.ToLower() == metadata.WechatId.ToLower()))
                {
                    var personScoreRank = personRank.FirstOrDefault(p => p.WechatId.ToLower() == metadata.WechatId.ToLower());
                    if (personScoreRank != null)
                    {
                        personScoreRank.Score += metadata.Score;
                    }
                }
                else
                {
                    onePerson.Score      = metadata.Score;
                    onePerson.WechatId   = metadata.WechatId;
                    onePerson.WechatName = wechatMap.ContainsKey(metadata.WechatId)?wechatMap[metadata.WechatId]:"";
                    personRank.Add(onePerson);
                }
            }
            dealRewardsScore(personRank);
            var personRankResult = personRank.OrderByDescending(p => p.Score).ToList();

            for (var i = 0; i < personRankResult.Count(); i++)
            {
                personRankResult[i].Rank = i + 1;
            }
            return(personRankResult);
        }
        public List <PersonStepRank> GetPersonStepRankList(List <MetaData> allMetadata)
        {
            var personStepRankList = new List <PersonStepRank>();
            var wechatMap          = XiaoMiData.GetWeChatNameById();

            foreach (var metadata in allMetadata)
            {
                var personStepRank = new PersonStepRank();
                if (personStepRankList.Exists(p => p.WechatId == metadata.WechatId))
                {
                    var target = personStepRankList.FirstOrDefault(p => p.WechatId == metadata.WechatId);
                    if (target != null)
                    {
                        target.Steps     += metadata.Steps;
                        target.StepsByDay = DateTime.Compare(metadata.CreatedDate, DateTime.Now.Date) == 0 ? metadata.Steps : 0;
                    }
                }
                else
                {
                    personStepRank.StepsByDay = DateTime.Compare(metadata.CreatedDate, DateTime.Now.Date) == 0 ? metadata.Steps : 0;
                    personStepRank.RankByDay  = GetPersonStepRankByWeChatId(metadata.WechatId);
                    personStepRank.Steps      = metadata.Steps;
                    personStepRank.WechatId   = metadata.WechatId;
                    personStepRank.WechatName = wechatMap.ContainsKey(metadata.WechatId) ? wechatMap[metadata.WechatId] : "";
                    personStepRankList.Add(personStepRank);
                }
            }
            var personStepRankListResult = personStepRankList.OrderByDescending(m => m.Steps).ToList();

            for (var i = 0; i < personStepRankListResult.Count; i++)
            {
                personStepRankListResult[i].Rank = i + 1;
            }
            personStepRankListResult = personStepRankListResult.OrderByDescending(m => m.StepsByDay).ToList();
            for (var i = 0; i < personStepRankListResult.Count; i++)
            {
                personStepRankListResult[i].RankByDay = i + 1;
            }
            return(personStepRankListResult);
        }