示例#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);
                }
            }
        }
        /// <summary>
        /// 生成用户等级图标
        /// </summary>
        public static MvcHtmlString UserRankIcon(this HtmlHelper htmlHelper, int rank)
        {
            TagBuilder spanBuilder;
            TagBuilder imgBuilder;
            StringBuilder builder = new StringBuilder();
            int remainder = rank;

            string[] ranksImages = new string[] {
            "~/Themes/Shared/Styles/icons/star.gif",
            "~/Themes/Shared/Styles/icons/moon.gif",
            "~/Themes/Shared/Styles/icons/sun.gif"
            };

            for (int k = ranksImages.Length - 1; k >= 0; k--)
            {
                int resultCount = remainder / GetRankNum(k);
                remainder = remainder % GetRankNum(k);
                for (int i = 0; i < resultCount; i++)
                {
                    spanBuilder = new TagBuilder("span");
                    imgBuilder = new TagBuilder("img");
                    imgBuilder.MergeAttribute("src", WebUtility.ResolveUrl(ranksImages[k]));
                    spanBuilder.InnerHtml += imgBuilder.ToString();
                    builder.Append(spanBuilder.ToString());
                }
                if (remainder == 0)
                    break;
            }

            UserRank userRank = new UserRankService().Get(rank);
            string rankName = "";
            if (userRank != null)
                rankName = userRank.RankName;
            spanBuilder = new TagBuilder("span");
            if (!string.IsNullOrEmpty(rankName))
                spanBuilder.MergeAttribute("title", rankName);
            spanBuilder.InnerHtml = builder.ToString();
            builder = new StringBuilder(spanBuilder.ToString());
            return MvcHtmlString.Create(builder.ToString());
        }
        public ActionResult MassMessages(bool isByRole, List<string> roleName, bool isMessage, string body, string subject, int minRank = 0, int maxRank = 0)
        {
            int maxUserRank = 1;
            var ranks = new UserRankService().GetAll();
            if (ranks.Count > 0)
                maxUserRank = ranks.Max(n => n.Value.Rank);
            if (minRank > maxRank)
            {
                int temp = 0;
                temp = maxRank;
                maxRank = minRank;
                minRank = temp;
            }

            IEnumerable<IUser> users = null;
            if (isByRole)
            {
                users = UserService.GetUsers(roleName, 0, 0);
            }
            else
            {
                users = UserService.GetUsers(new List<string>(), minRank, maxRank);
            }
            int count = 0;

            if (isMessage)
            {
                foreach (var user in users)
                {
                    Message message = Message.New();
                    message.MessageType = MessageType.CustomerService;
                    message.SenderUserId = (long)BuildinMessageUserId.CustomerService;
                    message.Sender = "客服消息";
                    if (DIContainer.Resolve<Authorizer>().Message(user.UserId))
                    {
                        message.Receiver = user.DisplayName;
                        message.ReceiverUserId = user.UserId;
                        message.Body = body;
                        bool value = messageService.Create(message);
                        count++;
                    }
                }
            }
            else
            {
                IEmailSettingsManager emailSettingsManager = DIContainer.Resolve<IEmailSettingsManager>();
                EmailSettings emailSettings = emailSettingsManager.Get();
                foreach (var user in users)
                {
                    if (user != null)
                    {
                        try
                        {
                            MailMessage mail = new MailMessage(emailSettings.AdminEmailAddress, user.AccountEmail);
                            mail.Subject = "客服消息";
                            mail.Body = body;
                            mail.IsBodyHtml = false;
                            mail.BodyEncoding = Encoding.UTF8;
                            mail.From = new System.Net.Mail.MailAddress(emailSettings.AdminEmailAddress);
                            mail.IsBodyHtml = false;
                            mail.Sender = new System.Net.Mail.MailAddress(emailSettings.AdminEmailAddress);
                            mail.Subject = subject;
                            mail.SubjectEncoding = Encoding.UTF8;

                            emailService.Enqueue(mail);

                            count++;
                        }
                        catch (Exception ex)
                        {
                            string a = ex.Message;
                        }

                    }
                }
            }

            if (count > 0)
                return Json(new StatusMessageData(StatusMessageType.Success, string.Format("成功发送了{0}条{1}", count, isMessage ? "消息" : "邮件")));
            return Json(new StatusMessageData(StatusMessageType.Error, string.Format("{0}发送失败了!", isMessage ? "消息" : "邮件")));
        }
        public ActionResult MassMessages()
        {
            //角色下拉列表
            IEnumerable<Role> roles = roleService.GetRoles();
            if (roles != null)
            {
                ViewData["Roles"] = roles.Select(n => new MenuItem { Text = n.FriendlyRoleName, Value = n.RoleName.ToString() });
            }

            int maxUserRank = 1;
            var ranks = new UserRankService().GetAll();
            if (ranks.Count > 0)
                maxUserRank = ranks.Max(n => n.Value.Rank);
            ViewData["maxUserRank"] = maxUserRank;
            return View();
        }
示例#5
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);
        }