From 67e49a4f566bfda5ba3f84fcc8f5cd7a97070a02 Mon Sep 17 00:00:00 2001 From: jasder Date: Fri, 18 Jun 2021 10:52:14 +0800 Subject: [PATCH 1/4] =?UTF-8?q?FIX=20=E4=BF=AE=E5=A4=8Dpulls=E3=80=81issue?= =?UTF-8?q?s=20=E6=90=9C=E7=B4=A2=E6=95=B0=E9=87=8F=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/issues_controller.rb | 10 +++++----- app/controllers/pull_requests_controller.rb | 8 ++++---- app/views/issues/index.json.jbuilder | 1 - app/views/pull_requests/index.json.jbuilder | 1 - 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index dfc3e5f1..4b073415 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -19,15 +19,15 @@ class IssuesController < ApplicationController @all_issues = issues @filter_issues = @all_issues - @filter_issues = @filter_issues.where.not(status_id: 5) if params[:status_type].to_i == 1 - @filter_issues = @filter_issues.where(status_id: 5) if params[:status_type].to_i == 2 + @filter_issues = @filter_issues.where.not(status_id: IssueStatus::CLOSED) if params[:status_type].to_i == IssueStatus::ADD + @filter_issues = @filter_issues.where(status_id: IssueStatus::CLOSED) if params[:status_type].to_i == IssueStatus::SOLVING @filter_issues = @filter_issues.where("subject LIKE ? OR description LIKE ? ", "%#{params[:search]}%", "%#{params[:search]}%") if params[:search].present? - @open_issues = @all_issues.where.not(status_id: 5) - @close_issues = @all_issues.where(status_id: 5) + @open_issues = @all_issues.where.not(status_id: IssueStatus::CLOSED) + @close_issues = @all_issues.where(status_id: IssueStatus::CLOSED) @assign_to_me = @filter_issues.where(assigned_to_id: current_user&.id) @my_published = @filter_issues.where(author_id: current_user&.id) scopes = Issues::ListQueryService.call(issues,params.delete_if{|k,v| v.blank?}, "Issue") - @issues_size = @filter_issues.size + @issues_size = scopes.size @issues = paginate(scopes) respond_to do |format| diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index 2a9713f8..8521cd4b 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -15,13 +15,13 @@ class PullRequestsController < ApplicationController @all_issues = issues.distinct @filter_issues = @all_issues @filter_issues = @filter_issues.where("subject LIKE ? OR description LIKE ? ", "%#{params[:search]}%", "%#{params[:search]}%") if params[:search].present? - @open_issues = @filter_issues.joins(:pull_request).where(pull_requests: {status: 0}) - @close_issues = @filter_issues.joins(:pull_request).where(pull_requests: {status: 2}) - @merged_issues = @filter_issues.joins(:pull_request).where(pull_requests: {status: 1}) + @open_issues = @filter_issues.joins(:pull_request).where(pull_requests: {status: PullRequest::OPEN}) + @close_issues = @filter_issues.joins(:pull_request).where(pull_requests: {status: PullRequest::CLOSED}) + @merged_issues = @filter_issues.joins(:pull_request).where(pull_requests: {status: PullRequest::MERGED}) @user_admin_or_member = current_user.present? && (current_user.admin || @project.member?(current_user)) scopes = Issues::ListQueryService.call(issues,params.delete_if{|k,v| v.blank?}, "PullRequest") - @issues_size = @filter_issues.size + @issues_size = scopes.size @issues = paginate(scopes) end diff --git a/app/views/issues/index.json.jbuilder b/app/views/issues/index.json.jbuilder index 0f778faf..994453f0 100644 --- a/app/views/issues/index.json.jbuilder +++ b/app/views/issues/index.json.jbuilder @@ -1,5 +1,4 @@ json.partial! "commons/success" -json.all_count @all_issues.size json.open_count @open_issues.size json.close_count @close_issues.size json.assign_me_count @assign_to_me.size diff --git a/app/views/pull_requests/index.json.jbuilder b/app/views/pull_requests/index.json.jbuilder index b8326647..e13f1005 100644 --- a/app/views/pull_requests/index.json.jbuilder +++ b/app/views/pull_requests/index.json.jbuilder @@ -1,5 +1,4 @@ json.partial! "commons/success" -json.all_count @all_issues.size json.open_count @open_issues.size json.close_count @close_issues.size json.merged_issues_size @merged_issues.size From aff088a4449d95b65811c448afb92f09955b0090 Mon Sep 17 00:00:00 2001 From: jasder Date: Fri, 18 Jun 2021 11:02:58 +0800 Subject: [PATCH 2/4] ADD issues all count for issues api --- app/views/issues/index.json.jbuilder | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/issues/index.json.jbuilder b/app/views/issues/index.json.jbuilder index 994453f0..0f778faf 100644 --- a/app/views/issues/index.json.jbuilder +++ b/app/views/issues/index.json.jbuilder @@ -1,4 +1,5 @@ json.partial! "commons/success" +json.all_count @all_issues.size json.open_count @open_issues.size json.close_count @close_issues.size json.assign_me_count @assign_to_me.size From 855c51a470d91594224db6aa21a5845245c0abc7 Mon Sep 17 00:00:00 2001 From: jasder Date: Fri, 18 Jun 2021 16:20:50 +0800 Subject: [PATCH 3/4] =?UTF-8?q?FIX=20=E8=A7=A3=E5=86=B3=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=96=87=E4=BB=B6=E9=94=99=E8=AF=AF=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E4=BF=A1=E6=81=AF=E4=B8=8D=E5=87=86=E7=A1=AE=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gitea/create_file_interactor.rb | 10 ++++++++-- app/services/gitea/client_service.rb | 8 ++++++++ .../repository/entries/create_service.rb | 20 +++++++++++++++++-- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/app/interactors/gitea/create_file_interactor.rb b/app/interactors/gitea/create_file_interactor.rb index acceeaa9..0da781b6 100644 --- a/app/interactors/gitea/create_file_interactor.rb +++ b/app/interactors/gitea/create_file_interactor.rb @@ -24,8 +24,14 @@ module Gitea def run Contents::CreateForm.new(valid_params).validate! - response = Gitea::Repository::Entries::CreateService.new(token, owner, @params[:identifier], @params[:filepath], file_params).call - render_result(response) + result = Gitea::Repository::Entries::CreateService.call(token, + owner, @params[:identifier], @params[:filepath], file_params) + + if result[:status] == :success + @result = result[:body] + else + fail!(result[:message]) + end rescue Exception => exception Rails.logger.info "Exception ===========> #{exception.message}" fail!(exception.message) diff --git a/app/services/gitea/client_service.rb b/app/services/gitea/client_service.rb index 0ef04199..b88d8382 100644 --- a/app/services/gitea/client_service.rb +++ b/app/services/gitea/client_service.rb @@ -214,6 +214,14 @@ class Gitea::ClientService < ApplicationService [body, message] end + def json_parse!(body) + return nil unless body.present? + + body = JSON.parse(body) + body, message = fix_body(body) + body + end + def log_error(status, body) puts "[gitea] status: #{status}" puts "[gitea] body: #{body&.force_encoding('UTF-8')}" diff --git a/app/services/gitea/repository/entries/create_service.rb b/app/services/gitea/repository/entries/create_service.rb index 9f5abad2..5e1a4c4b 100644 --- a/app/services/gitea/repository/entries/create_service.rb +++ b/app/services/gitea/repository/entries/create_service.rb @@ -30,8 +30,7 @@ class Gitea::Repository::Entries::CreateService < Gitea::ClientService def call response = post(url, params) - - render_201_response(response) + response_payload(response) end private @@ -43,4 +42,21 @@ class Gitea::Repository::Entries::CreateService < Gitea::ClientService "/repos/#{owner}/#{repo_name}/contents/#{filepath}".freeze end + def response_payload(response) + status = response.status + body = response&.body + + log_error(status, body) + status_payload(status, body) + end + + def status_payload(status, body) + case status + when 201 then success(json_parse!(body)) + when 403 then error("你没有权限操作!") + when 404 then error("你操作的链接不存在!") + when 422 then error("#{filepath}文件已存在,不能重复创建!") + else error("系统错误!") + end + end end From 91e142ba828fe1405b340d8775737e5980a2ba4f Mon Sep 17 00:00:00 2001 From: jasder Date: Fri, 18 Jun 2021 16:44:37 +0800 Subject: [PATCH 4/4] FIX code bug --- app/interactors/gitea/create_file_interactor.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/interactors/gitea/create_file_interactor.rb b/app/interactors/gitea/create_file_interactor.rb index 0da781b6..38981352 100644 --- a/app/interactors/gitea/create_file_interactor.rb +++ b/app/interactors/gitea/create_file_interactor.rb @@ -62,7 +62,7 @@ module Gitea file_params = {} file_params = file_params.merge(branch: @params[:branch]) unless @params[:branch].blank? file_params = file_params.merge(new_branch: @params[:new_branch]) unless @params[:new_branch].blank? - file_params = file_params.merge(content: Base64.encode64(@params[:content])) + file_params = file_params.merge(content: Base64.encode64(@params[:content] || "")) file_params = file_params.merge(message: @params[:message]) unless @params[:message].blank? file_params = file_params.merge(committer: @params[:committer]) file_params