diff --git a/app/controllers/api/v1/issues/milestones_controller.rb b/app/controllers/api/v1/issues/milestones_controller.rb index b3f30e084..d0fc0be4a 100644 --- a/app/controllers/api/v1/issues/milestones_controller.rb +++ b/app/controllers/api/v1/issues/milestones_controller.rb @@ -60,7 +60,7 @@ class Api::V1::Issues::MilestonesController < Api::V1::BaseController end def query_params - params.permit(:category, :author_id, :assigner_id, :sort_by, :sort_direction, :issue_tag_ids => []) + params.permit(:category, :author_id, :assigner_id, :sort_by, :sort_direction, :issue_tag_ids) end def load_milestone diff --git a/app/controllers/api/v1/issues_controller.rb b/app/controllers/api/v1/issues_controller.rb index c511f88b2..7f2b5ee4d 100644 --- a/app/controllers/api/v1/issues_controller.rb +++ b/app/controllers/api/v1/issues_controller.rb @@ -91,7 +91,7 @@ class Api::V1::IssuesController < Api::V1::BaseController :milestone_id, :assigner_id, :status_id, :sort_by, :sort_direction, - :issue_tag_ids => []) + :issue_tag_ids) end def issue_params diff --git a/app/models/issue_tag.rb b/app/models/issue_tag.rb index c938e8386..787b72bca 100644 --- a/app/models/issue_tag.rb +++ b/app/models/issue_tag.rb @@ -34,7 +34,7 @@ class IssueTag < ApplicationRecord ["支持", "表示特定功能或特定需求", "#019549"], ["任务", "表示需要分配的任务", "#01a30d"], ["协助", "表示需要社区用户协助", "#2a0dc1"], - ["搁置", "表示此问题不会继续处理", "#892794"], + ["搁置", "表示此问题暂时不会继续处理", "#892794"], ["文档", "表示文档材料补充", "#9ed600"], ["测试", "表示需要测试的需求", "#2897b9"], ["重复", "表示已存在类似的疑修", "#bb5332"] diff --git a/app/services/api/v1/issues/list_service.rb b/app/services/api/v1/issues/list_service.rb index 6cea89327..ed9a43a46 100644 --- a/app/services/api/v1/issues/list_service.rb +++ b/app/services/api/v1/issues/list_service.rb @@ -17,7 +17,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] + @issue_tag_ids = params[:issue_tag_ids].split(",") @milestone_id = params[:milestone_id] @assigner_id = params[:assigner_id] @status_id = params[:status_id] @@ -52,17 +52,6 @@ class Api::V1::Issues::ListService < ApplicationService issues = issues.joins(:participants, :issue_participants).where(issue_participants: {participant_type: 'atme'},users: {id: current_user&.id}) end - @total_issues_count = issues.size - @closed_issues_count = issues.closed.size - @opened_issues_count = issues.opened.size - - case category - when 'closed' - issues = issues.closed - when 'opened' - issues = issues.opened - end - # author_id issues = issues.where(author_id: author_id) if author_id.present? @@ -79,9 +68,20 @@ class Api::V1::Issues::ListService < ApplicationService issues = issues.where(status_id: status_id) if status_id.present? # keyword - q = issues.ransack(subject_or_description_cont: keyword) + issues = issues.ransack(subject_or_description_cont: keyword).result - scope = q.result.includes(:priority, :issue_status, :user, :assigners, :version, :issue_tags, :comment_journals) + @total_issues_count = issues.size + @closed_issues_count = issues.closed.size + @opened_issues_count = issues.opened.size + + case category + when 'closed' + issues = issues.closed + when 'opened' + issues = issues.opened + end + + scope = issues.includes(:priority, :issue_status, :user, :assigners, :version, :issue_tags, :comment_journals) scope = scope.reorder("#{sort_by} #{sort_direction}").distinct diff --git a/app/services/api/v1/issues/milestones/detail_issues_service.rb b/app/services/api/v1/issues/milestones/detail_issues_service.rb index 1328805b3..c6b250a58 100644 --- a/app/services/api/v1/issues/milestones/detail_issues_service.rb +++ b/app/services/api/v1/issues/milestones/detail_issues_service.rb @@ -5,7 +5,7 @@ class Api::V1::Issues::Milestones::DetailIssuesService < ApplicationService attr_accessor :queried_issues validates :category, inclusion: {in: %w(all opened closed), message: "请输入正确的Category"} - validates :sort_by, inclusion: {in: Issue.column_names, message: '请输入正确的SortBy'}, allow_blank: true + validates :sort_by, inclusion: {in: ['issues.created_on', 'issues.updated_on', '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 @@ -15,7 +15,7 @@ class Api::V1::Issues::Milestones::DetailIssuesService < ApplicationService @category = params[:category] || 'all' @author_id = params[:author_id] @assigner_id = params[:assigner_id] - @issue_tag_ids = params[:issue_tag_ids] + @issue_tag_ids = params[:issue_tag_ids].present? ? params[:issue_tag_ids].split(",") : [] @sort_by = params[:sort_by].present? ? params[:sort_by] : 'updated_on' @sort_direction = (params[:sort_direction].present? ? params[:sort_direction] : 'desc').downcase @current_user = current_user @@ -47,11 +47,13 @@ class Api::V1::Issues::Milestones::DetailIssuesService < ApplicationService issues = issues.where(author_id: author_id) if author_id.present? # assigner_id - issues = issues.joins(:assigners).where(users: {id: assigner_id}).or(issues.where(assigned_to_id: assigner_id)) if assigner_id.present? + issues = issues.joins(:assigners).where(users: {id: assigner_id}).or(issues.joins(:assigners).where(assigned_to_id: assigner_id)) if assigner_id.present? - scope = issues.includes(:priority, :issue_status, :user, :assigners, :version, :issue_tags, :comment_journals) + issues = issues.joins(:issue_tags).where(issue_tags: {id: issue_tag_ids}) if issue_tag_ids.present? - scope = scope.reorder("issues.#{sort_by} #{sort_direction}").distinct + scope = issues.includes(:priority, :issue_status, :user, :assigners, :version, :issue_tags, :comment_journals).references(:assigners) + + scope = scope.reorder("#{sort_by} #{sort_direction}").distinct @queried_issues = scope end diff --git a/app/views/api/v1/issues/journals/_detail.json.jbuilder b/app/views/api/v1/issues/journals/_detail.json.jbuilder index 7e8232bdc..264997bbd 100644 --- a/app/views/api/v1/issues/journals/_detail.json.jbuilder +++ b/app/views/api/v1/issues/journals/_detail.json.jbuilder @@ -10,6 +10,8 @@ json.user do end end if journal.is_journal_detail? + detail = journal.journal_details.take + json.operate_category detail.property == "attr" ? detail.prop_key : detail.property json.operate_content journal.is_journal_detail? ? journal.operate_content : nil else json.notes journal.notes