From 2827e28b0736c2028bce160dbe3bc39c1fae57b3 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 6 Mar 2023 10:33:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E8=AF=84=E8=AE=BA/?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E8=AE=B0=E5=BD=95=E6=80=BB=E6=95=B0=E8=BF=94?= =?UTF-8?q?=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/v1/issues/journals_controller.rb | 7 ++++-- .../api/v1/issues/journals/list_service.rb | 22 +++++++++++-------- .../v1/issues/journals/index.json.jbuilder | 3 +++ 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/app/controllers/api/v1/issues/journals_controller.rb b/app/controllers/api/v1/issues/journals_controller.rb index f7a24ea05..7a8b9b24b 100644 --- a/app/controllers/api/v1/issues/journals_controller.rb +++ b/app/controllers/api/v1/issues/journals_controller.rb @@ -6,8 +6,11 @@ class Api::V1::Issues::JournalsController < Api::V1::BaseController before_action :check_journal_operate_permission, only: [:update, :destroy] def index - @object_results = Api::V1::Issues::Journals::ListService.call(@issue, query_params, current_user) - @journals = kaminari_paginate(@object_results) + @object_result = Api::V1::Issues::Journals::ListService.call(@issue, query_params, current_user) + @total_journals_count = @object_result[:total_journals_count] + @total_operate_journals_count = @object_result[:total_operate_journals_count] + @total_comment_journals_count = @object_result[:total_comment_journals_count] + @journals = kaminari_paginate(@object_result[:data]) end def create diff --git a/app/services/api/v1/issues/journals/list_service.rb b/app/services/api/v1/issues/journals/list_service.rb index 02f709e55..486fa5d3f 100644 --- a/app/services/api/v1/issues/journals/list_service.rb +++ b/app/services/api/v1/issues/journals/list_service.rb @@ -3,7 +3,7 @@ class Api::V1::Issues::Journals::ListService < ApplicationService include ActiveModel::Model attr_reader :issue, :category, :keyword, :sort_by, :sort_direction - attr_accessor :queried_journals + attr_accessor :queried_journals, :total_journals_count, :total_operate_journals_count, :total_comment_journals_count validates :category, inclusion: {in: %w(all comment operate), message: "请输入正确的Category"} validates :sort_by, inclusion: {in: Journal.column_names, message: '请输入正确的SortBy'}, allow_blank: true @@ -22,7 +22,7 @@ class Api::V1::Issues::Journals::ListService < ApplicationService begin journal_query_data - @queried_journals + {data: @queried_journals, total_journals_count: @total_journals_count, total_operate_journals_count: total_operate_journals_count, total_comment_journals_count: total_comment_journals_count} rescue raise Error, "服务器错误,请联系系统管理员!" end @@ -33,17 +33,21 @@ class Api::V1::Issues::Journals::ListService < ApplicationService @queried_journals = issue.journals - case category - when 'comment' - @queried_journals = issue.comment_journals - when 'operate' - @queried_journals = issue.operate_journals - end - @queried_journals = @queried_journals.parent_journals @queried_journals = @queried_journals.ransack(notes_cont: keyword).result if keyword.present? + @total_journals_count = queried_journals.distinct.size + @total_operate_journals_count = @queried_journals.where(notes: nil).distinct.size + @total_comment_journals_count = @queried_journals.where.not(notes: nil).distinct.size + + case category + when 'comment' + @queried_journals = @queried_journals.where.not(notes: nil) + when 'operate' + @queried_journals = @queried_journals.where(notes: nil) + end + @queried_journals = @queried_journals.includes(:journal_details, :user, :attachments, first_ten_children_journals: [:parent_journal, :reply_journal]) @queried_journals = @queried_journals.reorder("journals.#{sort_by} #{sort_direction}").distinct diff --git a/app/views/api/v1/issues/journals/index.json.jbuilder b/app/views/api/v1/issues/journals/index.json.jbuilder index bea6746a6..49f94aa37 100644 --- a/app/views/api/v1/issues/journals/index.json.jbuilder +++ b/app/views/api/v1/issues/journals/index.json.jbuilder @@ -1,3 +1,6 @@ +json.total_journals_count @total_journals_count +json.total_operate_journals_count @total_operate_journals_count +json.total_comment_journals_count @total_comment_journals_count json.total_count @journals.total_count json.journals @journals do |journal| json.partial! "detail", journal: journal