From 9aef00ce0606a672d6a8c885ccd735e4e6be833b Mon Sep 17 00:00:00 2001 From: chenjing <28122123@qq.com> Date: Wed, 22 Feb 2023 08:26:59 +0800 Subject: [PATCH] orgs search --- .../admins/organizations_controller.rb | 6 +++++- app/queries/admins/organization_query.rb | 21 +++++++++++++++++++ app/views/admins/organizations/index.html.erb | 9 ++++++++ app/views/admins/organizations/index.js.erb | 2 +- .../organizations/shared/_org_list.html.erb | 2 ++ 5 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 app/queries/admins/organization_query.rb diff --git a/app/controllers/admins/organizations_controller.rb b/app/controllers/admins/organizations_controller.rb index 4e40a509e..35fb4dee8 100644 --- a/app/controllers/admins/organizations_controller.rb +++ b/app/controllers/admins/organizations_controller.rb @@ -2,7 +2,11 @@ class Admins::OrganizationsController < Admins::BaseController before_action :finder_org, except: [:index] def index - @orgs = paginate Organization.all + params[:sort_by] = params[:sort_by].presence || 'created_on' + params[:sort_direction] = params[:sort_direction].presence || 'desc' + + orgs = Admins::OrganizationQuery.call(params) + @orgs = paginate orgs end def show diff --git a/app/queries/admins/organization_query.rb b/app/queries/admins/organization_query.rb new file mode 100644 index 000000000..09dbab9e3 --- /dev/null +++ b/app/queries/admins/organization_query.rb @@ -0,0 +1,21 @@ +class Admins::OrganizationQuery < ApplicationQuery + include CustomSortable + attr_reader :params + sort_columns :created_on, :last_login_on, :experience, :grade, default_by: :created_on, default_direction: :desc + + def initialize(params) + @params = params + end + + def call + orgs = Organization.all + # 关键字检索 + keyword = params[:keyword].to_s.strip.presence + if keyword + sql = 'nickname LIKE :keyword OR login LIKE :keyword' + orgs = orgs.where(sql, keyword: "%#{keyword}%") + end + + custom_sort(orgs, params[:sort_by], params[:sort_direction]) + end +end \ No newline at end of file diff --git a/app/views/admins/organizations/index.html.erb b/app/views/admins/organizations/index.html.erb index 7c96b57ee..7cd2ba8fa 100644 --- a/app/views/admins/organizations/index.html.erb +++ b/app/views/admins/organizations/index.html.erb @@ -1,6 +1,15 @@ <% define_admin_breadcrumbs do %> <% add_admin_breadcrumb('组织管理', admins_organizations_path) %> <% end %> +