得分机制修改

competition
z9hang 11 years ago
parent d8fcf8eb9b
commit c60188038e

@ -41,6 +41,7 @@ class UsersController < ApplicationController
:activity_score_index, :influence_score_index, :score_index,:show_new_score, :topic_new_score_index, :project_new_score_index,
:activity_new_score_index, :influence_new_score_index, :score_new_index]
before_filter :auth_user_extension, only: :show
before_filter :rest_user_score, only: :show
accept_api_auth :index, :show, :create, :update, :destroy,:tag_save , :tag_saveEx
#william
@ -54,6 +55,7 @@ class UsersController < ApplicationController
include AvatarHelper
include WordsHelper
include GitlabHelper
include UserScoreHelper
# added by liuping 关注
@ -781,4 +783,17 @@ class UsersController < ApplicationController
redirect_to my_account_path
end
end
#重置用户得分
def rest_user_score
memo_num(@user)
messges_for_issue_num(@user)
issues_status_num(@user)
replay_for_memo_num(@user)
tread_num(@user)
praise_num(@user)
changeset_num(@user)
document_num(@user)
end
end

File diff suppressed because it is too large Load Diff

@ -79,6 +79,7 @@ class Issue < ActiveRecord::Base
# fq
after_create :act_as_activity,:be_user_score_new_issue
after_update :be_user_score
before_destroy :down_user_score
# after_create :be_user_score
# end
@ -1524,5 +1525,19 @@ class Issue < ActiveRecord::Base
update_post_issue(self.author,1)
end
def down_user_score
#缺陷完成度更新
if self.done_ratio_changed?
UserScore.project(:update_issue_ratio, User.current,self,{ issue_id: self.id })
#update_issue_done_ratio(User.current,1)
end
#缺陷状态更改
if self.status_id_changed?
#协同得分
UserScore.joint(:change_issue_status, User.current,nil,self, {issue_id: self.id})
#update_issues_status(self.author , 1)
end
end
end

