@ -5,8 +5,8 @@ namespace :competition do
end_time = Time . parse ( args [ :end_time ] )
start_time = Time . parse ( '2018-06-01' )
old_competition = Competition . find 3
competition = Competition . find 1 0
old_competition = Competition . find 9
competition = Competition . find 1 3
old_competition_user_ids = old_competition . team_members . pluck ( :user_id )
@ -23,12 +23,11 @@ namespace :competition do
user_ids = shixun_user_ids + course_user_ids
user_ids . uniq . each do | user_id |
user = User . find user_id
if user
team = CompetitionTeam . create! ( competition_id : competition . id , user_id : user_id , name : user . real_name )
TeamMember . create! ( competition_team_id : team . id , user_id : user_id , role : 1 , competition_id : competition . id )
end
users = User . joins ( :user_extension ) . where ( id : user_ids ) . where ( user_extensions : { identity : 0 } )
users . each do | user |
team = CompetitionTeam . create! ( competition_id : competition . id , user_id : user . id , name : user . real_name )
TeamMember . create! ( competition_team_id : team . id , user_id : user . id , role : 1 , competition_id : competition . id )
end
custom_logger ( " Start Statistic Competition Score ~ " )
@ -92,9 +91,9 @@ namespace :competition do
user_id : shixun . user . id ,
username : shixun . user . show_real_name ,
score : score ,
type : 'CompetitionCourse Course Record',
type : 'CompetitionCourse Shixun Record',
snapshot : {
shixun : shixun . as_json ( only : [ :id , :name , :identifier , :fork_from ] ) [ 'shixun' ] ,
shixun : shixun . as_json ( only : [ :id , :name , :identifier , :fork_from ] ) ,
myshixuns_count : shixun . myshixuns_count . to_i ,
forked_myshixun_count : shixun [ 'forked_myshixun_count' ] . to_i ,
valid_myshixun_count : myshixun_count_map . fetch ( shixun . id , 0 ) ,
@ -116,7 +115,7 @@ namespace :competition do
. where ( " exists(select 1 from homework_commons hcs where hcs.course_id = courses.id and hcs.publish_time is not null and hcs.publish_time < ? and hcs.homework_type = 4 and exists( #{ subquery } )) " , end_time )
. joins ( 'join course_members on course_members.course_id = courses.id and course_members.role in (1,2,3)' )
. where ( course_members : { user_id : team_user_ids } ) . pluck ( :id )
courses = Course . where ( id : course_ids ) . joins ( : shixun_homework_common s) . where ( 'homework_commons.publish_time < ?' , end_time )
courses = Course . where ( id : course_ids ) . joins ( : practice_homework s) . where ( 'homework_commons.publish_time < ?' , end_time )
courses = courses . select ( 'courses.id, courses.name, courses.members_count, count(*) shixun_homework_count' )
. group ( 'courses.id' ) . order ( 'shixun_homework_count desc' ) . having ( 'shixun_homework_count > 0' )
@ -140,10 +139,10 @@ namespace :competition do
user_id : user . id ,
username : user . show_real_name ,
score : score ,
type : 'CompetitionCourse Shixun Record',
type : 'CompetitionCourse Course Record',
snapshot : {
course : course . as_json ( only : [ :id , :name ] ) ,
members_count : course . members_ count. to_i ,
members_count : course . students. count. to_i ,
shixun_homework_count : course [ 'shixun_homework_count' ] . to_i ,
valid_myshixun_count : course_myshixun_map . fetch ( course . id , 0 ) ,
}