From c5b24a344718dda89acb80410f717def5eaae414 Mon Sep 17 00:00:00 2001 From: nigel007 <609441862@qq.com> Date: Sun, 3 Jan 2021 17:09:54 +0800 Subject: [PATCH] add operation for pull request create/merge/refuse --- app/controllers/pull_requests_controller.rb | 38 ++++++++++++++++++--- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index 1699cf60..6551bf9a 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -54,7 +54,17 @@ class PullRequestsController < ApplicationController @pull_request, @gitea_pull_request = PullRequests::CreateService.call(current_user, @owner, @project, params) if @gitea_pull_request[:status] == :success @pull_request.bind_gitea_pull_request!(@gitea_pull_request[:body]["number"]) - render_ok + + # author: zxh + # 调用上链API + success_blockchain = push_activity_2_blockchain("pull_request_create", @pull_request) + if success_blockchain == false + render_error("create pull request error: cannot save to blockchain") + raise ActiveRecord::Rollback + else + render_ok + end + else render_error("create pull request error: #{@gitea_pull_request[:status]}") raise ActiveRecord::Rollback @@ -119,7 +129,17 @@ class PullRequestsController < ApplicationController begin @pull_request.update(status: 2) @pull_request.issue.update(status_id: 5) - normal_status(1, "已拒绝") + + # author: zxh + # 调用上链API + success_blockchain = push_activity_2_blockchain("pull_request_refuse", @pull_request) + if success_blockchain == false + normal_status(-1, "拒绝失败") + raise ActiveRecord::Rollback + else + normal_status(1, "已拒绝") + end + rescue => e normal_status(-1, e.message) raise ActiveRecord::Rollback @@ -152,10 +172,20 @@ class PullRequestsController < ApplicationController } merge_pr = Gitea::PullRequest::MergeService.call(current_user.gitea_token, @project.owner.login, @repository.try(:identifier), @pull_request.try(:gpid), requests_params) - if @pull_request.update_attribute(:status, 1) && merge_pr[:status].to_i == 200 + if merge_pr.status.to_i == 200 && @pull_request.update_attribute(:status, 1) @pull_request&.project_trends&.update_all(action_type: "close") @issue&.custom_journal_detail("merge", "", "该合并请求已被合并", current_user&.id) - normal_status(1, "合并成功") + + # author: zxh + # 调用上链API + success_blockchain = push_activity_2_blockchain("pull_request_merge", @pull_request) + if success_blockchain == false + normal_status(-1, "合并失败") + raise ActiveRecord::Rollback + else + normal_status(1, "合并成功") + end + else normal_status(-1, "合并失败") end