From 05aeecf67a0fb460b720930273fb4f270196cc53 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 10 Jan 2024 14:03:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E6=A0=87=E8=AE=B0=E5=85=B3=E8=81=94=E7=BB=84=E7=BB=87=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/pm/issue_tags_controller.rb | 9 ++++++--- app/controllers/api/pm/issues_controller.rb | 2 +- app/models/issue_tag.rb | 9 +++++++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/controllers/api/pm/issue_tags_controller.rb b/app/controllers/api/pm/issue_tags_controller.rb index 3962b76d4..f0f3543ca 100644 --- a/app/controllers/api/pm/issue_tags_controller.rb +++ b/app/controllers/api/pm/issue_tags_controller.rb @@ -2,7 +2,10 @@ class Api::Pm::IssueTagsController < Api::Pm::BaseController def index @issue_tags = IssueTag.pm_able - @issue_tags = @issue_tags.where(organization_id: params[:organization_id]) if params[:organization_id].present? + if params[:organization_id].present? + IssueTag.pm_org_init_data(params[:organization_id]) unless $redis_cache.hget("pm_org_init_issue_tags", params[:organization_id]) + @issue_tags = @issue_tags.where(organization_id: params[:organization_id]) + end @issue_tags = @issue_tags.where(pm_project_id: params[:pm_project_id]) if params[:pm_project_id].present? @issue_tags = @issue_tags.ransack(name_cont: params[:keyword]).result if params[:keyword].present? @issue_tags = @issue_tags.reorder("#{tag_sort_by} #{tag_sort_direction}") @@ -19,7 +22,7 @@ class Api::Pm::IssueTagsController < Api::Pm::BaseController render_error("创建标记失败!") end end - + before_action :load_issue_tag, only: [:update, :destroy] def update @@ -48,7 +51,7 @@ class Api::Pm::IssueTagsController < Api::Pm::BaseController end def tag_sort_direction - sort_direction = params.fetch(:sort_direction, "desc").downcase + sort_direction = params.fetch(:sort_direction, "desc")&.downcase sort_direction = %w(desc asc).include?(sort_direction) ? sort_direction : "desc" sort_direction end diff --git a/app/controllers/api/pm/issues_controller.rb b/app/controllers/api/pm/issues_controller.rb index 81f6a7af6..6cd37ce18 100644 --- a/app/controllers/api/pm/issues_controller.rb +++ b/app/controllers/api/pm/issues_controller.rb @@ -98,7 +98,7 @@ class Api::Pm::IssuesController < Api::Pm::BaseController end def tags - IssueTag.pm_init_data(params[:pm_project_id]) unless $redis_cache.hget("pm_project_init_issue_tags", params[:pm_project_id]) + # IssueTag.pm_init_data(params[:pm_project_id]) unless $redis_cache.hget("pm_project_init_issue_tags", params[:pm_project_id]) @issue_tags = IssueTag.where(pm_project_id: params[:pm_project_id]).reorder("#{tag_sort_by} #{tag_sort_direction}") @issue_tags = @issue_tags.ransack(name_cont: params[:keyword]).result if params[:keyword].present? params[:only_name] = true #强制渲染 不走project diff --git a/app/models/issue_tag.rb b/app/models/issue_tag.rb index 3c88c4ef1..496cc907e 100644 --- a/app/models/issue_tag.rb +++ b/app/models/issue_tag.rb @@ -59,6 +59,15 @@ class IssueTag < ApplicationRecord $redis_cache.hset("pm_project_init_issue_tags", pm_project_id, 1) end + def self.pm_org_init_data(organization_id) + data = init_issue_tag_data + data.each do |item| + next if IssueTag.exists?(organization_id: organization_id, project_id: 0, name: item[0]) + IssueTag.create!(organization_id: organization_id, project_id: 0, name: item[0], description: item[1], color: item[2]) + end + $redis_cache.hset("pm_org_init_issue_tags", organization_id, 1) + end + def reset_counter_field self.update_column(:issues_count, issue_issues.size) self.update_column(:pull_requests_count, pull_request_issues.size)