@ -48,9 +48,9 @@ class Journal < ActiveRecord::Base
# fq
after_create :act_as_activity,:be_user_score
# end
after_destroy :down_user_score
#after_destroy :down_user_score
#before_save :be_user_score
#before_destroy :down_user_score
before_destroy :down_user_score
scope :visible, lambda {|*args|
user = args.shift || User.current
@ -158,13 +158,20 @@ class Journal < ActiveRecord::Base
# 更新用户分数 -by zjc
def be_user_score
#新建了缺陷留言且留言不为空,不为空白
if !self.notes.nil? && self.notes.gsub(' ','') != ''
#协同得分加分
UserScore.joint(:post_issue_message, User.current,self.issue.author,self, { message_id: self.id })
update_messges_for_issue(User.current,1)
UserScore.joint(:post_issue_message, self.user,self.issue.author,self, { message_id: self.id })
end
#update_messges_for_issue(User.current,1)
end
# 减少用户分数 -by zjc
def down_user_score
#删除有效缺陷留言
update_messges_for_issue(User.current,1)
if !self.notes.nil? && self.notes.gsub(' ','') != ''
#协同得分减分
UserScore.joint(:delete_issue_message, self.user,self.issue.author,self, { message_id: self.id })
end
#update_messges_for_issue(User.current,1)
end
end

@ -20,7 +20,8 @@ class JournalDetail < ActiveRecord::Base
belongs_to :journal
before_save :normalize_values
after_create :be_user_score
after_destroy :down_user_score
#after_destroy :down_user_score
before_destroy :down_user_score
private
def normalize_values
@ -44,17 +45,24 @@ class JournalDetail < ActiveRecord::Base
def be_user_score
#更新缺陷完成度
if self.prop_key == 'done_ratio'
update_issue_done_ratio(User.current,1)
#update_issue_done_ratio(User.current,1)
#更新缺陷状态
elsif self.prop_key == 'status_id'
update_issues_status(User.current , 1)
#update_issues_status(User.current , 1)
end
end
#更新用户分数
def down_user_score
update_issue_done_ratio(User.current,1)
update_issues_status(User.current , 1)
#update_issue_done_ratio(User.current,1)
#update_issues_status(User.current , 1)
if self.prop_key == 'done_ratio'
#更新缺陷状态
elsif self.prop_key == 'status_id'
UserScore.joint(:delete_issue_status, self.journal.user,nil,self, {issue_id: self.id})
end
end
end

@ -42,9 +42,9 @@ class Memo < ActiveRecord::Base
"parent_id",
"replies_count"
after_create :add_author_as_watcher, :reset_counters!,:be_user_score
after_create :add_author_as_watcher, :reset_counters!#,:be_user_score -- 公共区发帖暂不计入得分
# after_update :update_memos_forum
after_destroy :reset_counters!,:down_user_score
after_destroy :reset_counters!#,:down_user_score -- 公共区发帖暂不计入得分
# after_create :send_notification
# after_save :plusParentAndForum
# after_destroy :minusParentAndForum

@ -59,12 +59,12 @@ class Message < ActiveRecord::Base
after_create :add_author_as_watcher, :reset_counters!
after_update :update_messages_board
after_destroy :reset_counters!,:down_user_score
after_destroy :reset_counters!#,:down_user_score
# fq
after_create :act_as_activity,:be_user_score
#before_save :be_user_score
#before_destroy :down_user_score
before_destroy :down_user_score
# end
scope :visible, lambda {|*args|
@ -149,20 +149,24 @@ class Message < ActiveRecord::Base
#更新用户分数 -by zjc
def be_user_score
#新建message且无parent的为发帖
if self.parent_id.nil?
UserScore.joint(:post_message, User.current,nil,self, { message_id: self.id })
update_memo_number(User.current,1)
if self.parent_id.nil? && !self.board.project.nil?
UserScore.joint(:post_message, self.author,nil,self, { message_id: self.id })
#update_memo_number(User.current,1)
#新建message且有parent的为回帖
elsif !self.parent_id.nil?
UserScore.joint(:reply_posting, User.current,self.parent.author,self, { message_id: self.id })
update_replay_for_memo(User.current,1)
elsif !self.parent_id.nil? && !self.board.project.nil?
UserScore.joint(:reply_posting, self.author,self.parent.author,self, { message_id: self.id })
#update_replay_for_memo(User.current,1)
end
end
#减少用户分数
def down_user_score
#更新发帖和回帖数量
update_memo_number(User.current,1)
update_replay_for_memo(User.current,1)
if self.parent_id.nil? && !self.board.project.nil?
UserScore.joint(:delete_message, self.author,nil,self, { message_id: self.id })
elsif !self.parent_id.nil? && !self.board.project.nil?
UserScore.joint(:reply_deleting, self.author,self.parent.author,self, { message_id: self.id })
end
#update_memo_number(User.current,1)
#update_replay_for_memo(User.current,1)
end
end

@ -69,10 +69,11 @@ class UserScore < ActiveRecord::Base
end
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 => UserLevels.get_level(current_user),: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
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 => UserLevels.get_level(current_user),:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
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
@ -81,11 +82,12 @@ class UserScore < ActiveRecord::Base
user_grade.save
end
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 => UserLevels.get_level(current_user),:target_user_level => UserLevels.get_level(target_user),: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})"
Rails.logger.info "[UserScore#joint] ===> User: #{current_user} posting a issue message. 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
create_score_changed_details({:current_user_id => current_user.id ,:target_user_id =>target_user.id, :score_type => "collaboration",:score_action => "delete_issue_message",:user_id => current_user.id,:old_score => user_score.collaboration + 1,:new_score => user_score.collaboration,:current_user_level => UserLevels.get_level(current_user),:target_user_level => UserLevels.get_level(target_user),:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
Rails.logger.info "[UserScore#joint] ===> User: #{current_user} deleting a issue message. options => (#{options.to_s})"
when :change_issue_status # current_user 更改了缺陷的状态 Changed Issue
user_score.collaboration = user_score.collaboration.to_i + 1
user_score.save
@ -95,6 +97,11 @@ class UserScore < ActiveRecord::Base
end
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 => UserLevels.get_level(current_user),: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 :delete_issue_status
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 => "delete_issue_status",:user_id => current_user.id,:old_score => user_score.collaboration + 1,:new_score => user_score.collaboration,:current_user_level => UserLevels.get_level(current_user),:score_changeable_obj_id=> obj.id,:score_changeable_obj_type => obj.class.to_s})
Rails.logger.info "[UserScore#joint] ===> User: #{current_user} delete 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
@ -117,10 +124,10 @@ class UserScore < ActiveRecord::Base
end
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 => UserLevels.get_level(current_user),:target_user_level => UserLevels.get_level(target_user),: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
@ -329,6 +336,11 @@ class UserScore < ActiveRecord::Base
end
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 => UserLevels.get_level(current_user),: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 :delete_issue_ratio
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 => "delete_issue_ratio",:user_id => current_user.id,:old_score => user_score.active + 2,:new_score => user_score.active,:current_user_level => UserLevels.get_level(current_user),: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}] delete issue ratio. options => (#{options.to_s})"
when :post_issue # current_user 发布了缺陷 issue
user_score.active = user_score.active.to_i + 4
user_score.save

Loading…
Cancel
Save