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