ADD users/hovercard api
This commit is contained in:
		
							parent
							
								
									841778900c
								
							
						
					
					
						commit
						908cda56f3
					
				| 
						 | 
					@ -2,8 +2,8 @@ class UsersController < ApplicationController
 | 
				
			||||||
  include ApplicationHelper
 | 
					  include ApplicationHelper
 | 
				
			||||||
  include Ci::DbConnectable
 | 
					  include Ci::DbConnectable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  before_action :load_user, only: [:show, :homepage_info, :sync_token, :sync_gitea_pwd, :projects, :watch_users, :fan_users]
 | 
					  before_action :load_user, only: [:show, :homepage_info, :sync_token, :sync_gitea_pwd, :projects, :watch_users, :fan_users, :hovercard]
 | 
				
			||||||
  before_action :check_user_exist, only: [:show, :homepage_info,:projects, :watch_users, :fan_users]
 | 
					  before_action :check_user_exist, only: [:show, :homepage_info,:projects, :watch_users, :fan_users, :hovercard]
 | 
				
			||||||
  before_action :require_login, only: %i[me list sync_user_info]
 | 
					  before_action :require_login, only: %i[me list sync_user_info]
 | 
				
			||||||
  before_action :connect_to_ci_db, only: [:get_user_info]
 | 
					  before_action :connect_to_ci_db, only: [:get_user_info]
 | 
				
			||||||
  skip_before_action :check_sign, only: [:attachment_show]
 | 
					  skip_before_action :check_sign, only: [:attachment_show]
 | 
				
			||||||
| 
						 | 
					@ -56,6 +56,9 @@ class UsersController < ApplicationController
 | 
				
			||||||
    @watchers = paginate(watchers)
 | 
					    @watchers = paginate(watchers)
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def hovercard
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def update
 | 
					  def update
 | 
				
			||||||
    @user = User.find params[:id]
 | 
					    @user = User.find params[:id]
 | 
				
			||||||
    @user.update!(user_params)
 | 
					    @user.update!(user_params)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,12 +35,6 @@ module ApplicationHelper
 | 
				
			||||||
    course.course_modules.find_by(module_type: "graduation").try(:id)
 | 
					    course.course_modules.find_by(module_type: "graduation").try(:id)
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # 是否关注
 | 
					 | 
				
			||||||
  # from_user_id为被关注的用户
 | 
					 | 
				
			||||||
  def follow?(from_user_id, user_id)
 | 
					 | 
				
			||||||
    Watcher.where(watchable_type: 'Principal', watchable_id: from_user_id, user_id: user_id).exists?
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # git用户
 | 
					  # git用户
 | 
				
			||||||
  # git用户命名规则:login+"@educoder.net"
 | 
					  # git用户命名规则:login+"@educoder.net"
 | 
				
			||||||
  def git_username(email)
 | 
					  def git_username(email)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,7 @@ module Watchable
 | 
				
			||||||
    has_many :watcher_users, through: :watchers, source: :user, validate: false
 | 
					    has_many :watcher_users, through: :watchers, source: :user, validate: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    scope :watched_by, -> (user_id) { includes(:watchers).where(watchers: { user_id: user_id }) }
 | 
					    scope :watched_by, -> (user_id) { includes(:watchers).where(watchers: { user_id: user_id }) }
 | 
				
			||||||
 | 
					    scope :following, -> (user_id) { watched_by }
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def watched?(watchable)
 | 
					  def watched?(watchable)
 | 
				
			||||||
| 
						 | 
					@ -21,6 +22,24 @@ module Watchable
 | 
				
			||||||
    obj.destroy! if obj.present?
 | 
					    obj.destroy! if obj.present?
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # 我正在关注的、我追随的
 | 
				
			||||||
 | 
					  def following
 | 
				
			||||||
 | 
					    User.following(self.id)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def following_count
 | 
				
			||||||
 | 
					    following.size
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # 关注我的、我的粉丝、我的追随者
 | 
				
			||||||
 | 
					  def followers
 | 
				
			||||||
 | 
					    watcher_users
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def followers_count
 | 
				
			||||||
 | 
					    followers.size
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  module ClassMethods
 | 
					  module ClassMethods
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -137,10 +137,6 @@ class User < Owner
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  has_many :attachments,foreign_key: :author_id, :dependent => :destroy
 | 
					  has_many :attachments,foreign_key: :author_id, :dependent => :destroy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # 关注
 | 
					 | 
				
			||||||
  # has_many :be_watchers, foreign_key: :user_id, dependent: :destroy # 我的关注
 | 
					 | 
				
			||||||
  # has_many :be_watcher_users, through: :be_watchers, dependent: :destroy # 我关注的用户
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  has_one :ci_cloud_account, class_name: 'Ci::CloudAccount', dependent: :destroy
 | 
					  has_one :ci_cloud_account, class_name: 'Ci::CloudAccount', dependent: :destroy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # 认证
 | 
					  # 认证
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					json.id @user.id
 | 
				
			||||||
 | 
					json.login @user.login
 | 
				
			||||||
 | 
					json.name @user.full_name
 | 
				
			||||||
 | 
					json.image_url url_to_avatar(@user)
 | 
				
			||||||
 | 
					json.url "#{request.base_url }/users/#{@user.login}"
 | 
				
			||||||
 | 
					json.followers_count @user.followers_count
 | 
				
			||||||
 | 
					json.following_count @user.following_count
 | 
				
			||||||
 | 
					json.projects_count @user.projects_count
 | 
				
			||||||
 | 
					json.is_watch current_user&.watched?(@user)
 | 
				
			||||||
 | 
					json.organizations @user.organizations do |organization|
 | 
				
			||||||
 | 
					  json.login organization.login
 | 
				
			||||||
 | 
					  json.name organization.full_name
 | 
				
			||||||
 | 
					  json.image_url url_to_avatar(organization)
 | 
				
			||||||
 | 
					  json.url "#{request.base_url }/organize/#{organization.login}"
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -198,6 +198,7 @@ Rails.application.routes.draw do
 | 
				
			||||||
        get :projects
 | 
					        get :projects
 | 
				
			||||||
        get :watch_users
 | 
					        get :watch_users
 | 
				
			||||||
        get :fan_users
 | 
					        get :fan_users
 | 
				
			||||||
 | 
					        get :hovercard
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
      collection do
 | 
					      collection do
 | 
				
			||||||
        post :following
 | 
					        post :following
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue