diff --git a/app/controllers/bind_users_controller.rb b/app/controllers/bind_users_controller.rb index 329ade866..353842efe 100644 --- a/app/controllers/bind_users_controller.rb +++ b/app/controllers/bind_users_controller.rb @@ -4,10 +4,19 @@ class BindUsersController < ApplicationController def create # user = CreateBindUserService.call(create_params) # + Rails.logger.debug "--------------开始绑定用户------------" + Rails.logger.debug "--------------params: #{params.to_unsafe_h}" + tip_exception '系统错误' if session[:unionid].blank? + + bind_user = User.try_to_login(params[:username], params[:password]) + tip_exception '用户名或者密码错误' if bind_user.blank? + tip_exception '用户名或者密码错误' unless bind_user.check_password?(params[:password].to_s) + tip_exception '该账号已被绑定,请更换其他账号进行绑定' if bind_user.bind_open_user?(params[:type].to_s) + if params[:type] == "qq" begin - user = CreateBindUserService.call(current_user, create_params) - successful_authentication(user) if user.id != current_user.id + OpenUsers::QQ.create!(user: bind_user, uid: session[:unionid]) + successful_authentication(bind_user) render_ok rescue ApplicationService::Error => ex @@ -15,13 +24,6 @@ class BindUsersController < ApplicationController end else begin - tip_exception '系统错误' if session[:unionid].blank? - - bind_user = User.try_to_login(params[:username], params[:password]) - tip_exception '用户名或者密码错误' if bind_user.blank? - tip_exception '用户名或者密码错误' unless bind_user.check_password?(params[:password].to_s) - tip_exception '该账号已被绑定,请更换其他账号进行绑定' if bind_user.bind_open_user?(params[:type].to_s) - OpenUsers::Wechat.create!(user: bind_user, uid: session[:unionid]) successful_authentication(bind_user) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index faf9ec078..655573819 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -53,7 +53,7 @@ class ProjectsController < ApplicationController ActiveRecord::Base.transaction do Projects::CreateForm.new(project_params).validate! @project = Projects::CreateService.new(current_user, project_params).call - + OpenProjectDevOpsJob.perform_later(@project&.id, current_user.id) end rescue Exception => e uid_logger_error(e.message) @@ -84,6 +84,7 @@ class ProjectsController < ApplicationController else Projects::MigrateService.call(current_user, mirror_params) end + OpenProjectDevOpsJob.perform_later(@project&.id, current_user.id) rescue Exception => e uid_logger_error(e.message) tip_exception(e.message) diff --git a/app/jobs/open_project_dev_ops_job.rb b/app/jobs/open_project_dev_ops_job.rb new file mode 100644 index 000000000..8f9cebb1d --- /dev/null +++ b/app/jobs/open_project_dev_ops_job.rb @@ -0,0 +1,18 @@ +class OpenProjectDevOpsJob < ApplicationJob + include ProjectsHelper + + queue_as :message + + def perform(project_id, user_id) + project = Project.find_by(id: project_id) + user = User.find_by(id: user_id) + url = "#{jianmu_devops_url}/#{jianmu_devops_code(project, user)}" + puts "jianmu_devops_url ===== #{url}" + http = Net::HTTP.new(url.host, url.port) + request = Net::HTTP::Get.new(url) + response = http.request(request) + puts "jianmu_devops_url ===== #{response.body}" + SendTemplateMessageJob.perform_later('ProjectOpenDevOps', user_id, project_id) + end + +end \ No newline at end of file diff --git a/app/jobs/send_template_message_job.rb b/app/jobs/send_template_message_job.rb index 557d4d0fa..763708c38 100644 --- a/app/jobs/send_template_message_job.rb +++ b/app/jobs/send_template_message_job.rb @@ -217,6 +217,14 @@ class SendTemplateMessageJob < ApplicationJob receivers = project&.all_managers.where.not(id: operator&.id) receivers_string, content, notification_url = MessageTemplate::ProjectPraised.get_message_content(receivers, operator, project) Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, project_id: project.id}) + when 'ProjectOpenDevOps' + operator_id, project_id = args[0], args[1] + operator = User.find_by_id(operator_id) + project = Project.find_by_id(project_id) + return unless operator.present? && project.present? + receivers = User.where(id: operator.id) + receivers_string, content, notification_url = MessageTemplate::ProjectOpenDevOps.get_message_content(receivers, operator, project) + Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, project_id: project.id}) when 'ProjectPullRequest' operator_id, pull_request_id = args[0], args[1] operator = User.find_by_id(operator_id) diff --git a/app/models/message_template.rb b/app/models/message_template.rb index d9ba3eb76..7dc049c6d 100644 --- a/app/models/message_template.rb +++ b/app/models/message_template.rb @@ -52,6 +52,7 @@ class MessageTemplate < ApplicationRecord email_html = File.read("#{email_template_html_dir}/project_milestone_completed.html") self.create(type: 'MessageTemplate::ProjectMilestoneCompleted', sys_notice: '在 {nickname}/{repository} 仓库,里程碑 {name} 的完成度已达到100%', notification_url: '{baseurl}/{owner}/{identifier}/milestones/{id}', email: email_html, email_title: "#{PLATFORM}: 仓库 {nickname}/{repository} 有里程碑已完成") self.create(type: 'MessageTemplate::ProjectPraised', sys_notice: '{nickname1} 点赞了你管理的仓库 {nickname2}/{repository}', notification_url: '{baseurl}/{login}') + self.create(type: 'MessageTemplate::ProjectOpenDevOps', sys_notice: '您的仓库 {nickname1} 已成功开通引擎服务,可通过简单的节点编排完成自动化集成与部署。欢迎体验!', notification_url: '{baseurl}/{owner}/{identifier}') email_html = File.read("#{email_template_html_dir}/project_pull_request.html") self.create(type: 'MessageTemplate::ProjectPullRequest', sys_notice: '{nickname1}在 {nickname2}/{repository} 提交了一个合并请求:{title}', notification_url: '{baseurl}/{owner}/{identifier}/pulls/{id}', email: email_html, email_title: "#{PLATFORM}: {nickname1} 在 {nickname2}/{repository} 提交了一个合并请求") email_html = File.read("#{email_template_html_dir}/project_role.html") diff --git a/app/models/message_template/project_open_dev_ops.rb b/app/models/message_template/project_open_dev_ops.rb new file mode 100644 index 000000000..b37785351 --- /dev/null +++ b/app/models/message_template/project_open_dev_ops.rb @@ -0,0 +1,28 @@ +# == Schema Information +# +# Table name: message_templates +# +# id :integer not null, primary key +# type :string(255) +# sys_notice :text(65535) +# email :text(65535) +# created_at :datetime not null +# updated_at :datetime not null +# notification_url :string(255) +# email_title :string(255) +# + +# 我管理的仓库项目设置被更改 +class MessageTemplate::ProjectOpenDevOps < MessageTemplate + + # MessageTemplate::ProjectOpenDevOps.get_message_content(User.where(login: 'yystopf')) + def self.get_message_content(receivers, user, project) + return '', '', '' if receivers.blank? + content = sys_notice.gsub('{repository}', project&.name) + url = notification_url.gsub('{owner}', project&.owner&.login).gsub('{identifier}', project&.identifier) + return receivers_string(receivers), content, url + rescue => e + Rails.logger.info("MessageTemplate::ProjectOpenDevOps.get_message_content [ERROR] #{e}") + return '', '', '' + end +end