From dfde06248c4f3da30d5756f6c255b70c113a8630 Mon Sep 17 00:00:00 2001 From: yanxd Date: Fri, 6 Jun 2014 17:33:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=93=E5=88=86=E5=88=9D=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReadMe.txt | 8 +++- app/models/user_score.rb | 97 ++++++++++++++++++++++++++++++++++++++++ db/schema.rb | 12 ++--- 3 files changed, 111 insertions(+), 6 deletions(-) diff --git a/ReadMe.txt b/ReadMe.txt index 9d223259..0fcba47c 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -44,4 +44,10 @@ app\controller\welcome_controller.rb return 0 end end -================================================================================ \ No newline at end of file +================================================================================ + +================================================================================ +0606:新坑 +user_scores表结构有问题,需要运行 +bundle exec rake db:migrate:down VERSION=20140410021724 +bundle exec rake db:migrate:up VERSION=20140410021724 \ No newline at end of file diff --git a/app/models/user_score.rb b/app/models/user_score.rb index f383d667..8df64c00 100644 --- a/app/models/user_score.rb +++ b/app/models/user_score.rb @@ -33,4 +33,101 @@ class UserScore < ActiveRecord::Base def self.find_min_issue self.minimum(:file) end + # 以上类方法目测没用,反正也报错 + # =============================================================================== + + # 前略·协同得分 + # operate - 更新操作 类型 symbol + # user - 计分用户 + # + # Examples + # + # UserScore.joint(:post_message, User.current, nil) + # # => true #当前用户发帖计分操作成功 + # + # Returns boolean. 返回积分保存结果 + def self.joint(operate, current_user, target_user, options={}) + user_obj = (user.kind_of?User) ? user : User.find_by_id(user) + case operate + when :post_message # current_user 发帖了 + when :post_issue # current_user 对 target_user 的缺陷留言了 + when :change_issue_status # current_user 更改了缺陷的状态 + when :reply_message # current_user 对 target_user 留言的回复 + when :reply_posting # current_user 对 target_user 帖子的回复 + else + Rails.logger.error "[UserScore#joint] ===> #{operate} is not define." + return false + end + end + + # 前略·影响力得分 + # operate - 更新操作 类型 symbol + # user - 计分用户 + # + # Examples + # + # UserScore.influence(:followed_by, user) + # # => true #当前被关注用户记分成功 + # + # Returns boolean. 返回积分保存结果 + def self.influence(operate, current_user, target_user, options={}) + case operate + when :followed_by # current_user 关注了target_user + else + Rails.logger.error "[UserScore#influence] ===> #{operate} is not define." + return false + end + end + + # 前略·技术得分 + # operate - 更新操作 类型 symbol + # user - 计分用户 + # + # Examples + # + # UserScore.skill(:followed_by, current_user, target_user) + # # => true #当前current_user对target_user用户帖子的记分成功 + # + # Returns boolean. 返回积分保存结果 + def self.skill(operate, current_user, target_user, options={}) + case operate + when :treading # current_user 踩了 target_user 的帖子 + when :treaded_by_user # current_user 踩了 target_user 的帖子 + when :praise_by_user # current_user 顶了 target_user 的帖子 + else + Rails.logger.error "[UserScore#skill] ===> #{operate} is not define." + return false + end + end + + # 前略·项目得分 + # operate - 更新操作 类型 symbol + # user - 计分用户 + # + # Examples + # + # UserScore.project(:pull_code, current_user) + # # => true #当前current_user对项目贡献积分成功 + # + # Returns boolean. 返回积分保存结果 + def self.project(operate, current_user, options={}) + case operate + when :push_code # current_user 提交了代码 + when :push_document # current_user + when :push_file # current_user + when :update_issue # current_user + when :post_issue # current_user + else + Rails.logger.error "[UserScore#skill] ===> #{operate} is not define." + return false + end + end + + private + + def get_users(current_user, target_user) + cUser = nil + tUser = nil + @current_user, @target_user = cUser, tUser + end end diff --git a/db/schema.rb b/db/schema.rb index 185f5e13..109ad65e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -923,11 +923,13 @@ ActiveRecord::Schema.define(:version => 20140605025247) do add_index "user_preferences", ["user_id"], :name => "index_user_preferences_on_user_id" create_table "user_scores", :force => true do |t| - t.integer "user_id" - t.integer "collaboration" - t.integer "influence" - t.integer "skill" - t.integer "activity" + t.integer "user_id", :null => false + t.integer "collaboration" + t.integer "influence" + t.integer "skill" + t.integer "active" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false end create_table "user_statuses", :force => true do |t|