From a07da79e89d4d564d1b71822346472890390b7ac Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 22 Feb 2023 14:42:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E6=A0=87=E7=AD=BE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/issues_controller.rb | 3 ++- app/models/issue_tag.rb | 1 + app/services/api/v1/issues/list_service.rb | 24 +++++++++++---------- app/views/api/v1/issues/index.json.jbuilder | 3 ++- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/app/controllers/api/v1/issues_controller.rb b/app/controllers/api/v1/issues_controller.rb index 782c87813..c511f88b2 100644 --- a/app/controllers/api/v1/issues_controller.rb +++ b/app/controllers/api/v1/issues_controller.rb @@ -5,8 +5,9 @@ class Api::V1::IssuesController < Api::V1::BaseController before_action :check_issue_operate_permission, only: [:update, :destroy] def index - IssueTag.init_data(@project.id) if @project.issue_tags.size < 10 + IssueTag.init_data(@project.id) unless $redis_cache.hget("project_init_issue_tags", @project.id) @object_result = Api::V1::Issues::ListService.call(@project, query_params, current_user) + @total_issues_count = @object_result[:total_issues_count] @opened_issues_count = @object_result[:opened_issues_count] @closed_issues_count = @object_result[:closed_issues_count] diff --git a/app/models/issue_tag.rb b/app/models/issue_tag.rb index b111ad2db..c938e8386 100644 --- a/app/models/issue_tag.rb +++ b/app/models/issue_tag.rb @@ -43,6 +43,7 @@ class IssueTag < ApplicationRecord next if IssueTag.exists?(project_id: project_id, name: item[0]) IssueTag.create!(project_id: project_id, name: item[0], description: item[1], color: item[2]) end + $redis_cache.hset("project_init_issue_tags", project_id, 1) end diff --git a/app/services/api/v1/issues/list_service.rb b/app/services/api/v1/issues/list_service.rb index 8acf20133..6cea89327 100644 --- a/app/services/api/v1/issues/list_service.rb +++ b/app/services/api/v1/issues/list_service.rb @@ -3,7 +3,7 @@ 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, :closed_issues_count, :opened_issues_count + attr_accessor :queried_issues, :total_issues_count, :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"} @@ -31,7 +31,7 @@ class Api::V1::Issues::ListService < ApplicationService begin issue_query_data - return {data: queried_issues, closed_issues_count: @closed_issues_count, opened_issues_count: @opened_issues_count} + 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 @@ -40,15 +40,6 @@ 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' - issues = issues.closed - when 'opened' - issues = issues.opened - end case participant_category when 'aboutme' # 关于我的 @@ -61,6 +52,17 @@ 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? diff --git a/app/views/api/v1/issues/index.json.jbuilder b/app/views/api/v1/issues/index.json.jbuilder index 1a324eb27..50165b60b 100644 --- a/app/views/api/v1/issues/index.json.jbuilder +++ b/app/views/api/v1/issues/index.json.jbuilder @@ -1,6 +1,7 @@ -json.total_count @issues.total_count +json.total_issues_count @opened_issues_count json.opened_count @opened_issues_count json.closed_count @closed_issues_count +json.total_count @issues.total_count json.issues @issues.each do |issue| json.partial! "simple_detail", locals: {issue: issue} end \ No newline at end of file