forked from Trustie/forgeplus
change
This commit is contained in:
parent
82907e001f
commit
d76d85b8fb
|
@ -38,18 +38,13 @@ class Users::StatisticsController < Users::BaseController
|
|||
badges_visable = Array.new
|
||||
@badges_dic.each do |key,value|
|
||||
if value > 0
|
||||
badges_visable.append({"#{key}":value})
|
||||
#与describe同理,此处应该再增加一个 url字典
|
||||
describe = @badges_describe_dic[key]
|
||||
badges_visable.append({"#{key}":value, "describe":describe})
|
||||
end
|
||||
end
|
||||
render :json => {list: badges_visable, count: badges_visable.size}
|
||||
|
||||
# @badge = Badge.where(user_id: observed_user.id).pluck(:watcher, :pullrequest, :many_fans, :amazing_project_owner).first
|
||||
# watcher = @badge[0]
|
||||
# pullrequest = @badge[1]
|
||||
# many_fans = @badge[2]
|
||||
# amazing_project_owner = @badge[3]
|
||||
# render :json => {watcher: watcher, pullrequest: pullrequest, many_fans: many_fans, amazing_project_owner: amazing_project_owner}
|
||||
|
||||
end
|
||||
###############change###############
|
||||
|
||||
|
@ -281,39 +276,32 @@ end
|
|||
|
||||
# 三类
|
||||
# 第一类 贡献类
|
||||
# 1. 用户拥有10个项目以上
|
||||
# 2.用户有项目获得高星
|
||||
# 3.用户有数个高星项目
|
||||
# 4.用户拥有一个点赞数很高的项目
|
||||
# 5.用户拥有数个点赞数很高的项目
|
||||
# 6. 用户关注数超过10人
|
||||
# 7. 用户的累积获赞人数
|
||||
# 8. 用户连续一周/月有commit
|
||||
# 9. 用户累积pr数
|
||||
# 8. 用户累积pr数
|
||||
|
||||
# 第二类 活动类
|
||||
# 第三类 特殊类
|
||||
# 第三类 活跃类
|
||||
# 1. 用户拥有10个项目以上
|
||||
# 2. 用户连续一周/月有commit
|
||||
# 3. 用户涨粉迅速
|
||||
|
||||
|
||||
|
||||
def preload_badge_data
|
||||
|
||||
@many_projects_cache = "many_projects"
|
||||
@manyParisesProject_cache = "manyParisesProject"
|
||||
@parises_project_cache = "parises_project"
|
||||
@manyWatchersProject_cache = "manyWatchersProject"
|
||||
@watchers_project_cache = "watchers_project"
|
||||
@many_fans_cache = "many_fans"
|
||||
@many_pr_cache = "many_pr"
|
||||
@many_issue_cache = "many_issue"
|
||||
@active_in_week_cache = "active_in_week"
|
||||
badge_describe
|
||||
cache_describe
|
||||
#加载缓存资源
|
||||
load_redis
|
||||
|
||||
#存放用户获得的徽章字典
|
||||
@badges_dic = Hash.new(0)
|
||||
# 有些数据直接从缓存中读取,由于题目要求不能破坏原本的函数,其他暂时缓存写到了 Cache::V2::UserBadgeService里,
|
||||
# 但数据类型比较相似,感觉写到UserStatisticService里比较合适,这里暂时使用的是直接查询得到的数据
|
||||
# 有些数据可以考虑直接从缓存中读取,由于题目要求不能破坏原本的函数,暂时缓存写了直接查询,
|
||||
# 例如 Watcher.where(watchable: observed_user).count 可以用@user_result["follow-count"]来替代
|
||||
#
|
||||
@user_result = Cache::V2::UserStatisticService.new(observed_user.id).read
|
||||
|
||||
# 用户项目获得的徽章
|
||||
|
@ -322,7 +310,9 @@ def preload_badge_data
|
|||
|
||||
# 用户项目数量 y
|
||||
project_count = @user_result["project-count"].to_i
|
||||
@badges_dic["project_count"] = project_count
|
||||
if project_count > 10
|
||||
@badges_dic["project_count"] = project_count
|
||||
end
|
||||
# 用户点赞数量 y
|
||||
|
||||
# 用户项目被follow数量
|
||||
|
@ -407,8 +397,7 @@ def redis_judge_reload(judge_cache, new_value)
|
|||
end
|
||||
end
|
||||
|
||||
|
||||
def cache_name
|
||||
def cache_describe
|
||||
@many_projects_cache = "many_projects"
|
||||
@manyParisesProject_cache = "manyParisesProject"
|
||||
@parises_project_cache = "parises_project"
|
||||
|
@ -421,6 +410,24 @@ def cache_name
|
|||
end
|
||||
|
||||
|
||||
def badge_describe
|
||||
|
||||
@badges_describe_dic = Hash.new(0)
|
||||
@badges_describe_dic["many_projects"] = "参与了多个project!"
|
||||
@badges_describe_dic["manyParisesProject"] = "有多个点赞数高的project!"
|
||||
@badges_describe_dic["parises_project"] = "有一个项目获得了很高的点赞数!"
|
||||
@badges_describe_dic["manyWatchersProject"] = "有多个关注三诉讼诉讼诉讼诉讼诉讼诉讼数高的project!"
|
||||
@badges_describe_dic["watchers_project"] = "有一个项目获得了很高的关注数!"
|
||||
@badges_describe_dic["watchers_project"] = "有一个项目获得了很高的关注数!"
|
||||
@badges_describe_dic["many_fans"] = "粉丝数很多!"
|
||||
@badges_describe_dic["many_fans"] = "贡献了很多pr!"
|
||||
@badges_describe_dic["many_pr"] = "贡献了很多issue!"
|
||||
@badges_describe_dic["many_issue"] = "粉丝数很多!"
|
||||
@badges_describe_dic["active_in_week"] = "一周活跃打卡成就!"
|
||||
|
||||
end
|
||||
|
||||
|
||||
def load_redis
|
||||
@badge = Badge.find_or_create_by(user_id: observed_user.id)
|
||||
$redis_cache.hset(user_statistic_key, @many_projects_cache, @badge.many_projects)
|
||||
|
@ -435,8 +442,11 @@ def load_redis
|
|||
end
|
||||
|
||||
def updateService(update_name, update_value)
|
||||
@badge = Badge.find_or_create_by(user_id: observed_user.id)
|
||||
@badge.update_attribute(update_name,update_value)
|
||||
@badge.save
|
||||
#添加事务,如果更新失败则回滚
|
||||
ActiveRecord::Base.transaction do
|
||||
@badge = Badge.find_or_create_by!(user_id: observed_user.id)
|
||||
@badge.update_attributes!(update_name => update_value)
|
||||
@badge.save!
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue