class Users::ShixunsController < Users::BaseController def index shixuns = Users::ShixunService.new(observed_user, query_params).call ## 云上实验室过滤 if current_laboratory.main_site? not_shixun_ids = Shixun.joins(:laboratory_shixuns).where("laboratory_shixuns.laboratory_id != #{current_laboratory.id}") shixuns = shixuns.where.not(id: not_shixun_ids) else shixuns = shixuns.joins(:laboratory_shixuns).where(laboratory_shixuns: { laboratory_id: current_laboratory.id }) end @count = shixuns.count @shixuns = paginate(shixuns.includes(:first_tag_repertoire), special: observed_user.is_teacher?) ids = @shixuns.map(&:id) @finished_challenges_count_map = Game.joins(:myshixun).where(user_id: observed_user.id, status: 2) .where(myshixuns: { shixun_id: ids }).group('myshixuns.shixun_id').count end private def query_params params.permit(:category, :status, :sort_by, :sort_direction) end end