From 54a85a60fab8c4a1a712896157eb68b9c4a1e050 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 22 Feb 2023 13:56:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9A=E7=96=91=E4=BF=AE?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=BC=80=E5=90=AF=E3=80=81=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E8=A7=84=E5=88=99=E4=BB=A5=E5=8F=8A=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/issues_controller.rb | 8 ++++---- app/models/issue_priority.rb | 17 +++++++++++++++++ app/models/issue_status.rb | 2 +- app/services/api/v1/issues/list_service.rb | 18 ++++++++++-------- lib/tasks/upgrade_issue_generate_data.rake | 1 + 5 files changed, 33 insertions(+), 13 deletions(-) diff --git a/app/controllers/api/v1/issues_controller.rb b/app/controllers/api/v1/issues_controller.rb index 35634a1ad..782c87813 100644 --- a/app/controllers/api/v1/issues_controller.rb +++ b/app/controllers/api/v1/issues_controller.rb @@ -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 diff --git a/app/models/issue_priority.rb b/app/models/issue_priority.rb index 27865a70f..c8ef73299 100644 --- a/app/models/issue_priority.rb +++ b/app/models/issue_priority.rb @@ -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 diff --git a/app/models/issue_status.rb b/app/models/issue_status.rb index eb4db1dcc..fcce29c32 100644 --- a/app/models/issue_status.rb +++ b/app/models/issue_status.rb @@ -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)} diff --git a/app/services/api/v1/issues/list_service.rb b/app/services/api/v1/issues/list_service.rb index 6383a6e12..8acf20133 100644 --- a/app/services/api/v1/issues/list_service.rb +++ b/app/services/api/v1/issues/list_service.rb @@ -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 diff --git a/lib/tasks/upgrade_issue_generate_data.rake b/lib/tasks/upgrade_issue_generate_data.rake index 857644eee..1fbe5df24 100644 --- a/lib/tasks/upgrade_issue_generate_data.rake +++ b/lib/tasks/upgrade_issue_generate_data.rake @@ -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