|
- class PraiseTreadController < ApplicationController
-
- accept_api_auth :tread_plus,:praise_plus
- # before_filter :require_login,:only => [:praise_plus,:tread_plus]
- before_filter :user_unlogged_check,:only => [:praise_plus,:tread_plus,:praise_minus]
-
- def praise_plus
- @obj = nil
- @activity = false
- if request.get?
- @obj_id = params[:obj_id]
- @obj_type = params[:obj_type]
- if !params[:user_activity_id].nil? && !params[:type].nil?
- @user_activity_id = params[:user_activity_id]
- @type = params[:type]
- @activity = true
- end
- # @is_in_list = nil
- @obj = find_object_by_type_and_id(@obj_type,@obj_id)
- pts = PraiseTread.where("praise_tread_object_id=? and praise_tread_object_type=? and user_id=?",@obj_id,@obj_type.to_s,User.current.id)
- unless pts.empty?
- respond_to do |format|
- format.js
- end
- return
- end
- @horizontal = params[:horizontal].downcase == "false" ? false:true if params[:horizontal]
- # if @obj.respond_to?("author_id")
- # author_id = @obj.author_id
- # elsif @obj.respond_to?("user_id")
- # author_id = @obj.user_id
- # end
- # unless author_id == User.current.id
- praise_tread_plus(@obj_type,@obj_id,1)
- # end
- respond_to do |format|
- format.js
- end
- end
- end
-
- def praise_minus
- @obj = nil
- @activity = false
- if request.get?
- #@obj = params[:obj] # 传的是对象,最后变成id了
- #首先更新praise_tread 表 删除关注记录
- #@pt = PraiseTread.find_by_user_id_and_praise_tread_object_id_and_praise_tread_object_type(User.current.id,@obj,"user")
- @obj_id = params[:obj_id]
- @obj_type = params[:obj_type]
- if !params[:user_activity_id].nil? && !params[:type].nil?
- @user_activity_id = params[:user_activity_id]
- @type = params[:type]
- @activity = true
- end
- @obj = find_object_by_type_and_id(@obj_type,@obj_id)
- @pt = PraiseTread.where("praise_tread_object_id=? and praise_tread_object_type=? and user_id=?",@obj_id,@obj_type.to_s,User.current.id).first
- if @pt.nil?
- respond_to do |format|
- format.js
- end
- return
- end
- @pt.destroy if !@pt.nil?
- #再更新praise_tread_cache表 使相应的记录减1 当为0时删除
- @ptc = PraiseTreadCache.where("object_id=? and object_type=?",@obj_id,@obj_type.to_s).first
- @ptc.minus(1) if !@ptc.nil?
- if @ptc.praise_num == 0
- @ptc.destroy
- end
-
- end
- #@obj = User.find_by_id(@obj)
- respond_to do |format|
- format.js
- end
- end
-
- def tread_plus
- @obj = nil
- # @is_in_list = nil
- if request.get?
- @obj_id = params[:obj_id]
- @obj_type = params[:obj_type]
- #@horizontal = params[:horizontal].downcase == "false" ? false:true
- @obj = find_object_by_type_and_id(@obj_type,@obj_id)
- unless @obj.author_id == User.current.id
- praise_tread_plus(@obj_type,@obj_id,0)
- end
-
- end
- end
-
- def tread_minus
- respond_to do |format|
- format.html
- format.js
- end
- end
-
- private
-
- def find_object_by_type_and_id(type,id)
- @obj = nil
- case type
- when 'Memo'
- @obj = Memo.find_by_id(id)
- when 'Message'
- @obj = Message.find_by_id(id)
- when 'HomeworkCommon'
- @obj = HomeworkCommon.find_by_id(id)
- when 'JournalsForMessage'
- @obj = JournalsForMessage.find_by_id(id)
- when 'News'
- @obj = News.find_by_id(id)
- when 'Comment'
- @obj = Comment.find_by_id(id)
- when 'Journal'
- @obj = Journal.find_by_id(id)
- when 'BlogComment'
- @obj = BlogComment.find_by_id(id)
- when 'OrgDocumentComment'
- @obj = OrgDocumentComment.find_by_id(id)
- when 'User'
- @obj = User.find_by_id(id)
- when 'Issue'
- @obj = Issue.find_by_id(id)
- when 'Project'
- @obj = Project.find_by_id(id)
- when 'Bid'
- @obj = Bid.find_by_id(id)
- when 'Contest'
- @obj = Contest.find_by_id(id)
- when 'Syllabus'
- @obj = Syllabus.find_by_id(id)
- else
- @obj = nil
- end
- return @obj
- end
-
- def praise_tread_plus(type,id,flag)
- unless id.nil? and type.nil?
- #首先创建或更新praise_tread 表
- @pt = PraiseTread.new
- @pt.user_id = User.current.id
- @pt.praise_tread_object_id = id.to_i
- @pt.praise_tread_object_type = type
- @pt.praise_or_tread = flag
- @pt.save
- # end
-
- #再创建或更新praise_tread_cache表
- #@ptc = PraiseTreadCache.find_by_object_id_and_object_type(id,type)
- @ptc = PraiseTreadCache.where("object_id = ? and object_type = ?",id.to_i,type).first
- @ptc = @ptc.nil? ? PraiseTreadCache.new : @ptc
- @ptc.object_id = id.to_i
- @ptc.object_type = type
- @ptc.save
- @ptc.plus(flag,1)
- end
- end
-
- end
|