From a03d1efcb0dbee9e30d3cb3cd0b280f634b13b4f Mon Sep 17 00:00:00 2001 From: xxq250 Date: Thu, 2 Feb 2023 14:05:40 +0800 Subject: [PATCH] =?UTF-8?q?fixed=20=E5=A6=82=E6=9E=9C=E6=9C=89=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E5=85=B3=E9=94=AE=E5=AD=97=E6=A0=B9=E6=8D=AEES?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E7=BB=93=E6=9E=9C=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/projects/list_query.rb | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index 447ab5070..c4c81957b 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -22,10 +22,12 @@ class Projects::ListQuery < ApplicationQuery sort_direction = params[:sort_direction] || "desc" collection = optimize_sorting(collection, sort) if params[:category_id].present? - custom_sort(collection, sort, sort_direction) - - # scope = scope.reorder("projects.#{sort} #{sort_direction}") - # scope + # 如果有搜索关键字根据ES搜索结果排序 + if params[:search].present? && @ids.present? + collection.reorder(Arel.sql("FIELD(projects.id,#{@ids.join(',')})")) + else + custom_sort(collection, sort, sort_direction) + end end def filter_projects(collection) @@ -38,10 +40,10 @@ class Projects::ListQuery < ApplicationQuery end def by_search(items) - ids = Projects::ElasticsearchService.call(params[:search]) + @ids = Projects::ElasticsearchService.call(params[:search]) items = items.where(platform: 'forge') - if ids.present? - items = items.where(id: ids).by_name_or_identifier(params[:search]) + if @ids.present? + items = items.where(id: @ids).by_name_or_identifier(params[:search]) else items = items.by_name_or_identifier(params[:search]) end