|
|
|
@ -48,46 +48,51 @@ class UserScore < ActiveRecord::Base
|
|
|
|
|
# # => true #当前用户发帖计分操作成功
|
|
|
|
|
#
|
|
|
|
|
# Returns boolean. 返回积分保存结果
|
|
|
|
|
def self.joint(operate, current_user, target_user, options={})
|
|
|
|
|
def self.joint(operate, current_user, target_user,obj, options={})
|
|
|
|
|
current_user, target_user = get_users(current_user, target_user)
|
|
|
|
|
user_score = current_user.user_score_attr
|
|
|
|
|
case operate
|
|
|
|
|
when :post_message # current_user 发帖了 Add Message
|
|
|
|
|
user_score.collaboration = user_score.collaboration.to_i + 2
|
|
|
|
|
user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id ,:score_type => "collaboration",:score_action => "post_message",:user_id => current_user.id,:old_score => user_score.collaboration - 2,:new_score => user_score.collaboration,:current_user_level => current_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
Rails.logger.info "[UserScore#joint] ===> User: #{current_user} posting a message. options => (#{options.to_s})"
|
|
|
|
|
when :delete_message # current_user 发帖了 Delete Message
|
|
|
|
|
user_score.collaboration = user_score.collaboration.to_i - 2
|
|
|
|
|
user_score.save
|
|
|
|
|
Rails.logger.info "[UserScore#joint] ===> User: #{current_user} deleting a message. options => (#{options.to_s})"
|
|
|
|
|
#when :delete_message # current_user 删帖了 Delete Message
|
|
|
|
|
# user_score.collaboration = user_score.collaboration.to_i - 2
|
|
|
|
|
# user_score.save
|
|
|
|
|
# Rails.logger.info "[UserScore#joint] ===> User: #{current_user} deleting a message. options => (#{options.to_s})"
|
|
|
|
|
when :post_issue_message # current_user 对 target_user 的缺陷留言了 Add Journal
|
|
|
|
|
user_score.collaboration = user_score.collaboration.to_i + 1
|
|
|
|
|
user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id ,:target_user_id =>target_user.id, :score_type => "collaboration",:score_action => "post_issue_message",:user_id => current_user.id,:old_score => user_score.collaboration - 1,:new_score => user_score.collaboration,:current_user_level => current_user.get_level,:target_user_level => target_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
Rails.logger.info "[UserScore#joint] ===> User: #{current_user} posting a issue. options => (#{options.to_s})"
|
|
|
|
|
when :delete_issue_message # current_user 删除了 对 target_user 的缺陷留言了 Delete Journal
|
|
|
|
|
user_score.collaboration = user_score.collaboration.to_i - 1
|
|
|
|
|
user_score.save
|
|
|
|
|
Rails.logger.info "[UserScore#joint] ===> User: #{current_user} deleting a issue. options => (#{options.to_s})"
|
|
|
|
|
#when :delete_issue_message # current_user 删除了 对 target_user 的缺陷留言了 Delete Journal
|
|
|
|
|
# user_score.collaboration = user_score.collaboration.to_i - 1
|
|
|
|
|
# user_score.save
|
|
|
|
|
# Rails.logger.info "[UserScore#joint] ===> User: #{current_user} deleting a issue. options => (#{options.to_s})"
|
|
|
|
|
when :change_issue_status # current_user 更改了缺陷的状态 Changed Issue
|
|
|
|
|
user_score.collaboration = user_score.collaboration.to_i + 1
|
|
|
|
|
user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id , :score_type => "collaboration",:score_action => "change_issue_status",:user_id => current_user.id,:old_score => user_score.collaboration - 1,:new_score => user_score.collaboration,:current_user_level => current_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
Rails.logger.info "[UserScore#joint] ===> User: #{current_user} change issue status. options => (#{options.to_s})"
|
|
|
|
|
when :reply_message # current_user 对 target_user 留言的回复 Add Journals_for_messages
|
|
|
|
|
user_score.collaboration = user_score.collaboration.to_i + 1
|
|
|
|
|
user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id ,:target_user_id =>target_user.id, :score_type => "collaboration",:score_action => "reply_message",:user_id => current_user.id,:old_score => user_score.collaboration - 1,:new_score => user_score.collaboration,:current_user_level => current_user.get_level,:target_user_level => target_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
Rails.logger.info "[UserScore#joint] ===> User: #{current_user} reply message. options => (#{options.to_s})"
|
|
|
|
|
when :reply_message_delete # current_user 删除了对 target_user 留言的回复 delete Journals_for_messages
|
|
|
|
|
user_score.collaboration = user_score.collaboration.to_i - 1
|
|
|
|
|
user_score.save
|
|
|
|
|
Rails.logger.info "[UserScore#joint] ===> User: #{current_user} delete reply message. options => (#{options.to_s})"
|
|
|
|
|
#when :reply_message_delete # current_user 删除了对 target_user 留言的回复 delete Journals_for_messages
|
|
|
|
|
# user_score.collaboration = user_score.collaboration.to_i - 1
|
|
|
|
|
# user_score.save
|
|
|
|
|
# Rails.logger.info "[UserScore#joint] ===> User: #{current_user} delete reply message. options => (#{options.to_s})"
|
|
|
|
|
when :reply_posting # current_user 对 target_user 帖子的回复 Add Message
|
|
|
|
|
user_score.collaboration = user_score.collaboration.to_i + 1
|
|
|
|
|
user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id ,:target_user_id =>target_user.id, :score_type => "collaboration",:score_action => "reply_posting",:user_id => current_user.id,:old_score => user_score.collaboration - 1,:new_score => user_score.collaboration,:current_user_level => current_user.get_level,:target_user_level => target_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
Rails.logger.info "[UserScore#joint] ===> User: #{current_user} reply posting. options => (#{options.to_s})"
|
|
|
|
|
when :reply_deleting # current_user 删除了 对 target_user 帖子的回复 Delete Message
|
|
|
|
|
user_score.collaboration = user_score.collaboration.to_i - 1
|
|
|
|
|
user_score.save
|
|
|
|
|
Rails.logger.info "[UserScore#joint] ===> User: #{current_user} reply deleting. options => (#{options.to_s})"
|
|
|
|
|
#when :reply_deleting # current_user 删除了 对 target_user 帖子的回复 Delete Message
|
|
|
|
|
# user_score.collaboration = user_score.collaboration.to_i - 1
|
|
|
|
|
# user_score.save
|
|
|
|
|
# Rails.logger.info "[UserScore#joint] ===> User: #{current_user} reply deleting. options => (#{options.to_s})"
|
|
|
|
|
else
|
|
|
|
|
Rails.logger.error "[UserScore#joint] ===> #{operate} is not define."
|
|
|
|
|
return false
|
|
|
|
@ -106,17 +111,19 @@ class UserScore < ActiveRecord::Base
|
|
|
|
|
# # => true #当前被关注用户记分成功
|
|
|
|
|
#
|
|
|
|
|
# Returns boolean. 返回积分保存结果
|
|
|
|
|
def self.influence(operate, current_user, target_user, options={})
|
|
|
|
|
def self.influence(operate, current_user, target_user,obj, options={})
|
|
|
|
|
current_user, target_user = get_users(current_user, target_user)
|
|
|
|
|
user_score = target_user.user_score_attr
|
|
|
|
|
case operate
|
|
|
|
|
when :followed_by # current_user 关注了target_user Add watcher
|
|
|
|
|
user_score.influence = user_score.influence.to_i + 2
|
|
|
|
|
user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id ,:target_user_id =>target_user.id, :score_type => "influence",:score_action => "followed_by",:user_id => target_user.id,:old_score => user_score.influence - 2,:new_score => user_score.influence,:current_user_level => current_user.get_level,:target_user_level => target_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
Rails.logger.info "[UserScore#influence] ===> User: #{current_user} be followed. options => (#{options.to_s})"
|
|
|
|
|
when :cancel_followed # current_uer 取消了对 target_user的关注 delete watcher
|
|
|
|
|
user_score.influence = user_score.influence.to_i - 2
|
|
|
|
|
user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id ,:target_user_id =>target_user.id, :score_type => "influence",:score_action => "cancel_followed",:user_id => target_user.id,:old_score => user_score.influence + 2,:new_score => user_score.influence,:current_user_level => current_user.get_level,:target_user_level => target_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
Rails.logger.info "[UserScore#influence] ===> User: #{current_user} canceled followed. options => (#{options.to_s})"
|
|
|
|
|
else
|
|
|
|
|
Rails.logger.error "[UserScore#influence] ===> #{operate} is not define."
|
|
|
|
@ -136,7 +143,7 @@ class UserScore < ActiveRecord::Base
|
|
|
|
|
# # => true #当前current_user对target_user用户帖子的记分成功
|
|
|
|
|
#
|
|
|
|
|
# Returns boolean. 返回积分保存结果
|
|
|
|
|
def self.skill(operate, current_user, target_user, options={})
|
|
|
|
|
def self.skill(operate, current_user, target_user,obj, options={})
|
|
|
|
|
current_user, target_user = get_users(current_user, target_user)
|
|
|
|
|
current_user_score = current_user.user_score_attr
|
|
|
|
|
target_user_score = target_user.user_score_attr
|
|
|
|
@ -146,6 +153,7 @@ class UserScore < ActiveRecord::Base
|
|
|
|
|
when :treaded_by_user # current_user 踩了 target_user 的帖子
|
|
|
|
|
current_user_score.skill = current_user_score.skill.to_i - 2 #踩别人的帖子减2分 add praise_tread
|
|
|
|
|
current_user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id ,:target_user_id =>target_user.id, :score_type => "skill",:score_action => "treaded_by_user",:user_id => current_user.id,:old_score => current_user_score.skill + 2,:new_score => current_user_score.skill,:current_user_level => current_user.get_level,:target_user_level => target_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
if current_user.id == target_user.id
|
|
|
|
|
target_user.reload
|
|
|
|
|
target_user_score = target_user.user_score_attr
|
|
|
|
@ -154,12 +162,15 @@ class UserScore < ActiveRecord::Base
|
|
|
|
|
if level == 1
|
|
|
|
|
target_user_score.skill = target_user_score.skill.to_i - 2 #帖子被一级会员踩-2分 add praise_tread
|
|
|
|
|
target_user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id ,:target_user_id =>target_user.id, :score_type => "skill",:score_action => "treaded_by_user",:user_id => target_user.id,:old_score => target_user_score.skill + 2,:new_score => target_user_score.skill,:current_user_level => current_user.get_level,:target_user_level => target_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
elsif level == 2
|
|
|
|
|
target_user_score.skill = target_user_score.skill.to_i - 4 #帖子被二级会员踩-4分 add praise_tread
|
|
|
|
|
target_user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id ,:target_user_id =>target_user.id, :score_type => "skill",:score_action => "treaded_by_user",:user_id => target_user.id,:old_score => target_user_score.skill + 4,:new_score => target_user_score.skill,:current_user_level => current_user.get_level,:target_user_level => target_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
elsif level == 3
|
|
|
|
|
target_user_score.skill = target_user_score.skill.to_i - 6 #帖子被三级会员踩-6分 add praise_tread
|
|
|
|
|
target_user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id ,:target_user_id =>target_user.id, :score_type => "skill",:score_action => "treaded_by_user",:user_id => target_user.id,:old_score => target_user_score.skill + 6,:new_score => target_user_score.skill,:current_user_level => current_user.get_level,:target_user_level => target_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
Rails.logger.info "[UserScore#skill] ===> User: #{current_user} treaded_by #{target_user}. options => (#{options.to_s})"
|
|
|
|
@ -168,14 +179,16 @@ class UserScore < ActiveRecord::Base
|
|
|
|
|
if level == 1
|
|
|
|
|
target_user_score.skill = target_user_score.skill.to_i + 4 #帖子被一级会员顶+4分 add praise_tread
|
|
|
|
|
target_user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id ,:target_user_id =>target_user.id, :score_type => "skill",:score_action => "praised_by_user",:user_id => target_user.id,:old_score => target_user_score.skill - 4,:new_score => target_user_score.skill,:current_user_level => current_user.get_level,:target_user_level => target_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
elsif level == 2
|
|
|
|
|
target_user_score.skill = target_user_score.skill.to_i + 6 #帖子被二级会员顶+6分 add praise_tread
|
|
|
|
|
target_user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id ,:target_user_id =>target_user.id, :score_type => "skill",:score_action => "praised_by_user",:user_id => target_user.id,:old_score => target_user_score.skill - 6,:new_score => target_user_score.skill,:current_user_level => current_user.get_level,:target_user_level => target_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
elsif level == 3
|
|
|
|
|
target_user_score.skill = target_user_score.skill.to_i + 8 #帖子被三级会员顶+8分 add praise_tread
|
|
|
|
|
target_user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id ,:target_user_id =>target_user.id, :score_type => "skill",:score_action => "praised_by_user",:user_id => target_user.id,:old_score => target_user_score.skill - 8,:new_score => target_user_score.skill,:current_user_level => current_user.get_level,:target_user_level => target_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
Rails.logger.info "[UserScore#skill] ===> User: #{current_user} praised_by #{target_user}. options => (#{options.to_s})"
|
|
|
|
|
else
|
|
|
|
|
Rails.logger.error "[UserScore#skill] ===> #{operate} is not define."
|
|
|
|
@ -195,7 +208,7 @@ class UserScore < ActiveRecord::Base
|
|
|
|
|
# # => true #当前current_user对项目贡献积分成功
|
|
|
|
|
#
|
|
|
|
|
# Returns boolean. 返回积分保存结果
|
|
|
|
|
def self.project(operate, current_user, options={})
|
|
|
|
|
def self.project(operate, current_user,obj, options={})
|
|
|
|
|
current_user, target_user = get_users(current_user, nil)
|
|
|
|
|
user_score = current_user.try(:user_score_attr)
|
|
|
|
|
return false if current_user.nil?
|
|
|
|
@ -203,22 +216,27 @@ class UserScore < ActiveRecord::Base
|
|
|
|
|
when :push_code # current_user 提交了代码 changeset
|
|
|
|
|
user_score = user_score.active.to_i + 4
|
|
|
|
|
user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id , :score_type => "active",:score_action => "push_code",:user_id => current_user.id,:old_score => user_score.active - 4,:new_score => user_score.active,:current_user_level => current_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
Rails.logger.debug "[UserScore#project] ===> User: [#{current_user.id},#{current_user.name}] pushed code one time. options => (#{options.to_s})"
|
|
|
|
|
when :push_document # current_user 提交了文档 document
|
|
|
|
|
user_score.active = user_score.active.to_i + 4
|
|
|
|
|
user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id , :score_type => "active",:score_action => "push_document",:user_id => current_user.id,:old_score => user_score.active - 4,:new_score => user_score.active,:current_user_level => current_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
Rails.logger.debug "[UserScore#project] ===> User: [#{current_user.id},#{current_user.name}] pushed a document. options => (#{options.to_s})"
|
|
|
|
|
when :push_file # current_user 提交了附件 attachment
|
|
|
|
|
user_score.active = user_score.active.to_i + 4
|
|
|
|
|
user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id , :score_type => "active",:score_action => "push_file",:user_id => current_user.id,:old_score => user_score.active - 4,:new_score => user_score.active,:current_user_level => current_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
Rails.logger.debug "[UserScore#project] ===> User: [#{current_user.id},#{current_user.name}] pushed a file. options => (#{options.to_s})"
|
|
|
|
|
when :update_issue_ratio # current_user 更新了缺陷完成度 issue
|
|
|
|
|
user_score.active = user_score.active.to_i + 2
|
|
|
|
|
user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id , :score_type => "active",:score_action => "update_issue_ratio",:user_id => current_user.id,:old_score => user_score.active - 2,:new_score => user_score.active,:current_user_level => current_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
Rails.logger.debug "[UserScore#project] ===> User: [#{current_user.id},#{current_user.name}] updated issue ratio. options => (#{options.to_s})"
|
|
|
|
|
when :post_issue # current_user 发布了缺陷 issue
|
|
|
|
|
user_score.active = user_score.active.to_i + 4
|
|
|
|
|
user_score.save
|
|
|
|
|
create_score_changed_details({:current_user_id => current_user.id , :score_type => "active",:score_action => "post_issue",:user_id => current_user.id,:old_score => user_score.active - 4,:new_score => user_score.active,:current_user_level => current_user.get_level,:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
|
|
|
|
|
Rails.logger.debug "[UserScore#project] ===> User: [#{current_user.id},#{current_user.name}] posting issue. options => (#{options.to_s})"
|
|
|
|
|
else
|
|
|
|
|
Rails.logger.error "[UserScore#project] ===> #{operate} is not define."
|
|
|
|
@ -234,6 +252,26 @@ class UserScore < ActiveRecord::Base
|
|
|
|
|
score
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
#创建分数改变记录 -by zjc
|
|
|
|
|
def self.create_score_changed_details(attributes)
|
|
|
|
|
if attributes.is_a? Hash
|
|
|
|
|
usd = UserScoreDetails.new
|
|
|
|
|
usd.current_user_id =attributes[:current_user_id]
|
|
|
|
|
usd.target_user_id = attributes[:target_user_id]
|
|
|
|
|
usd.score_type = attributes[:score_type]
|
|
|
|
|
usd.score_action = attributes[:score_action]
|
|
|
|
|
usd.user_id = attributes[:user_id]
|
|
|
|
|
usd.old_score = attributes[:old_score]
|
|
|
|
|
usd.new_score = attributes[:new_score]
|
|
|
|
|
usd.current_user_level = attributes[:current_user_level]
|
|
|
|
|
usd.target_user_level = attributes[:target_user_level]
|
|
|
|
|
#usd.score_changeable_obj = attributes[:score_changeable_obj]
|
|
|
|
|
usd.score_changeable_obj_id = attributes[:score_changeable_obj_id]
|
|
|
|
|
usd.score_changeable_obj_type = attributes[:score_changeable_obj_type]
|
|
|
|
|
usd.save
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
|
|
def self.get_users(current_user, target_user)
|
|
|
|
|