diff --git a/app/controllers/watchers_controller.rb b/app/controllers/watchers_controller.rb index 626e5dad1..ab5499a1f 100644 --- a/app/controllers/watchers_controller.rb +++ b/app/controllers/watchers_controller.rb @@ -1,17 +1,18 @@ class WatchersController < ApplicationController before_action :require_login, except: %i[index] - before_action :find_project_with_id + # before_action :find_project_with_id + before_action :get_target def index - scope = @project.watchers.includes(:user) + scope = @target.watchers.includes(:user) @watchers = paginate(scope) end def unfollow begin - return normal_status(2, "你还没有关注哦") unless current_user.watched?(@project) - current_user.unwatch!(@project) - render_ok({watchers_count: @project.watchers_count, watched: current_user.watched?(@project)}) + return normal_status(2, "你还没有关注哦") unless current_user.watched?(@target) + current_user.unwatch!(@target) + render_ok({watchers_count: @target.watchers_count, watched: false}) rescue Exception => e uid_logger_error(e.message) tip_exception(e.message) @@ -21,9 +22,9 @@ class WatchersController < ApplicationController def follow begin - return normal_status(2, "你已关注了") if current_user.watched?(@project) - current_user.watch!(@project) - render_ok({watchers_count: @project.watchers_count, watched: current_user.watched?(@project)}) + return normal_status(2, "你已关注了") if current_user.watched?(@target) + current_user.watch!(@target) + render_ok({watchers_count: @target.watchers_count, watched: true}) rescue Exception => e uid_logger_error(e.message) tip_exception(e.message) @@ -32,11 +33,28 @@ class WatchersController < ApplicationController end def check_watch - is_watch = current_user.watched?(@project) + is_watch = current_user.watched?(@target) render_result(is_watch ? 1 : 0) rescue Exception => e uid_logger_error(e.message) tip_exception(e.message) end + private + + def get_target + target_type = params[:target_type].to_s + case target_type + when "project" + @target = target_type.capitalize.constantize.find_by(id: params[:id]) + else + @target = target_type.capitalize.constantize.find_by(login: params[:id]) #用户 + end + + unless @target.present? + normal_status(-1, "目标不存在") + end + + end + end diff --git a/config/routes.rb b/config/routes.rb index f7f21a065..61efab5b6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -44,7 +44,14 @@ Rails.application.routes.draw do resources :project_languages, only: [:index, :show] resources :ignores, only: [:index, :show] resources :licenses, only: [:index, :show] - + + resources :watchers, only: [:index] do + collection do + post :follow + delete :unfollow + get :check_watch + end + end resources :projects do resources :pull_requests, except: [:destroy] do member do @@ -75,13 +82,7 @@ Rails.application.routes.draw do post :update_status end end - resources :watchers, only: [:index] do - collection do - post :follow - delete :unfollow - get :check_watch - end - end + resources :praise_tread, only: [:index] do collection do post :like