示例#1
0
        /// <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);
                }
            }
        }
示例#2
0
        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);
        }