/// <summary> /// 更改用户积分 /// </summary> /// <param name="sender"></param> /// <param name="eventArgs"></param> void ChangePointsEventModule_After(IUser sender, ChangePointsEventArgs eventArgs) { if (eventArgs.ExperiencePoints <= 0 && eventArgs.ReputationPoints <= 0) return; IUserService userService = DIContainer.Resolve<IUserService>(); //自动升级 UserRankService userRankService = new UserRankService(); SortedList<int, UserRank> userRanks = userRankService.GetAll(); UserRank maxUserRank = null; if (userRanks != null && userRanks.Count > 0) maxUserRank = userRanks.ElementAt(0).Value; PointSettings pointSettings = DIContainer.Resolve<ISettingsManager<PointSettings>>().Get(); int totalPoints = pointSettings.CalculateIntegratedPoint(sender.ExperiencePoints, sender.ReputationPoints); foreach (KeyValuePair<int, UserRank> userRank in userRanks) if (totalPoints > userRank.Value.PointLower && userRank.Value.PointLower > maxUserRank.PointLower) maxUserRank = userRank.Value; if (maxUserRank.Rank > sender.Rank) userService.UpdateRank(sender.UserId, maxUserRank.Rank); //自动解除管制 var user = userService.GetFullUser(sender.UserId); if (user.IsModerated && !user.IsForceModerated) { UserSettings userSettings = DIContainer.Resolve<ISettingsManager<UserSettings>>().Get(); if (totalPoints > userSettings.NoModeratedUserPoint) { userService.NoModeratedUser(user.UserId); } } }
private void RewardAndPunishmentUser_After(IUser sender, RewardAndPunishmentUserEventArgs eventArgs) { PointSettings pointSettings = pointSettingsManger.Get(); int totalPoints = pointSettings.CalculateIntegratedPoint(sender.ExperiencePoints, sender.ReputationPoints); //更新用户等级 //if (eventArgs.ExperiencePoints <= 0 && eventArgs.ReputationPoints <= 0) // return; IUserService userService = DIContainer.Resolve<IUserService>(); UserRankService userRankService = new UserRankService(); SortedList<int, UserRank> userRanks = userRankService.GetAll(); UserRank maxUserRank = null; if (userRanks != null && userRanks.Count > 0) maxUserRank = userRanks.First().Value; foreach (KeyValuePair<int, UserRank> userRank in userRanks) { if (totalPoints > userRank.Value.PointLower && userRank.Value.PointLower > maxUserRank.PointLower) maxUserRank = userRank.Value; } userService.UpdateRank(sender.UserId, maxUserRank.Rank); //自动解除管制 var user = userService.GetFullUser(sender.UserId); if (user.IsModerated && !user.IsForceModerated) { UserSettings userSettings = userSettingsManager.Get(); if (totalPoints > userSettings.NoModeratedUserPoint) { userService.NoModeratedUser(user.UserId); } } //发送通知 if (sender == null) return; Notice notice = Notice.New(); notice.UserId = sender.UserId; notice.ApplicationId = 0; notice.TypeId = NoticeTypeIds.Instance().Hint(); if (eventArgs.ExperiencePoints < 0 || eventArgs.ReputationPoints < 0 || eventArgs.TradePoints < 0) { notice.Body = "您被系统扣除经验:" + -eventArgs.ExperiencePoints + "、威望:" + -eventArgs.ReputationPoints + "、金币:" + -eventArgs.TradePoints; } else { notice.Body = "您收到系统奖励经验:" + eventArgs.ExperiencePoints + "、威望:" + eventArgs.ReputationPoints + "、金币:" + eventArgs.TradePoints; } notice.LeadingActorUrl = SiteUrls.FullUrl(SiteUrls.Instance().ListNotices(sender.UserName, null, null)); noticeService.Create(notice); }