From 9372fcf6a465273944af8bb077da0374255d7e73 Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Fri, 17 Jul 2020 11:18:12 +0800 Subject: [PATCH] change versions and check repository --- app/controllers/issues_controller.rb | 3 +- app/controllers/pull_requests_controller.rb | 1 + app/jobs/check_mirror_job.rb | 36 +++++++++++++++++++ app/tasks/check_mirror_rake.rb | 12 +++++++ ...0717015216_change_versions_issues_count.rb | 15 ++++++++ 5 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 app/jobs/check_mirror_job.rb create mode 100644 app/tasks/check_mirror_rake.rb create mode 100644 db/migrate/20200717015216_change_versions_issues_count.rb diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 985f118db..8fdb06371 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -137,7 +137,8 @@ class IssuesController < ApplicationController end @issue.project_trends.create(user_id: current_user.id, project_id: @project.id, action_type: "create") - normal_status(0, "创建成功") + # normal_status(0, "创建成功",) + render :json => { status: 0, message: "创建成功", id: @issue.id} else normal_status(-1, "创建失败") end diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index dec451376..bd4e0d8f8 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -88,6 +88,7 @@ class PullRequestsController < ApplicationController if params[:title].to_s.include?("WIP:") pull_issue.custom_journal_detail("WIP", "", "这个合并请求被标记为尚未完成的工作。完成后请从标题中移除WIP:前缀。", current_user&.id) end + # render :json => { status: 0, message: "PullRequest创建成功", id: pull_issue.id} normal_status(0, "PullRequest创建成功") else normal_status(-1, "PullRequest创建失败") diff --git a/app/jobs/check_mirror_job.rb b/app/jobs/check_mirror_job.rb new file mode 100644 index 000000000..9854110b8 --- /dev/null +++ b/app/jobs/check_mirror_job.rb @@ -0,0 +1,36 @@ + +# 运行示例: bundle exec rails runner "CheckMirrorJob.new.call()" + +class CheckMirrorJob < ApplicationJob + queue_as :default + + def perform(project) + SyncLog.sync_log("==========begin_check_project_id_job:#{project.id}============") + begin + response = Gitea::Repository::Branches::ListService.new(project.owner, project.identifier).call + unless response.present? + SyncLog.sync_log("==========check_project_error_id:#{project.id}============") + ActiveRecord::Base.transaction do + delete_gitea = Gitea::Repository::DeleteService.new(project.owner, project.identifier).call + if delete_gitea.status == 204 || delete_gitea.status == 404 #删除成功或者仓库不存在,都重新创建 + repository_params= { + name: project.identifier, + auto_init: true, + private: project.repository.hidden, + } + gitea_repository = Gitea::Repository::CreateService.new(project.owner.gitea_token, repository_params).call + if gitea_repository + project.update_columns(gpid: gitea_repository["id"],forked_count: gitea_repository["forks_count"]) + else + SyncLog.sync_log("==========gitea_repository_created_failed:#{project.id}============") + end + else + SyncLog.sync_log("==========delete_gitea_failed:#{project.id}============") + end + end + end + rescue => e + SyncLog.sync_log("==========failed_check_project_id:#{project.id}============errors:#{e}") + end + end +end \ No newline at end of file diff --git a/app/tasks/check_mirror_rake.rb b/app/tasks/check_mirror_rake.rb new file mode 100644 index 000000000..397b565b7 --- /dev/null +++ b/app/tasks/check_mirror_rake.rb @@ -0,0 +1,12 @@ +class CheckMirrorRake + # 运行示例: bundle exec rails runner "CheckMirrorRake.new.call()" + + def call + SyncLog.sync_log("=====begin to check mirror======") + all_projects = Projects.select(:id,:identifier,:user_id, :gpid, :forked_count,:is_public).includes(:owner, :repository) + all_projects.each do |project| + SyncLog.sync_log("=====check_project_id:#{project.id}======") + CheckMirrorJob.perform_later(project) + end + end + end \ No newline at end of file diff --git a/db/migrate/20200717015216_change_versions_issues_count.rb b/db/migrate/20200717015216_change_versions_issues_count.rb new file mode 100644 index 000000000..a614a04d2 --- /dev/null +++ b/db/migrate/20200717015216_change_versions_issues_count.rb @@ -0,0 +1,15 @@ +class ChangeVersionsIssuesCount < ActiveRecord::Migration[5.2] + def change + versions = Version.includes(:issues).select(:id, :closed_issues_count, :percent) + versions.each do |v| + closed_issues = Issue.select(:id, :fixed_version_id, :status_id).where(fixed_version_id: v.id, status_id: 5).size + unless v.closed_issues_count.to_i == closed_issues + puts v.id + percent = v.issues_count.to_i <=0 ? 0.0 : (closed_issues.to_f / v.issues_count.to_i) + v.closed_issues_count = closed_issues + v.percent = percent + v.save + end + end + end +end