|
|
|
@@ -2,7 +2,7 @@ class Api::V1::Issues::Milestones::DetailIssuesService < ApplicationService |
|
|
|
include ActiveModel::Model |
|
|
|
|
|
|
|
attr_reader :project, :category, :author_id, :assigner_id, :issue_tag_ids, :sort_by, :sort_direction, :current_user |
|
|
|
attr_accessor :queried_issues |
|
|
|
attr_accessor :queried_issues, :total_issues_count, :closed_issues_count, :opened_issues_count |
|
|
|
|
|
|
|
validates :category, inclusion: {in: %w(all opened closed), message: "请输入正确的Category"} |
|
|
|
validates :sort_by, inclusion: {in: ['issues.created_on', 'issues.updated_on', 'issue_priorities.position'], message: '请输入正确的SortBy'}, allow_blank: true |
|
|
|
@@ -26,7 +26,7 @@ class Api::V1::Issues::Milestones::DetailIssuesService < ApplicationService |
|
|
|
begin |
|
|
|
issue_query_data |
|
|
|
|
|
|
|
queried_issues |
|
|
|
return {data: queried_issues, total_issues_count: @total_issues_count, closed_issues_count: @closed_issues_count, opened_issues_count: @opened_issues_count} |
|
|
|
rescue |
|
|
|
raise Error, "服务器错误,请联系系统管理员!" |
|
|
|
end |
|
|
|
@@ -36,22 +36,26 @@ class Api::V1::Issues::Milestones::DetailIssuesService < ApplicationService |
|
|
|
def issue_query_data |
|
|
|
issues = @milestone.issues.issue_issue |
|
|
|
|
|
|
|
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? |
|
|
|
|
|
|
|
# assigner_id |
|
|
|
issues = issues.joins(:assigners).where(users: {id: assigner_id}).or(issues.joins(:assigners).where(assigned_to_id: assigner_id)) if assigner_id.present? |
|
|
|
|
|
|
|
issues = issues.joins(:issue_tags).where(issue_tags: {id: issue_tag_ids}) if issue_tag_ids.present? |
|
|
|
issues = issues.ransack(issue_tags_value_cont: issue_tag_ids.sort!.join(",")).result unless issue_tag_ids.blank? |
|
|
|
|
|
|
|
@total_issues_count = issues.distinct.size |
|
|
|
@closed_issues_count = issues.closed.distinct.size |
|
|
|
@opened_issues_count = issues.opened.distinct.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).references(:assigners) |
|
|
|
scope = issues.includes(:priority, :issue_status, :user, :show_assigners, :version, :show_issue_tags, :comment_journals).references(:assigners) |
|
|
|
|
|
|
|
scope = scope.reorder("#{sort_by} #{sort_direction}").distinct |
|
|
|
|
|
|
|
|