FIX 插销掉dev_chain分支的合并

This commit is contained in:
Jasder 2020-07-15 17:13:16 +08:00
parent c181abce81
commit b9abd6a152
3 changed files with 85 additions and 32 deletions

View File

@ -5,14 +5,31 @@ class SyncForgeController < ApplicationController
ActiveRecord::Base.transaction do
params.permit!
sync_params = params[:sync_params]
project_user = User.where(login: sync_params[:owner_login])&.first
#以前已同步的项目,那么肯定存在仓库
if Project.exists?(identifier: sync_params[:identifier])
user_projects = Project.where(user_id: project_user.id)
if user_projects.where(id: sync_params[:id], identifier: sync_params[:identifier]).present?
has_project = true
project = user_projects.where(id: sync_params[:id], identifier: sync_params[:identifier])&.first
elsif user_projects.where(id: sync_params[:id]).present?
has_project = true
project = user_projects.where(id: sync_params[:id])&.first
elsif user_projects.where(identifier: sync_params[:identifier]).present?
has_project = true
project = user_projects.where(identifier: sync_params[:identifier])&.first
else
has_project = false
end
if has_project
SyncLog.sync_log("=================begin_to_update_project========")
project = Project.find_by(identifier: sync_params[:identifier])
# project = user_projects.where(id: sync_params[:id]), identifier: sync_params[:identifier])&.first ||
check_sync_project(project, sync_params)
else #新建项目
SyncLog.sync_log("=================begin_to_create_new_project========")
project_user = User.where(login: sync_params[:owner_login]).first
project_params = {
repository_name: sync_params[:identifier],
user_id: project_user.id,
@ -30,6 +47,8 @@ class SyncForgeController < ApplicationController
SyncRepositoryJob.perform_later(sync_params[:owner_login], sync_params[:identifier], sync_params[:repository], get_sudomain) if sync_params[:repository].present?
check_new_project(project, sync_params)
else
SyncLog.sync_project_log("=============new_project_create_failed, trustie_project_id==:#{params[:sync_params][:id]}")
end
end
end
@ -57,6 +76,7 @@ class SyncForgeController < ApplicationController
new_user = User.new(u[:user_params].merge(mail: u_mail))
username = new_user.login
password = "12345678"
if new_user.save!
SyncLog.sync_log("=================sync_to_user_success==#{new_user.login}")
@ -175,11 +195,10 @@ class SyncForgeController < ApplicationController
begin
forge_issue_ids = project&.issues&.select(:id)&.pluck(:id)
sync_projects_params = {}
unless forge_issue_ids.size.to_i < old_issues_params[:count].to_i
forge_journal_ids = Journal.select([:id, :journalized_id, :journalized_type]).where(journalized_id: forge_issue_ids).pluck(:id)
if forge_issue_ids.size.to_i <= old_issues_params[:count].to_i
diff_issue_ids = old_issues_params[:ids] - forge_issue_ids
if diff_issue_ids.size == 0 #issue数量一样判断评论是否有增减
forge_journal_ids = Journal.select([:id, :journalized_id, :journalized_type]).where(journalized_id: forge_issue_ids).pluck(:id)
diff_journal_ids = old_issues_params[:journals][:ids] - forge_journal_ids
unless diff_journal_ids.size == 0
sync_projects_params = {
@ -209,7 +228,7 @@ class SyncForgeController < ApplicationController
def change_project_watchers(project, watchers,gitea_main)
SyncLog.sync_log("***5. begin_to_sync_watchers---------------")
forge_watchers_ids = project&.watchers&.select(:id)&.pluck(:id)
unless forge_watchers_ids.size.to_i < watchers[:count].to_i
if forge_watchers_ids.size.to_i <= watchers[:count].to_i
diff_target_ids = watchers[:ids] - forge_watchers_ids
if diff_target_ids.size > 0
sync_projects_params = {
@ -228,7 +247,7 @@ class SyncForgeController < ApplicationController
def change_project_versions(project, versions,gitea_main)
SyncLog.sync_log("***4. begin_to_sync_versions---------------")
forge_version_ids = project&.versions&.select(:id)&.pluck(:id)
unless forge_version_ids.size < versions[:count].to_i
if forge_version_ids.size <= versions[:count].to_i
diff_version_ids = versions[:ids] - forge_version_ids
if diff_version_ids.size > 0
sync_projects_params = {
@ -247,7 +266,7 @@ class SyncForgeController < ApplicationController
def change_project_members(project, members,gitea_main)
SyncLog.sync_log("***3. begin_to_sync_members---------------")
forge_member_ids = project&.members&.select(:id)&.pluck(:id)
unless forge_member_ids.size < members[:count]
if forge_member_ids.size <= members[:count]
diff_member_ids = members[:ids] - forge_member_ids
if diff_member_ids.size > 0
sync_projects_params = {

View File

@ -57,23 +57,42 @@ class SyncProjectsJob < ApplicationJob
u_id = User.select(:id, :login).where(login: re[:user_login]).pluck(:id).first
re[:target_params].delete(:id)
if target_type == "Issue"
new_target = target_type.constantize.new(re[:target_params].merge(author_id: u_id))
is_exists = Issue.exists?(author_id: u_id, project_id: re[:target_params][:project_id], subject: re[:target_params][:subject])
unless is_exists
assing_u_id = User.select(:id, :login).where(login: re[:assign_login]).pluck(:id).first
new_target = target_type.constantize.new(re[:target_params].merge(author_id: u_id))
new_target.assigned_to_id = assing_u_id
end
else
new_target = target_type.constantize.new(re[:target_params].merge(user_id: u_id))
case target_type
when "Journal"
is_exists = Journal.exists?(user_id: u_id, journalized_id: re[:target_params][:journalized_id], created_on: re[:target_params][:created_on].to_s.to_time)
when "Member"
is_exists = Member.exists?(user_id: u_id, project_id: re[:target_params][:project_id], created_on: re[:target_params][:created_on].to_s.to_time)
when "Version"
is_exists = Version.exists?(user_id: u_id, project_id: re[:target_params][:project_id], created_on: re[:target_params][:created_on].to_s.to_time)
when "Watcher"
is_exists = Watcher.exists?(user_id: u_id, watchable_id: re[:target_params][:watchable_id], created_at: re[:target_params][:created_at].to_s.to_time)
when "PraiseTread"
is_exists = PraiseTread.exists?(user_id: u_id, praise_tread_object_id: re[:target_params][:praise_tread_object_id], created_at: re[:target_params][:created_at].to_s.to_time)
else
is_exists = false
end
unless is_exists
new_target = target_type.constantize.new(re[:target_params].merge(user_id: u_id))
end
end
if target_type == "Issue"
assing_u_id = User.select(:id, :login).where(login: re[:assign_login]).pluck(:id).first
new_target.assigned_to_id = assing_u_id
end
if new_target.save!
if !is_exists && new_target.save!
SyncLog.sync_project_log("***【#{target_type}】. create_success---------------")
if re[:journals].present?
create_journals(re[:journals], "Journal", new_target.id)
end
if re[:journal_details].present?
re[:journal_details].each do |j|
JournalDetail.create!(j.merge(journal_id: new_target.id)) if j.present?
unless JournalDetail.exists?(journal_id: new_target.id)
JournalDetail.create!(j.merge(journal_id: new_target.id)) if j.present?
end
end
end
if re[:member_roles].present?
@ -82,7 +101,7 @@ class SyncProjectsJob < ApplicationJob
end
end
else
SyncLog.sync_project_log("***【#{target_type}】. create_failed---------------")
SyncLog.sync_project_log("***【#{target_type}】. create_failed---or has_exists---------------")
end
end
end
@ -100,14 +119,22 @@ class SyncProjectsJob < ApplicationJob
SyncLog.sync_log("***user_login:#{re[:user_login]}----target_type:#{target_type}-----#{index+1}")
if re[:target_params].present?
u_id = User.select(:id, :login).where(login: re[:user_login]).pluck(:id).first
re[:target_params].delete(:id)
new_target = Journal.new(re[:target_params].merge(user_id: u_id))
new_target.journalized_id = issue_id
if new_target.save!
if re[:journal_details].present?
re[:journal_details].each do |j|
JournalDetail.create!(j.merge(journal_id: new_target.id))
is_exists = Journal.exists?(user_id: u_id, journalized_id: re[:target_params][:journalized_id], created_on: re[:target_params][:created_on].to_s.to_time)
if is_exists
SyncLog.sync_project_log("***00000. Journal:#{re[:target_params][:id]}-is exists--------------")
else
re[:target_params].delete(:id)
new_target = Journal.new(re[:target_params].merge(user_id: u_id))
new_target.journalized_id = issue_id
if new_target.save!
if re[:journal_details].present?
re[:journal_details].each do |j|
JournalDetail.create!(j.merge(journal_id: new_target.id))
end
end
else
SyncLog.sync_project_log("***111222. journal_create failed---------------")
end
end
end
@ -118,15 +145,22 @@ class SyncProjectsJob < ApplicationJob
def create_versions(project, target_jsons)
SyncLog.sync_log("***【Versions】. begin_to_create_verison---------------")
return SyncLog.sync_log("*** no target_jsons") if target_jsons.blank?
all_issues = project.issues.select(:id, :project_id, :fixed_version_id)
target_jsons.each do |re|
old_id = re[:target_params][:id]
if re[:target_params].present?
u_id = User.select(:id, :login).where(login: re[:user_login]).pluck(:id).first
re[:target_params].delete(:id)
new_target = Version.new(re[:target_params].merge(user_id: u_id))
if new_target.save!
all_issues&.where(fixed_version_id: old_id)&.update_all(fixed_version_id: new_target.id)
is_exists = Version.exists?(user_id: u_id, project_id: re[:target_params][:project_id], created_on: re[:target_params][:created_on].to_s.to_time)
if is_exists
SyncLog.sync_project_log("***00000. Version:#{re[:target_params][:id]}-is exists--------------")
else
re[:target_params].delete(:id)
new_target = Version.new(re[:target_params].merge(user_id: u_id))
if new_target.save!
all_issues = project.issues.select(:id, :project_id, :fixed_version_id)
all_issues&.where(fixed_version_id: old_id)&.update_all(fixed_version_id: new_target.id)
else
SyncLog.sync_project_log("***111222. Version_create failed---------------")
end
end
end
end

View File

@ -5,7 +5,7 @@ class SyncLog
end
def self.sync_project_log(message=nil)
@my_log ||= Logger.new("#{Rails.root}/log/sync_error_project.log")
@my_log ||= Logger.new("#{Rails.root}/log/sync_project_log.log")
@my_log.debug(message) unless message.nil?
end
end