From 3833816a0a0ac7d1deb8989203e24f31131cdbdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=B1=E5=91=B1=E5=91=B1?= Date: Wed, 29 Nov 2023 15:11:41 +0800 Subject: [PATCH 1/2] update issue order by --- app/services/api/v1/issues/list_service.rb | 23 ++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/app/services/api/v1/issues/list_service.rb b/app/services/api/v1/issues/list_service.rb index b6ef11789..8f32cfe6a 100644 --- a/app/services/api/v1/issues/list_service.rb +++ b/app/services/api/v1/issues/list_service.rb @@ -6,8 +6,8 @@ class Api::V1::Issues::ListService < ApplicationService attr_reader :milestone_id, :assigner_id, :status_id, :sort_by, :sort_direction, :current_user attr_accessor :queried_issues, :total_issues_count, :closed_issues_count, :opened_issues_count - validates :category, inclusion: {in: %w(all opened closed), message: "请输入正确的Category"} - validates :participant_category, inclusion: {in: %w(all aboutme authoredme assignedme atme), message: "请输入正确的ParticipantCategory"} + validates :category, inclusion: {in: %w(all opened closed), message: '请输入正确的Category'} + validates :participant_category, inclusion: {in: %w(all aboutme authoredme assignedme atme), message: '请输入正确的ParticipantCategory'} validates :sort_by, inclusion: {in: ['issues.created_on', 'issues.updated_on', 'issues.blockchain_token_num', 'issue_priorities.position'], message: '请输入正确的SortBy'}, allow_blank: true validates :sort_direction, inclusion: {in: %w(asc desc), message: '请输入正确的SortDirection'}, allow_blank: true validates :current_user, presence: true @@ -19,7 +19,7 @@ class Api::V1::Issues::ListService < ApplicationService @participant_category = params[:participant_category] || 'all' @keyword = params[:keyword] @author_id = params[:author_id] - @issue_tag_ids = params[:issue_tag_ids].present? ? params[:issue_tag_ids].split(",") : [] + @issue_tag_ids = params[:issue_tag_ids].present? ? params[:issue_tag_ids].split(',') : [] @milestone_id = params[:milestone_id] @assigner_id = params[:assigner_id] @status_id = params[:status_id] @@ -31,7 +31,7 @@ class Api::V1::Issues::ListService < ApplicationService end def call - raise Error, errors.full_messages.join(", ") unless valid? + raise Error, errors.full_messages.join(', ') unless valid? # begin issue_query_data @@ -60,7 +60,7 @@ class Api::V1::Issues::ListService < ApplicationService issues = issues.where(author_id: author_id) if author_id.present? # issue_tag_ids - issues = issues.ransack(issue_tags_value_cont: issue_tag_ids.sort!.join(",")).result unless issue_tag_ids.blank? + issues = issues.ransack(issue_tags_value_cont: issue_tag_ids.sort!.join(',')).result unless issue_tag_ids.blank? # milestone_id issues = issues.where(fixed_version_id: milestone_id) if milestone_id.present? @@ -72,14 +72,14 @@ class Api::V1::Issues::ListService < ApplicationService issues = issues.where(status_id: status_id) if status_id.present? && category != 'closed' if begin_date&.present? || end_date&.present? - issues = issues.where("issues.created_on between ? and ?", begin_date&.present? ? begin_date.to_time : Time.now.beginning_of_day, end_date&.present? ? end_date.to_time.end_of_day : Time.now.end_of_day) + issues = issues.where('issues.created_on between ? and ?', begin_date&.present? ? begin_date.to_time : Time.now.beginning_of_day, end_date&.present? ? end_date.to_time.end_of_day : Time.now.end_of_day) end # keyword issues = issues.ransack(id_or_project_issues_index_eq: keyword).result.or(issues.ransack(subject_or_description_cont: keyword).result) if keyword.present? @total_issues_count = issues.distinct.size - @closed_issues_count = issues.closed.distinct.size + @closed_issues_count = issues.closed.distinct.size @opened_issues_count = issues.opened.distinct.size case category @@ -88,13 +88,16 @@ class Api::V1::Issues::ListService < ApplicationService when 'opened' issues = issues.opened end - if only_name.present? scope = issues.select(:id, :subject, :project_issues_index, :updated_on, :created_on) scope = scope.reorder("#{sort_by} #{sort_direction}").distinct - else + else scope = issues.includes(:priority, :issue_status, :user, :show_assigners, :show_issue_tags, :version, :comment_journals) - scope = scope.reorder("#{sort_by} #{sort_direction}").distinct + scope = if sort_by == 'issue_priorities.position' + scope.reorder("issue_priorities.position #{sort_direction}, issues.created_on DESC").distinct + else + scope.reorder("#{sort_by} #{sort_direction}").distinct + end end @queried_issues = scope From 21640fe5e67ef221f6d6277f0ff21724131c2e1e Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 1 Dec 2023 09:48:08 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9Aissue=20status?= =?UTF-8?q?=E5=92=8Cpriority=E5=88=9D=E5=A7=8B=E5=8C=96=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/issues/issue_priorities_controller.rb | 2 +- app/controllers/api/v1/issues/statues_controller.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/api/v1/issues/issue_priorities_controller.rb b/app/controllers/api/v1/issues/issue_priorities_controller.rb index 2df1288f7..f31c92ae3 100644 --- a/app/controllers/api/v1/issues/issue_priorities_controller.rb +++ b/app/controllers/api/v1/issues/issue_priorities_controller.rb @@ -3,7 +3,7 @@ class Api::V1::Issues::IssuePrioritiesController < Api::V1::BaseController before_action :require_public_and_member_above, only: [:index] def index - @priorities = IssuePriority.order(position: :asc) + @priorities = IssuePriority.where.not(name: '立刻').order(position: :asc) @priorities = @priorities.ransack(name_cont: params[:keyword]).result if params[:keyword] @priorities = kaminary_select_paginate(@priorities) end diff --git a/app/controllers/api/v1/issues/statues_controller.rb b/app/controllers/api/v1/issues/statues_controller.rb index c6495ee26..737f1b38b 100644 --- a/app/controllers/api/v1/issues/statues_controller.rb +++ b/app/controllers/api/v1/issues/statues_controller.rb @@ -4,7 +4,7 @@ class Api::V1::Issues::StatuesController < Api::V1::BaseController # 状态列表 def index - @statues = IssueStatus.order("position asc") + @statues = IssueStatus.where.not(name: '反馈').order("position asc") @statues = @statues.ransack(name_cont: params[:keyword]).result if params[:keyword].present? @statues = kaminary_select_paginate(@statues) end