|
|
|
|
class PraiseTread < ActiveRecord::Base
|
|
|
|
|
# praise_or_tread 1:赞 2:踩
|
|
|
|
|
attr_accessible :user_id,:praise_tread_object_id,:praise_tread_object_type,:praise_or_tread
|
|
|
|
|
belongs_to :user
|
|
|
|
|
belongs_to :praise_tread_object, polymorphic: true
|
|
|
|
|
#after_create :be_user_score
|
|
|
|
|
#after_destroy :down_user_score
|
|
|
|
|
include UserScoreHelper
|
|
|
|
|
|
|
|
|
|
has_many :tidings, :as => :container, :dependent => :destroy
|
|
|
|
|
after_create :send_tiding
|
|
|
|
|
|
|
|
|
|
scope :liker, lambda{where(:praise_or_tread => 1)}
|
|
|
|
|
|
|
|
|
|
def send_tiding
|
|
|
|
|
case self.praise_tread_object_type
|
|
|
|
|
when "Memo","Message","Issue"
|
|
|
|
|
self.tidings << Tiding.new(:trigger_user_id => self.user_id, :user_id => self.praise_tread_object.author_id, :parent_container_id => self.praise_tread_object_id, :parent_container_type => self.praise_tread_object_type, :viewed => 0, :tiding_type => "Praise")
|
|
|
|
|
when "Discuss","Challenge","HomeworkCommon","JournalsForMessage","Journal","GraduationTopic","GraduationTask"
|
|
|
|
|
self.tidings << Tiding.new(:trigger_user_id => self.user_id, :user_id => self.praise_tread_object.user_id, :parent_container_id => self.praise_tread_object_id, :parent_container_type => self.praise_tread_object_type, :viewed => 0, :tiding_type => "Praise")
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def self.find_object_by_type_and_id(type,id)
|
|
|
|
|
@obj = nil
|
|
|
|
|
case type
|
|
|
|
|
when 'User'
|
|
|
|
|
@obj = User.find_by_id(id)
|
|
|
|
|
when 'Issue'
|
|
|
|
|
@obj = Issue.find_by_id(id)
|
|
|
|
|
when 'TrainingTask'
|
|
|
|
|
@obj = TrainingTask.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 'Memo'
|
|
|
|
|
@obj = Memo.find_by_id(id)
|
|
|
|
|
when 'Message'
|
|
|
|
|
@obj = Message.find_by_id(id)
|
|
|
|
|
end
|
|
|
|
|
return @obj
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# 获取裁定对象为Message时Message所属的项目或课程
|
|
|
|
|
def project
|
|
|
|
|
project = nil
|
|
|
|
|
if self.praise_tread_object_type == 'Message' || self.praise_tread_object_type == 'Issues'
|
|
|
|
|
obj = PraiseTread.find_object_by_type_and_id(self.praise_tread_object_type,praise_tread_object_id)
|
|
|
|
|
project = obj.project
|
|
|
|
|
end
|
|
|
|
|
project
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
#更新用户分数 - by zjc
|
|
|
|
|
def be_user_score
|
|
|
|
|
#踩贴吧或讨论区帖子
|
|
|
|
|
if self.praise_or_tread == 0 && (self.praise_tread_object_type == 'Issue' || self.praise_tread_object_type == 'Message')
|
|
|
|
|
obj = PraiseTread.find_object_by_type_and_id(self.praise_tread_object_type,praise_tread_object_id)
|
|
|
|
|
target_user = obj.author
|
|
|
|
|
UserScore.skill(:treaded_by_user, User.current,target_user,self, { praise_tread_id: self.id })
|
|
|
|
|
update_tread(self.user,1)
|
|
|
|
|
update_tread(target_user,1)
|
|
|
|
|
unless self.project.nil?
|
|
|
|
|
update_tread(self.user,2,self.project)
|
|
|
|
|
update_tread(target_user,2,self.project)
|
|
|
|
|
end
|
|
|
|
|
#顶贴吧或讨论区帖子
|
|
|
|
|
elsif self.praise_or_tread == 1 && (self.praise_tread_object_type == 'Issue' || self.praise_tread_object_type == 'Message')
|
|
|
|
|
obj = PraiseTread.find_object_by_type_and_id(self.praise_tread_object_type,praise_tread_object_id)
|
|
|
|
|
target_user = obj.author
|
|
|
|
|
UserScore.skill(:praised_by_user, User.current,target_user,self,{ praise_tread_id: self.id })
|
|
|
|
|
update_praise(target_user,1)
|
|
|
|
|
unless self.project.nil?
|
|
|
|
|
update_praise(target_user,2,self.project)
|
|
|
|
|
end
|
|
|
|
|
#更新用户等级
|
|
|
|
|
UserLevels.update_user_level(target_user)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def down_user_score
|
|
|
|
|
#踩贴吧或讨论区帖子
|
|
|
|
|
if self.praise_or_tread == 0 && (self.praise_tread_object_type == 'Issue' || self.praise_tread_object_type == 'Message')
|
|
|
|
|
obj = PraiseTread.find_object_by_type_and_id(self.praise_tread_object_type,praise_tread_object_id)
|
|
|
|
|
target_user = obj.author
|
|
|
|
|
#UserScore.skill(:treaded_by_user, User.current,target_user,self, { praise_tread_id: self.id })
|
|
|
|
|
update_tread(self.user,1)
|
|
|
|
|
update_tread(target_user,1)
|
|
|
|
|
unless self.project.nil?
|
|
|
|
|
update_tread(self.user,2,self.project)
|
|
|
|
|
update_tread(target_user,2,self.project)
|
|
|
|
|
end
|
|
|
|
|
#顶贴吧或讨论区帖子
|
|
|
|
|
elsif self.praise_or_tread == 1 && (self.praise_tread_object_type == 'Issue' || self.praise_tread_object_type == 'Message')
|
|
|
|
|
obj = PraiseTread.find_object_by_type_and_id(self.praise_tread_object_type,praise_tread_object_id)
|
|
|
|
|
target_user = obj.author
|
|
|
|
|
#UserScore.skill(:praised_by_user, User.current,target_user,self,{ praise_tread_id: self.id })
|
|
|
|
|
update_praise(target_user,1)
|
|
|
|
|
unless self.project.nil?
|
|
|
|
|
update_praise(target_user,2,self.project)
|
|
|
|
|
end
|
|
|
|
|
#更新用户等级
|
|
|
|
|
UserLevels.update_user_level(target_user)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def self.praised(activity)
|
|
|
|
|
self.where(praise_tread_object_id: activity.id,
|
|
|
|
|
praise_tread_object_type: activity.class.to_s,
|
|
|
|
|
user_id: User.current.id).empty?
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|