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); }