@ -27,7 +27,7 @@ module UserScoreHelper
issue_c = issue_c + Journal . where ( " user_id = ? " , user . id ) . count
issue_c = issue_c + Journal . where ( " user_id = ? " , user . id ) . count
############################
############################
memos = Memo . where ( 'author_id = ? AND parent_id IS NOT NULL' , user . id )
memos = Memo . where ( 'author_id = ? AND parent_id IS NOT NULL' , user . id )
memos . each do | m |
memos . each do | m |
if Memo . find ( m . parent_id ) . author . id != user . id
if Memo . find ( m . parent_id ) . author . id != user . id
issue_c = issue_c + 1
issue_c = issue_c + 1
@ -35,18 +35,18 @@ module UserScoreHelper
issue_c = issue_c - 1
issue_c = issue_c - 1
end
end
end
end
pmemos = Memo . where ( 'author_id = ? AND parent_id IS NULL' , user . id )
pmemos = Memo . where ( 'author_id = ? AND parent_id IS NULL' , user . id )
pmemos . each do | pm |
pmemos . each do | pm |
issue_c = issue_c + pm . replies_count
issue_c = issue_c + pm . replies_count
end
end
############################
############################
issue_c = issue_c + JournalsForMessage . where ( 'user_id = ? AND reply_id IS NOT NULL AND reply_id <> ?' , user . id , user . id ) . count + JournalsForMessage . where ( 'reply_id = ? AND user_id <> ?' , user . id , user . id ) . count
issue_c = issue_c + JournalsForMessage . where ( 'user_id = ? AND reply_id IS NOT NULL AND reply_id <> ?' , user . id , user . id ) . count + JournalsForMessage . where ( 'reply_id = ? AND user_id <> ?' , user . id , user . id ) . count
return issue_c
return issue_c
end
end
@ -58,14 +58,14 @@ module UserScoreHelper
def calculate_skill_count ( user )
def calculate_skill_count ( user )
praise_count_l0 = 0
praise_count_l0 = 0
praise_count_l1 = 0
praise_count_l1 = 0
praise_count_l2 = 0
praise_count_l2 = 0
tread_count_l0 = 0
tread_count_l0 = 0
tread_count_l1 = 0
tread_count_l1 = 0
tread_count_l2 = 0
tread_count_l2 = 0
issues = Issue . where ( 'author_id = ?' , user . id )
issues = Issue . where ( 'author_id = ?' , user . id )
issues . each do | i |
issues . each do | i |
pts = PraiseTread . where ( 'praise_tread_object_id = ?' , i . id )
pts = PraiseTread . where ( 'praise_tread_object_id = ?' , i . id )
pts . each do | p |
pts . each do | p |
@ -75,7 +75,7 @@ module UserScoreHelper
if p . praise_or_tread == 1
if p . praise_or_tread == 1
praise_count_l0 = praise_count_l0 + 1
praise_count_l0 = praise_count_l0 + 1
else
else
tread_count_l0 = tread_count_l0 + 1
tread_count_l0 = tread_count_l0 + 1
end
end
end
end
if templevel . to_i == 1
if templevel . to_i == 1
@ -97,7 +97,7 @@ module UserScoreHelper
bids = Bid . where ( 'author_id = ?' , user . id )
bids = Bid . where ( 'author_id = ?' , user . id )
bids . each do | b |
bids . each do | b |
ptcs = PraiseTread . where ( 'praise_tread_object_id = ?' , b . id )
ptcs = PraiseTread . where ( 'praise_tread_object_id = ?' , b . id )
@ -108,7 +108,7 @@ module UserScoreHelper
if p . praise_or_tread == 1
if p . praise_or_tread == 1
praise_count_l0 = praise_count_l0 + 1
praise_count_l0 = praise_count_l0 + 1
else
else
tread_count_l0 = tread_count_l0 + 1
tread_count_l0 = tread_count_l0 + 1
end
end
end
end
if templevel . to_i == 1
if templevel . to_i == 1
@ -127,7 +127,7 @@ module UserScoreHelper
end
end
end
end
end
end
contests = Contest . where ( 'author_id = ?' , user . id )
contests = Contest . where ( 'author_id = ?' , user . id )
contests . each do | c |
contests . each do | c |
ptcs = PraiseTread . where ( 'praise_tread_object_id = ?' , c . id )
ptcs = PraiseTread . where ( 'praise_tread_object_id = ?' , c . id )
@ -138,7 +138,7 @@ module UserScoreHelper
if p . praise_or_tread == 1
if p . praise_or_tread == 1
praise_count_l0 = praise_count_l0 + 1
praise_count_l0 = praise_count_l0 + 1
else
else
tread_count_l0 = tread_count_l0 + 1
tread_count_l0 = tread_count_l0 + 1
end
end
end
end
if templevel . to_i == 1
if templevel . to_i == 1
@ -154,12 +154,12 @@ module UserScoreHelper
else
else
tread_count_l2 + tread_count_l2 + 1
tread_count_l2 + tread_count_l2 + 1
end
end
end
end
end
end
end
end
# case level
# case level
# when 0 skill_score = praise_count - 0.5 * tread_count
# when 0 skill_score = praise_count - 0.5 * tread_count
# when 1 skill_score = 2 * praise_count - 1.5 * tread_count
# when 1 skill_score = 2 * praise_count - 1.5 * tread_count
@ -170,9 +170,9 @@ module UserScoreHelper
skill_score = 2 * praise_count_l0 . to_f + 3 * praise_count_l1 . to_f + 4 * praise_count_l2 . to_f
skill_score = 2 * praise_count_l0 . to_f + 3 * praise_count_l1 . to_f + 4 * praise_count_l2 . to_f
- 1 * tread_count_l0 . to_f - 1 . 5 * tread_count_l1 . to_f - 2 * tread_count_l2 . to_f
- 1 * tread_count_l0 . to_f - 1 . 5 * tread_count_l1 . to_f - 2 * tread_count_l2 . to_f
tread_user_count = PraiseTread . where ( 'praise_or_tread = ? AND user_id = ?' , 0 , user . id ) . count
tread_user_count = PraiseTread . where ( 'praise_or_tread = ? AND user_id = ?' , 0 , user . id ) . count
skill_score = skill_score . to_f - tread_user_count . to_f
skill_score = skill_score . to_f - tread_user_count . to_f
@ -182,17 +182,17 @@ module UserScoreHelper
return skill_score
return skill_score
end
end
def calculate_level ( user )
def calculate_level ( user )
commit_count = user . changesets . count
commit_count = user . changesets . count
max_praise_num = 0
max_praise_num = 0
issues = Issue . where ( 'author_id = ?' , user . id )
issues = Issue . where ( 'author_id = ?' , user . id )
issues . each do | i |
issues . each do | i |
ptcs = PraiseTreadCache . where ( 'object_id = ?' , i . id )
ptcs = PraiseTreadCache . where ( 'object_id = ?' , i . id )
ptcs . each do | p |
ptcs . each do | p |
@ -201,7 +201,7 @@ module UserScoreHelper
end
end
end
end
end
end
bids = Bid . where ( 'author_id = ?' , user . id )
bids = Bid . where ( 'author_id = ?' , user . id )
bids . each do | b |
bids . each do | b |
ptcs = PraiseTreadCache . where ( 'object_id = ?' , b . id )
ptcs = PraiseTreadCache . where ( 'object_id = ?' , b . id )
@ -211,7 +211,7 @@ module UserScoreHelper
end
end
end
end
end
end
contests = Contest . where ( 'author_id = ?' , user . id )
contests = Contest . where ( 'author_id = ?' , user . id )
contests . each do | c |
contests . each do | c |
ptcs = PraiseTreadCache . where ( 'object_id = ?' , c . id )
ptcs = PraiseTreadCache . where ( 'object_id = ?' , c . id )
@ -219,12 +219,12 @@ module UserScoreHelper
if p . praise_num . to_i > max_praise_num . to_i
if p . praise_num . to_i > max_praise_num . to_i
max_praise_num = p . praise_num
max_praise_num = p . praise_num
end
end
end
end
end
end
best_answer_num = 0
best_answer_num = 0
isManager = 0
isManager = 0
members = Member . where ( 'user_id = ?' , user . id )
members = Member . where ( 'user_id = ?' , user . id )
members . each do | m |
members . each do | m |
@ -238,21 +238,21 @@ module UserScoreHelper
end
end
level = 0
level = 0
if max_praise_num > 4
if max_praise_num > 4
level = 1
level = 1
end
end
if commit_count > 0 and commit_count < 101
if commit_count > 0 and commit_count < 101
level = 1
level = 1
end
end
if commit_count > 100 or isManager == 1
if commit_count > 100 or isManager == 1
level = 2
level = 2
end
end
return level
return level
end
end
def calculate_activity_count ( user )
def calculate_activity_count ( user )
@ -282,23 +282,23 @@ module UserScoreHelper
def calculate_issue ( user )
def calculate_issue ( user )
commit_count = user . changesets . count
commit_count = user . changesets . count
issue_details_count = 0
issue_details_count = 0
issues = Issue . where ( 'assigned_to_id = ?' , user . id )
issues = Issue . where ( 'assigned_to_id = ?' , user . id )
change_count = 0
change_count = 0
issues . each do | issue |
issues . each do | issue |
js = issue . journals
js = issue . journals
js . each do | j |
js . each do | j |
change_count = change_count + j . details . where ( " prop_key = ? " , " done_ratio " ) . count
change_count = change_count + j . details . where ( " prop_key = ? " , " done_ratio " ) . count
end
end
issue_details_count = change_count + issue_details_count
issue_details_count = change_count + issue_details_count
end
end
return ( commit_count + issue_details_count )
return ( commit_count + issue_details_count )
end
end
@ -306,9 +306,9 @@ module UserScoreHelper
attachments = Attachment . where ( " container_type IS NOT NULL AND container_type <> 'Issue' AND author_id = ? " , user . id ) . count
attachments = Attachment . where ( " container_type IS NOT NULL AND container_type <> 'Issue' AND author_id = ? " , user . id ) . count
return attachments
return attachments
end
end
def calculate_user_score ( user )
def calculate_user_score ( user )
collaboration = calculate_collaboration_count ( user )
collaboration = calculate_collaboration_count ( user )
influence = calculate_influence_count ( user )
influence = calculate_influence_count ( user )
@ -322,7 +322,7 @@ module UserScoreHelper
UserScore . new ( :collaboration = > collaboration , :influence = > influence , :skill = > skill ,
UserScore . new ( :collaboration = > collaboration , :influence = > influence , :skill = > skill ,
:activity = > activity , :file = > file , :issue = > issue , :level = > level )
:activity = > activity , :file = > file , :issue = > issue , :level = > level )
end
end
def update_user_score ( user )
def update_user_score ( user )
collaboration = calculate_collaboration_count ( user )
collaboration = calculate_collaboration_count ( user )
influence = calculate_influence_count ( user )
influence = calculate_influence_count ( user )
@ -331,7 +331,7 @@ module UserScoreHelper
issue = calculate_issue ( user )
issue = calculate_issue ( user )
##activity = calculate_activity_count(user)
##activity = calculate_activity_count(user)
level = calculate_level ( user )
level = calculate_level ( user )
user . user_score . update_attributes ( :collaboration = > collaboration , :influence = > influence , :skill = > skill ,
user . user_score . update_attributes ( :collaboration = > collaboration , :influence = > influence , :skill = > skill ,
:activity = > activity , :file = > file , :issue = > issue , :level = > level )
:activity = > activity , :file = > file , :issue = > issue , :level = > level )
@ -423,7 +423,7 @@ module UserScoreHelper
#更新分数
#更新分数
def update_score ( option_number )
def update_score ( option_number )
option_number . total_score = collaboration ( option_number ) + influence ( option_number ) + skill ( option_number ) + active( option_number )
option_number . total_score = collaboration ( option_number ) + influence ( option_number ) + skill ( option_number ) + project_ active( option_number )
if option_number . total_score < 0
if option_number . total_score < 0
option_number . total_score = 0
option_number . total_score = 0
end
end
@ -433,7 +433,7 @@ module UserScoreHelper
#协同得分
#协同得分
def collaboration ( option_number )
def collaboration ( option_number )
option_number . me ssages_for_issues + option_number . issues_status + option_number . replay_for_message + option_number . replay_for_memo
option_number . me mo * 2 + option_number . me ssages_for_issues + option_number . issues_status + option_number . replay_for_message + option_number . replay_for_memo
end
end
#影响力得分
#影响力得分
def influence ( option_number )
def influence ( option_number )
@ -444,8 +444,8 @@ module UserScoreHelper
option_number . praise_by_one * 4 + option_number . praise_by_two * 6 + option_number . praise_by_three * 8 - option_number . tread * 2 - option_number . tread_by_one * 2 - option_number . tread_by_two * 4 - option_number . tread_by_three * 6
option_number . praise_by_one * 4 + option_number . praise_by_two * 6 + option_number . praise_by_three * 8 - option_number . tread * 2 - option_number . tread_by_one * 2 - option_number . tread_by_two * 4 - option_number . tread_by_three * 6
end
end
#项目贡献得分
#项目贡献得分
def active( option_number )
def project_ active( option_number )
option_number . changeset * 4 + option_number . document * 4 + option_number . attachment * 4 + option_number . issue_done_ratio * 2 + option_number . post_issue * 4 + option_number . memo * 2
option_number . changeset * 4 + option_number . document * 4 + option_number . attachment * 4 + option_number . issue_done_ratio * 2 + option_number . post_issue * 4
end
end
#更新发帖数
#更新发帖数