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