diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index 889fc8b97..01e9bc7bf 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -13,6 +13,7 @@ class AccountsController < ApplicationController ActiveRecord::Base.transaction do result = auto_update(current_user, simple_update_params) if result[:message].blank? + UserAction.create(:action_id => current_user.id, :action_type => "sync_educoder_user", :user_id => current_user.id, :ip => request.remote_ip) if params[:platform] == "educoder" render_ok else render_error(result[:message]) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 6cf505a6d..f292f9a70 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -759,10 +759,11 @@ class UsersController < ApplicationController password = "12345678" # 没有用户时,新建用户并登录 - user = User.where("login = ? or phone = ? or mail = ? ", "#{login}", phone, email).first + user = phone.present? ? User.find_by(phone: phone) : nil + user = User.where("login = ? or phone = ? or mail = ? ", "#{login}", phone, email).first if user.nil? if user.present? # 手机号先记录,后续用 - user.update_column(:phone, "#{phone}") if phone.present? + user.update_column(:phone, "#{phone}") if phone.present? && user.phone.blank? else ActiveRecord::Base.transaction do email = "#{login}@gitlink.org.cn" if email.blank? diff --git a/app/views/users/get_user_info.json.jbuilder b/app/views/users/get_user_info.json.jbuilder index f2793b0f0..021c9a752 100644 --- a/app/views/users/get_user_info.json.jbuilder +++ b/app/views/users/get_user_info.json.jbuilder @@ -26,7 +26,7 @@ json.super_description @user.super_description json.(@user, :show_email, :show_department, :show_location, :show_super_description) json.message_unread_total @message_unread_total json.has_trace_user @user.trace_user.present? -json.is_new @user.login.present? && params[:login].to_s.include?("#{@user.login}") +json.is_new params[:login].present? && (UserAction.where(action_type: "sync_educoder_user", user_id: @user.id).blank? || @user.mail.include?("@gitlink.org.cn") || @user.mail.include?("@forge.com")) json.nps EduSetting.get("nps-on-off-switch").to_s == 'true' && UserNp.where(user_id: current_user.id).where("created_at >= ?", (Time.now - 30.days).beginning_of_day ).blank? json.open_blockchain EduSetting.get("open_blockchain_users").to_s.split(",").include?(@user.id.to_s) || EduSetting.get("open_blockchain_users").to_s.split(",").include?(@user.login) json.sign_cla @user.sign_cla diff --git a/db/migrate/20230530141227_add_user_action_index.rb b/db/migrate/20230530141227_add_user_action_index.rb new file mode 100644 index 000000000..2d76bd478 --- /dev/null +++ b/db/migrate/20230530141227_add_user_action_index.rb @@ -0,0 +1,7 @@ +class AddUserActionIndex < ActiveRecord::Migration[5.2] + def change + add_index :user_actions, :user_id + add_index :user_actions, :action_type + add_index :user_actions, :action_id + end +end