diff --git a/app/services/forum_sections_service.rb b/app/services/forum_sections_service.rb index fdfb14ace..3317a37bb 100644 --- a/app/services/forum_sections_service.rb +++ b/app/services/forum_sections_service.rb @@ -364,7 +364,7 @@ class ForumSectionsService return {status: -1, message: "请登录"} unless check_user_permission(current_user, params[:id]) select_section_ids = [params[:id]] unless @forum_section.parent_id.present? - children_forums = @forum_section.children_forum.pluck(:id) + children_forums = @forum_section.child_ids select_section_ids = select_section_ids + children_forums end select_section_ids.uniq @@ -389,7 +389,7 @@ class ForumSectionsService else memo_min_sections = memo.memo_forums.first end - memo_last_section = memo_min_sections.forum_section + memo_last_section = memo_min_sections&.forum_section memo_list = { memo_id: memo.id, @@ -416,7 +416,7 @@ class ForumSectionsService select_section_ids = [params[:id]] unless @forum_section.parent_id.present? - children_forums = @forum_section.children_forum.pluck(:id) + children_forums = @forum_section.child_ids select_section_ids = select_section_ids + children_forums end select_section_ids.uniq @@ -462,7 +462,7 @@ class ForumSectionsService select_section_ids = [params[:id]] unless @forum_section.parent_id.present? - children_forums = @forum_section.children_forum.pluck(:id) + children_forums = @forum_section.child_ids select_section_ids = select_section_ids + children_forums end select_section_ids.uniq @@ -473,7 +473,7 @@ class ForumSectionsService offset = page * LIMIT #全部的父帖子 memo_forum_section_ids = MemoForum.where(forum_id: select_section_ids).pluck(:memo_id).uniq - memos_all = Memo.where(hidden: false,parent_id: nil, id: memo_forum_section_ids).order("created_at desc") + memos_all = Memo.where(hidden: false,parent_id: nil, forum_section_id: select_section_ids).order("created_at desc") # memos_all = Memo.where(hidden: false, parent_id: nil).joins(:memo_forums).where("memo_forums.forum_id in (#{select_section_ids.join(",")})") if params[:type].present? if params[:type] == "sticky" @@ -499,7 +499,7 @@ class ForumSectionsService else memo_min_sections = memo.memo_forums.first end - memo_last_section = memo_min_sections.forum_section + memo_last_section = memo_min_sections&.forum_section memo_list = { memo_id: memo.id, diff --git a/app/services/memos_service.rb b/app/services/memos_service.rb index 28e2b2363..11742cdf7 100644 --- a/app/services/memos_service.rb +++ b/app/services/memos_service.rb @@ -596,7 +596,14 @@ class MemosService page = params[:page].to_i > 0 ? (params[:page].to_i - 1) : 0 offset = page * LIMIT - all_memos = forum_section.memos.posts + all_memos = + if forum_section.is_root? + forum_section_ids = forum_section.child_ids << forum_section.id + Rails.logger.info "######### forum_section_ids: #{forum_section_ids}" + Memo.where(forum_section_id: forum_section_ids) + else + forum_section.memos.posts + end select_type = params[:select_type] case select_type.to_s when "is_fine" @@ -729,6 +736,7 @@ class MemosService def check_banned_permission current_user, memo_id + return true if current_user&.admin? forum_id = MemoForum&.where(is_children: false, memo_id: memo_id)&.first.try(:forum_id).to_s user_banned_permission current_user, forum_id end