| @@ -19,18 +19,14 @@ class Api::V1::Projects::BranchesController < Api::V1::BaseController | |||||
| @result_object = Api::V1::Projects::Branches::DeleteService.call(@project, params[:name], current_user&.gitea_token) | @result_object = Api::V1::Projects::Branches::DeleteService.call(@project, params[:name], current_user&.gitea_token) | ||||
| if @result_object | if @result_object | ||||
| # 有开启的pr需要一同关闭 | # 有开启的pr需要一同关闭 | ||||
| open_pull_requests = @project.pull_requests.opening.where(head: params[:name]).where(user_id: current_user.id) | |||||
| if open_pull_requests.present? | |||||
| open_pull_requests.each do |pull_request| | |||||
| closed = PullRequests::CloseService.call(@project.owner, @project.repository, pull_request, current_user) | |||||
| if closed === true | |||||
| pull_request.project_trends.create!(user: current_user, project: @project,action_type: ProjectTrend::CLOSE) | |||||
| # 合并请求下issue处理为关闭 | |||||
| pull_request.issue&.update_attributes!({status_id:5}) | |||||
| SendTemplateMessageJob.perform_later('PullRequestClosed', current_user.id, pull_request.id) if Site.has_notice_menu? | |||||
| end | |||||
| end | |||||
| # 1、删除本仓库中存在未关闭的pr,即本仓库分支1->分支2 | |||||
| # 2、如果是fork仓库,考虑删除主仓库中存在未关闭的pr,即本仓库:分支1->主:分支2,同时分两种删除:1删除本仓库分支1,2删除主仓库分支2 | |||||
| close_pull_requests_by(@project, params[:name]) | |||||
| if @project.forked_from_project_id.present? | |||||
| # fork项目中删除分支 | |||||
| close_pull_requests_by(@project.fork_project, params[:name]) | |||||
| end | end | ||||
| return render_ok | return render_ok | ||||
| else | else | ||||
| return render_error('删除分支失败!') | return render_error('删除分支失败!') | ||||
| @@ -52,4 +48,19 @@ class Api::V1::Projects::BranchesController < Api::V1::BaseController | |||||
| def branch_params | def branch_params | ||||
| params.require(:branch).permit(:new_branch_name, :old_branch_name) | params.require(:branch).permit(:new_branch_name, :old_branch_name) | ||||
| end | end | ||||
| def close_pull_requests_by(project, branch_name) | |||||
| open_pull_requests = project.pull_requests.opening.where(head: branch_name).or(a.pull_requests.opening.where(base: branch_name)) | |||||
| if open_pull_requests.present? | |||||
| open_pull_requests.each do |pull_request| | |||||
| closed = PullRequests::CloseService.call(project.owner, project.repository, pull_request, current_user) | |||||
| if closed === true | |||||
| pull_request.project_trends.create!(user: current_user, project: project,action_type: ProjectTrend::CLOSE) | |||||
| # 合并请求下issue处理为关闭 | |||||
| pull_request.issue&.update_attributes!({status_id:5}) | |||||
| SendTemplateMessageJob.perform_later('PullRequestClosed', current_user.id, pull_request.id) if Site.has_notice_menu? | |||||
| end | |||||
| end | |||||
| end | |||||
| end | |||||
| end | end | ||||