/// <summary> /// 删除用户记录(删除用户时使用) /// </summary> /// <param name="userId">被删除用户</param> /// <param name="takeOverUserName">接管用户名</param> /// <param name="takeOverAll">是否接管被删除用户的所有内容</param> public void DeleteUser(long userId, string takeOverUserName, bool takeOverAll) { long takeOverUserId = UserIdToUserNameDictionary.GetUserId(takeOverUserName); IUserService userService = DIContainer.Resolve <IUserService>(); User takeOver = userService.GetFullUser(takeOverUserId); BarSectionService barSectionService = new BarSectionService(); BarThreadService barThreadService = new BarThreadService(); BarPostService barPostService = new BarPostService(); //删除用户时,不删除贴吧,把贴吧转让,如果没有指定转让人,那就转给网站初始管理员 if (takeOver == null) { takeOverUserId = new SystemDataService().GetLong("Founder"); takeOver = userService.GetFullUser(takeOverUserId); } barThreadRepository.DeleteUser(userId, takeOver, takeOverAll); if (takeOver != null) { if (!takeOverAll) { barThreadService.DeletesByUserId(userId); barPostService.DeletesByUserId(userId); } } //else //{ // barSectionService.DeletesByUserId(userId); // barThreadService.DeletesByUserId(userId); // barPostService.DeletesByUserId(userId); //} }
public void ProcessRequest(HttpContext context) { string url = string.Empty; long anchorPostId = context.Request.QueryString.Get <long>("anchorPostId"); BarPostService barPostService = new BarPostService(); BarPost post = barPostService.Get(anchorPostId); if (post == null) { WebUtility.Return404(context); } IBarUrlGetter urlGetter = BarUrlGetterFactory.Get(post.TenantTypeId); if (post != null) { int?childPostIndex = 0; if (post.ParentId != 0) { childPostIndex = barPostService.GetPageIndexForChildrenPost(post.ParentId, post.PostId); } int pageIndex = barPostService.GetPageIndexForPostInThread(post.ThreadId, anchorPostId); url = urlGetter.ThreadDetail(post.ThreadId, pageIndex: pageIndex, anchorPostId: anchorPostId, childPostIndex: childPostIndex); } context.Response.RedirectPermanent(url); }
/// <summary> /// 是否具有编辑BarPost的权限 /// </summary> /// <param name="postId"></param> /// <returns></returns> public static bool BarPost_Edit(this Authorizer authorizer, long postId) { BarPost post = new BarPostService().Get(postId); if (post == null) { return(false); } return(authorizer.BarPost_Edit(post)); }
/// <summary> /// 转换成BarPost类型 /// </summary> /// <returns></returns> public BarPost AsBarPost() { BarThread thread = new BarThreadService().Get(this.ThreadId); BarPostService service = new BarPostService(); BarPost post = null; //编辑的情况 if (this.PostId.HasValue) { post = service.Get(this.PostId ?? 0); if (post == null) { return(null); } } else { //创建的情况 post = BarPost.New(); post.AuditStatus = AuditStatus.Success; post.TenantTypeId = thread.TenantTypeId; post.ThreadId = this.ThreadId; if (UserContext.CurrentUser != null) { post.UserId = UserContext.CurrentUser.UserId; post.Author = UserContext.CurrentUser.DisplayName; } else { post.UserId = 0; post.Author = "匿名用户"; } post.OwnerId = thread == null ? 0 : thread.OwnerId; post.SectionId = thread == null ? 0 : thread.SectionId; post.ParentId = this.ParentId; } if (!string.IsNullOrEmpty(this.Body)) { post.Body = this.Body; } else { this.MultilineBody = WebUtility.HtmlEncode(this.MultilineBody); this.MultilineBody = new EmotionService().EmoticonTransforms(this.MultilineBody); post.Body = this.MultilineBody; } return(post); }
public AssociatedInfo GetAssociatedInfo(long associateId, string tenantTypeId = "") { BarPostService barPostService = new BarPostService(); BarPost barPost = barPostService.Get(associateId); if (barPost == null) { return(null); } BarThread barThread = new BarThreadService().Get(barPost.ThreadId); if (barThread != null) { IBarUrlGetter urlGetter = BarUrlGetterFactory.Get(barThread.TenantTypeId); return(new AssociatedInfo() { DetailUrl = urlGetter.ThreadDetail(barThread.ThreadId, anchorPostId: barPost.PostId), Subject = barThread.Subject }); } return(null); }
/// <summary> /// 删除主题帖 /// </summary> /// <param name="threadId">主题帖Id</param> public void Delete(long threadId) { BarThread thread = barThreadRepository.Get(threadId); if (thread == null) { return; } EventBus <BarThread> .Instance().OnBefore(thread, new CommonEventArgs(EventOperationType.Instance().Delete())); BarSectionService barSectionService = new BarSectionService(); BarSection barSection = barSectionService.Get(thread.SectionId); if (barSection != null) { //帖子标签 TagService tagService = new TagService(TenantTypeIds.Instance().BarThread()); tagService.ClearTagsFromItem(threadId, barSection.SectionId); //帖子分类 CategoryService categoryService = new CategoryService(); categoryService.ClearCategoriesFromItem(threadId, barSection.SectionId, TenantTypeIds.Instance().BarThread()); } //删除回帖 BarPostService barPostService = new BarPostService(); barPostService.DeletesByThreadId(threadId); //删除推荐记录 RecommendService recommendService = new RecommendService(); recommendService.Delete(threadId, TenantTypeIds.Instance().BarThread()); int affectCount = barThreadRepository.Delete(thread); if (affectCount > 0) { //更新帖吧的计数 CountService countService = new CountService(TenantTypeIds.Instance().BarSection()); countService.ChangeCount(CountTypes.Instance().ThreadCount(), barSection.SectionId, barSection.UserId, -1, true); countService.ChangeCount(CountTypes.Instance().ThreadAndPostCount(), barSection.SectionId, barSection.UserId, -1, true); if (thread.TenantTypeId == TenantTypeIds.Instance().Group()) { //群组内容计数-1 OwnerDataService groupOwnerDataService = new OwnerDataService(TenantTypeIds.Instance().Group()); groupOwnerDataService.Change(thread.SectionId, OwnerDataKeys.Instance().ThreadCount(), -1); } else if (thread.TenantTypeId == TenantTypeIds.Instance().Bar()) { //用户内容计数-1 OwnerDataService ownerDataService = new OwnerDataService(TenantTypeIds.Instance().User()); ownerDataService.Change(thread.UserId, OwnerDataKeys.Instance().ThreadCount(), -1); } EventBus <BarThread> .Instance().OnAfter(thread, new CommonEventArgs(EventOperationType.Instance().Delete())); EventBus <BarThread, AuditEventArgs> .Instance().OnAfter(thread, new AuditEventArgs(thread.AuditStatus, null)); } //BarThread删除可能影响的: //1、附件 (看到了) //2、BarPost(看到了) //3、BarRating(看到了) //4、相关计数对象(看到了) //5、用户在应用中的数据(看到了) //6、@用户(看到了) }