更改:疑修列表开启、关闭数量规则以及排序规则

This commit is contained in:
yystopf 2023-02-22 13:56:02 +08:00
parent ed5d12654e
commit 54a85a60fa
5 changed files with 33 additions and 13 deletions

View File

@ -6,11 +6,11 @@ class Api::V1::IssuesController < Api::V1::BaseController
def index
IssueTag.init_data(@project.id) if @project.issue_tags.size < 10
@object_results = Api::V1::Issues::ListService.call(@project, query_params, current_user)
@opened_issues_count = @object_results.opened.size
@closed_issues_count = @object_results.closed.size
@object_result = Api::V1::Issues::ListService.call(@project, query_params, current_user)
@opened_issues_count = @object_result[:opened_issues_count]
@closed_issues_count = @object_result[:closed_issues_count]
@issues = kaminari_paginate(@object_results)
@issues = kaminari_paginate(@object_result[:data])
end
def create

View File

@ -15,4 +15,21 @@
class IssuePriority < ApplicationRecord
has_many :issues
def self.init_data
map = {
"1" => "",
"2" => "正常",
"3" => "",
"4" => "紧急"
}
IssuePriority.order(id: :asc).each do |prty|
if map["#{prty.id}"] == prty.name
IssuePriority.find_or_create_by(id: prty.id, name: prty.name)
else
Issue.where(priority_id: prty.id).each{|i| i.update_column(:priority_id, 2)}
prty.destroy!
end
end
end
end

View File

@ -36,7 +36,7 @@ class IssueStatus < ApplicationRecord
"6" => "拒绝"
}
IssueStatus.order(id: :asc).each do |stat|
if map[stat.id] == stat.name
if map["#{stat.id}"] == stat.name
IssueStatus.find_or_create_by(id: stat.id, name: stat.name)
else
Issue.where(status_id: stat.id).each{|i| i.update_column(:status_id, 1)}

View File

@ -3,11 +3,11 @@ class Api::V1::Issues::ListService < ApplicationService
attr_reader :project, :category, :participant_category, :keyword, :author_id, :issue_tag_ids
attr_reader :milestone_id, :assigner_id, :status_id, :sort_by, :sort_direction, :current_user
attr_accessor :queried_issues
attr_accessor :queried_issues, :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 :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
@ -21,7 +21,7 @@ class Api::V1::Issues::ListService < ApplicationService
@milestone_id = params[:milestone_id]
@assigner_id = params[:assigner_id]
@status_id = params[:status_id]
@sort_by = params[:sort_by].present? ? params[:sort_by] : 'updated_on'
@sort_by = params[:sort_by].present? ? params[:sort_by] : 'issues.updated_on'
@sort_direction = (params[:sort_direction].present? ? params[:sort_direction] : 'desc').downcase
@current_user = current_user
end
@ -31,7 +31,7 @@ class Api::V1::Issues::ListService < ApplicationService
begin
issue_query_data
queried_issues
return {data: queried_issues, closed_issues_count: @closed_issues_count, opened_issues_count: @opened_issues_count}
rescue
raise Error, "服务器错误,请联系系统管理员!"
end
@ -40,6 +40,8 @@ class Api::V1::Issues::ListService < ApplicationService
private
def issue_query_data
issues = @project.issues.issue_issue
@closed_issues_count = issues.closed.size
@opened_issues_count = issues.opened.size
case category
when 'closed'
@ -52,11 +54,11 @@ class Api::V1::Issues::ListService < ApplicationService
when 'aboutme' # 关于我的
issues = issues.joins(:participants, :issue_participants).where(issue_participants: {participant_type: %(authored assigned atme)},users: {id: current_user&.id})
when 'authoredme' # 我创建的
issues = issues.joins(:participants, :issue_participants).where(issue_participants: {participant_type: %(authored)},users: {id: current_user&.id})
issues = issues.joins(:participants, :issue_participants).where(issue_participants: {participant_type: 'assigned'},users: {id: current_user&.id})
when 'assignedme' # 我负责的
issues = issues.joins(:participants, :issue_participants).where(issue_participants: {participant_type: %(assigned)},users: {id: current_user&.id})
issues = issues.joins(:participants, :issue_participants).where(issue_participants: {participant_type: 'assigned'},users: {id: current_user&.id})
when 'atme' # @我的
issues = issues.joins(:participants, :issue_participants).where(issue_participants: {participant_type: %(atme)},users: {id: current_user&.id})
issues = issues.joins(:participants, :issue_participants).where(issue_participants: {participant_type: 'atme'},users: {id: current_user&.id})
end
# author_id
@ -79,7 +81,7 @@ class Api::V1::Issues::ListService < ApplicationService
scope = q.result.includes(:priority, :issue_status, :user, :assigners, :version, :issue_tags, :comment_journals)
scope = scope.reorder("issues.#{sort_by} #{sort_direction}").distinct
scope = scope.reorder("#{sort_by} #{sort_direction}").distinct
@queried_issues = scope
end

View File

@ -27,6 +27,7 @@ namespace :upgrade_issue_generate_data do
task project_init_issue_tags_and_status: :environment do
puts "____________fix start________________"
IssuePriority.init_data
IssueStatus.init_data
IssueTag.where(user_id: nil).destroy_all
count = 0