@ -17,7 +17,7 @@ class CompetitionTeamsController < ApplicationController
@team_user_ids = @team . team_members . pluck ( :user_id )
shixuns = Shixun . where ( user_id : @team_user_ids , status : 2 )
shixuns = Shixun . where ( user_id : @team_user_ids , status : 2 ) . where ( 'shixuns.created_at > ?' , Time . parse ( '2018-06-01' ) )
shixuns = shixuns . joins ( 'left join shixuns forked_shixuns on forked_shixuns.fork_from = shixuns.id and forked_shixuns.status = 2' )
shixuns = shixuns . joins ( 'left join myshixuns on myshixuns.shixun_id = shixuns.id and exists(select 1 from games where games.myshixun_id = myshixuns.id and games.status = 2)' )
shixuns = shixuns . select ( 'shixuns.id, shixuns.identifier, shixuns.user_id, shixuns.myshixuns_count, shixuns.name, shixuns.fork_from, sum(forked_shixuns.myshixuns_count) forked_myshixun_count' )
@ -27,12 +27,13 @@ class CompetitionTeamsController < ApplicationController
. group ( 'shixun_id' ) . count
# todo: 使用新版course_members
course_ids = Course . joins ( 'join members on members.course_id = courses.id' )
course_ids = Course . where ( 'courses.created_at > ?' , Time . parse ( '2018-06-01' ) )
. joins ( 'join members on members.course_id = courses.id' )
. joins ( 'join member_roles on member_roles.member_id = members.id and member_roles.role_id in (3,7,9)' )
. where ( members : { user_id : @team_user_ids } ) . pluck ( :id )
courses = Course . where ( id : course_ids ) . joins ( :shixun_homework_commons ) . where ( 'homework_commons.publish_time < now()' )
@courses = courses . select ( 'courses.id, courses.name, courses.members_count, count(*) shixun_homework_count' )
. group ( 'courses.id' ) . order ( 'shixun_homework_count desc' )
. group ( 'courses.id' ) . order ( 'shixun_homework_count desc' ) . having ( 'shixun_homework_count > 0' )
@course_myshixun_map = Myshixun . joins ( student_works : :homework_common )
. where ( homework_commons : { course_id : @courses . map ( & :id ) } )