From 49d456bf218c5f7244e2e6f39296dc23a1a6f600 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 14 Jan 2016 14:32:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/files_controller.rb | 4 +- app/controllers/repositories_controller.rb | 7 ++- app/helpers/application_helper.rb | 2 +- app/models/forge_activity.rb | 19 +------- app/models/journal.rb | 4 +- app/models/message.rb | 48 ++++++++++--------- app/models/news.rb | 20 ++++---- app/views/layouts/base_projects.html.erb | 8 ++-- .../projects/_development_group.html.erb | 16 +++---- app/views/projects/_friend_group.html.erb | 12 ++--- app/views/projects/_research_team.html.erb | 16 +++---- .../20160114022928_update_project_score.rb | 2 +- 12 files changed, 76 insertions(+), 82 deletions(-) diff --git a/app/controllers/files_controller.rb b/app/controllers/files_controller.rb index 42b486e69..85423f2fd 100644 --- a/app/controllers/files_controller.rb +++ b/app/controllers/files_controller.rb @@ -454,7 +454,9 @@ class FilesController < ApplicationController end end # 更新资源总数, 根据上传的附件数累加 - @project.update_attribute(:attachments_count, @project.attachments_count + attachments[:files].count) + unless @project.project_score.nil? + @project.project_score.update_attribute(:attach_num, @project.project_score.attach_num + attachments[:files].count) + end # end # TODO: 临时用 nyan sort_init 'created_on', 'desc' diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 9cb6c6bd8..0a9de787a 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -352,7 +352,10 @@ update # @changesets_count = @repository.latest_changesets(@path, @rev).count @changesets_all_count = @project.gpid.nil? ? 0 : g.project(@project.gpid).commit_count # 访问该页面的是会后则刷新 - if @changesets_all_count != @project.commits_count && @changesets_all_count != 0 + if @project.project_score.nil? + ProjectScore.create(:project_id => @project.id, :score => false) + end + if @changesets_all_count != @project.project_score.changeset_num && @changesets_all_count != 0 update_commits_count(@project, @changesets_all_count) end # end @@ -583,7 +586,7 @@ update private # 更新项目统计数 def update_commits_count project, count - project.update_attribute(:commits_count, count) + project.project_score.update_attribute(:changeset_num, count) end def find_repository diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 17f80cec8..be9c59992 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -52,7 +52,7 @@ module ApplicationHelper # 获取项目/课程总分 # 发布缺陷 4分 回复缺陷 1分 提交一次 4分 讨论帖子 2分 回复帖子 1分 发布新闻 1分 def static_project_score obj - score = obj.issues_count * 4 + obj.journals_count + obj.commits_count * 4 + obj.boards_count * 2 + obj.boards_reply_count + obj.news_count + obj.attachments_count * 5 + score = obj.issue_num * 4 + obj.issue_journal_num + obj.changeset_num * 4 + obj.board_num * 2 + obj.board_message_num + obj.news_num + obj.attach_num * 5 end # 获取组织成员中文名字 diff --git a/app/models/forge_activity.rb b/app/models/forge_activity.rb index 310d194a0..c98c5475b 100644 --- a/app/models/forge_activity.rb +++ b/app/models/forge_activity.rb @@ -20,8 +20,8 @@ class ForgeActivity < ActiveRecord::Base validates :forge_act_id,presence: true validates :forge_act_type, presence: true has_many :user_acts, :class_name => 'UserAcivity',:as =>:act - after_save :add_user_activity, :add_org_activity, :add_acts_count - before_destroy :destroy_user_activity, :destroy_org_activity, :decrease_acts_count + after_save :add_user_activity, :add_org_activity + before_destroy :destroy_user_activity, :destroy_org_activity #在个人动态里面增加当前动态 def add_user_activity @@ -45,21 +45,6 @@ class ForgeActivity < ActiveRecord::Base end end - # 更新动态数 - def add_acts_count - if self.project - count = self.project.acts_count + 1 - self.project.update_attribute(:acts_count, count) - end - end - - def decrease_acts_count - if self.project - count = self.project.acts_count - 1 - self.project.update_attribute(:acts_count, count) - end - end - def add_org_activity org_activity = OrgActivity.where("org_act_type = '#{self.forge_act_type.to_s}' and org_act_id = #{self.forge_act_id}").first if org_activity diff --git a/app/models/journal.rb b/app/models/journal.rb index 62f0d1d69..88b71d9ff 100644 --- a/app/models/journal.rb +++ b/app/models/journal.rb @@ -225,9 +225,9 @@ class Journal < ActiveRecord::Base # issue留言总数更新 def add_journals_count - unless self.issue.project.nil? && self.journalized_type == "Issue" + if !self.issue.project.nil? && self.journalized_type == "Issue" && self.issue.project.project_score.nil? project = self.issue.project - project.update_attribute(:journals_count, project.journals_count + 1) + project.project_score.update_attribute(:issue_journal_num, project.project_score.journals_count + 1) end end end diff --git a/app/models/message.rb b/app/models/message.rb index 2a83011f1..1f8dbaace 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -129,14 +129,32 @@ class Message < ActiveRecord::Base # 发帖精辟更新发帖总数 def add_boards_count - if self.project - # 讨论区 - if self.parent_id.nil? - count = self.project.boards_count + 1 - self.project.update_attribute(:boards_count, count) - else # 回复 - count = self.project.boards_reply_count + 1 - self.project.update_attribute(:boards_reply_count, count) + unless self.project.project_score.nil? + if self.project + # 讨论区 + if self.parent_id.nil? + count = self.project.project_score.board_num + 1 + self.project.project_score.update_attribute(:board_num, count) + else # 回复 + count = self.project.project_score.board_message_num + 1 + self.project.project_score.update_attribute(:board_message_num, count) + end + end + end + end + + # 删除帖子的时候更新帖子总数, 删除回复的时候总数不减少 + def decrease_boards_count + unless self.project.project_score.nil? + if self.project && self.parent_id.nil? + # 讨论区 + if self.parent_id.nil? + count = self.project.project_score.board_num - 1 + self.project.project_score.update_attribute(:board_num, count) + else # 回复 + count = self.project.project_score.board_message_num - 1 + self.project.project_score.update_attribute(:board_message_num, count) + end end end end @@ -326,20 +344,6 @@ class Message < ActiveRecord::Base delete_kindeditor_assets_from_disk self.id,OwnerTypeHelper::MESSAGE end - # 删除帖子的时候更新帖子总数, 删除回复的时候总数不减少 - def decrease_boards_count - if self.project && self.parent_id.nil? - # 讨论区 - if self.parent_id.nil? - count = self.project.boards_count - 1 - self.project.update_attribute(:boards_count, count) - else # 回复 - count = self.project.boards_reply_count - 1 - self.project.update_attribute(:boards_reply_count, count) - end - end - end - # 课程成员得分(英雄榜) def act_as_student_score if self.course diff --git a/app/models/news.rb b/app/models/news.rb index 4903003e8..7c44f7e8a 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -116,9 +116,16 @@ class News < ActiveRecord::Base private def add_news_count - if self.project - count = self.project.news_count + 1 - self.project.update_attribute(:news_count, count) + if self.project && !self.project.project_score.nil? + count = self.project.project_score.news_num + 1 + self.project.project_score.update_attribute(:news_num, count) + end + end + + def decrease_news_count + if self.project && !self.project.project_score.nil? + count = self.project.project_score.news_num - 1 + self.project.project_score.update_attribute(:news_num, count) end end @@ -176,13 +183,6 @@ class News < ActiveRecord::Base delete_kindeditor_assets_from_disk self.id,OwnerTypeHelper::NEWS end - def decrease_news_count - if self.project - count = self.project.news_count - 1 - self.project.update_attribute(:news_count, count) - end - end - def send_mail Mailer.run.news_added(self) if Setting.notified_events.include?('news_added') end diff --git a/app/views/layouts/base_projects.html.erb b/app/views/layouts/base_projects.html.erb index 8ecc6fb54..58289b352 100644 --- a/app/views/layouts/base_projects.html.erb +++ b/app/views/layouts/base_projects.html.erb @@ -76,9 +76,9 @@
<% if @project.project_type == 0 %> - <% unless static_project_score(@project) == 0 %> + <% unless static_project_score(@project.project_score) == 0 %> <%= l(:label_project_score)%> : - <%= link_to(format("%.2f" ,static_project_score(@project) ).to_i, + <%= link_to(format("%.2f" ,static_project_score(@project.project_score)).to_i, {:controller => 'projects', :action => 'show_projects_score', :remote => true, @@ -95,8 +95,8 @@ <% unless @project.enabled_modules.where("name = 'files'").empty? %> <%= l(:project_module_attachments) %>( - <% @project.attachments_count %> - <%= link_to "#{@project.attachments_count}", project_files_path(@project), :class => 'info_foot_num c_blue', :id=>'project_files_count_info' %>) + <% @project.project_score.attach_num %> + <%= link_to "#{@project.project_score.attach_num }", project_files_path(@project), :class => 'info_foot_num c_blue', :id=>'project_files_count_info' %>) <% end %>
diff --git a/app/views/projects/_development_group.html.erb b/app/views/projects/_development_group.html.erb index 0c33f70a6..4f13278cd 100644 --- a/app/views/projects/_development_group.html.erb +++ b/app/views/projects/_development_group.html.erb @@ -1,14 +1,14 @@ <% unless @project.enabled_modules.where("name = 'issue_tracking'").empty? %>