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); }
private void RewardAndPunishmentUser_After(IUser sender, RewardAndPunishmentUserEventArgs eventArgs) { OperationLogService logService = new OperationLogService(); logService = Tunynet.DIContainer.Resolve <OperationLogService>(); OperationLogEntry entry = new OperationLogEntry(eventArgs.OperatorInfo); entry.ApplicationId = 0; entry.Source = string.Empty; entry.OperationType = eventArgs.EventOperationType; entry.OperationObjectName = sender.UserName; entry.OperationObjectId = sender.UserId; entry.Description = string.Format(ResourceAccessor.GetString("OperationLog_Pattern_" + eventArgs.EventOperationType), entry.OperationObjectName); logService.Create(entry); }