|
- #用户等级类 - by zjc
- class UserLevels < ActiveRecord::Base
- attr_accessible :user_id, :level
- belongs_to :user
-
- #获取user的等级 -by zjc
- def self.get_level(user)
- unless user.nil?
- if user.level.nil?
- UserLevels.update_user_level(user)
- end
- user.level.level
- end
-
- end
-
- #更新用户的等级 -by zjc
- def self.update_user_level(user)
- unless user.nil?
- user_level = user.level.nil? ? UserLevels.new : user.level
- user_level.user = user
-
- #判断user的等级
- pis = user.project_infos #ProjectInfo.find_all_by_user_id(self.id)
- isManager = false;
- pis.each do |pi|
- #判断是否为项目管理员
- if user.allowed_to?({:controller => "projects", :action => "edit"}, pi.project)
- isManager = true;
- end
- end
- has_effective_praise_count = false;
- user.messages.each do |message|
- if message.parent_id.nil?
- ptcs = PraiseTreadCache.find_all_by_object_id(message.id)
- ptcs.each do |ptc|
- if ptc.object_type == 'Message' && ptc.praise_num.to_i > 5
- has_effective_praise_count = true
- end
- end
- end
- end
- if !has_effective_praise_count
- user.memos do |memo|
- if memo.parent_id.nil?
- ptcs = PraiseTreadCache.find_all_by_object_id(memo.id)
- ptcs.each do |ptc|
- if ptc.object_type == 'Memo' && ptc.praise_num > 5
- has_effective_praise_count = true
- end
- end
- end
- end
- end
-
- if isManager || user.changesets.count > 100
- user_level.level = 3
- elsif (user.changesets.count > 1 && user.changesets.count <= 100) || has_effective_praise_count
- user_level.level = 2
- else
- user_level.level = 1
- end
- user_level.save
- user.reload
- end
-
- end
- end
|