@ -333,13 +333,13 @@ class CoursesService
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  def  homework_list  params , current_user 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    course  =  Course . find ( params [ :id ] ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  course . is_public  !=  0  ||  current_user . member_of_course? ( course ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      bids  =  course . homework_commons . page ( 1 ) . per ( 20 ) . order ( 'created_at DESC' ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      bids  =  course . homework_commons . page ( params [ :page ]  ||  1 ) . per ( 20 ) . order ( 'created_at DESC' ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      bids  =  bids . like ( params [ :name ] )  if  params [ :name ] . present? 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      homeworks  =  [ ] 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      bids . each  do  | bid | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        homeworks  <<  show_homework_info ( course , bid , current_user , is_course_teacher ( current_user , course ) ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      end 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      homeworks 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        homeworks  =  [ ] 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        bids . each  do  | bid | 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          homeworks  <<    show_homework_info ( course , bid , current_user , is_course_teacher ( current_user , course ) ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        end 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        homeworks 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    else 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      raise  '403' 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    end 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -552,17 +552,28 @@ class CoursesService
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      else 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      end 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    end 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    studentlist  =  [  ]
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bid . student_works . order ( " created_at desc " ) . page ( 1 ) . per ( 6 ) . each  do  | work  |
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      studentlist  <<  work .  user
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     end
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    unless   is_course_teacher
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      homework_for_anonymous_comments  =  get_student_batch_homework_list  bid ,  current_user
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     end
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    # studentlist = [  ]
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    # bid.student_works.order("created_at desc").page(1).per(6).each do |work  |
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    #   studentlist << work.  user
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    #   end
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    # unless   is_course_teacher
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    #   homework_for_anonymous_comments = get_student_batch_homework_list bid,  current_user
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    #   end
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    #end 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    open_anonymous_evaluation  =  bid . homework_detail_manual . comment_status 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    { :course_name  = >  course . name , :course_id  = >  course . id , :id  = >  bid . id ,  :author  = >  bid . user , :author_real_name  = >  author_real_name ,  :homework_times  = >  many_times ,  :homework_name  = >  name ,  :homework_count  = >  homework_count , :student_questions_count  = >  0 , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     :description  = >  description ,  :homework_state  = >  state , :open_anonymous_evaluation  = >  open_anonymous_evaluation , :homework_for_anonymous_comments  = >  homework_for_anonymous_comments , :created_on  = >  bid . created_at , :deadline  = >  bid . end_time , :studentlist  = >  studentlist } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    { :course_name  = >  course . name , :course_id  = >  course . id , :id  = >  bid . id , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     :author  = >  bid . user , :author_real_name  = >  author_real_name , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     :homework_times  = >  many_times ,  :homework_name  = >  name , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     :homework_count  = >  homework_count , :student_questions_count  = >  0 , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     :description  = >  description ,  :homework_state  = >  state , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     :open_anonymous_evaluation  = >  open_anonymous_evaluation , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     #:homework_for_anonymous_comments => homework_for_anonymous_comments, 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     :created_on  = >  bid . created_at , :deadline  = >  bid . end_time , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      :homework_notsubmit_num  = >  bid . course . members . count  -  bid . student_works . count , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      :homework_submit_num  = >  bid . student_works . count , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      :homework_status_student  = >  get_homework_status (  bid ) , :homework_status_teacher  = >   homework_status_desc (  bid ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					       :student_evaluation_part  = >  get_evaluation_part (  bid  , 3 ) , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      :ta_evaluation_part  = >  get_evaluation_part (  bid  , 2 ) , :homework_anony_type  = >  bid . homework_type  ==  1  &&  ! bid . homework_detail_manual . nil? } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  end 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -720,20 +731,32 @@ class CoursesService
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # 获取课程历次作业的学生总成绩 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  def  students_score_list  params , current_user 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    page  =  ( params [ :page ]  ||  1 )   -  1 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    user_list  =  [ ] 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    max_size  =  0 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  params [ :type ]  ==  1 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      homework_count  =  Course . find ( params [ :course_id ] ) . homework_commons . count 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      sql  =  " select users.*,sum(IFNULL(0,student_works.final_score))/ #{ homework_count }  score from student_works left outer join users on student_works.user_id = users.id "  << 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          "  where  homework_common_id in ( select id from homework_commons where homework_commons.course_id =  #{ params [ :course_id ] } ) GROUP BY student_works.user_id ORDER BY score limit  #{ page * 10 } ,10 " 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      User . find_by_sql ( sql ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      sql_count  =  "  select count(distinct(student_works.user_id) )  "  << 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                 "  from student_works left outer join users on student_works.user_id = users.id  "  << 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                 "  where homework_common_id in  "  << 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                 "  ( select id from homework_commons where homework_commons.course_id =  #{ params [ :course_id ] } )  " 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      max_size   =   ActiveRecord :: Base . connection ( ) . select_value ( sql_count ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      user_list  =  User . find_by_sql ( sql ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    else 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      sql1  =  "  select users.*,count(author_id)*2 active_count from messages  "  << 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          "  LEFT JOIN users on messages.author_id = users.id  "  << 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          "  where messages.board_id in (select id from boards where boards.course_id =  #{ params [ :course_id ] }  )  "  << 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          "  GROUP BY messages.author_id ORDER BY count(author_id) desc  "  << 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          "  limit  #{ page * 10 } ,10 " 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      User . find_by_sql ( sql1 ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      sql1_count  =  "  select count(DISTINCT(messages.author_id)) "  << 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          "  from messages LEFT JOIN users on messages.author_id = users.id  "  << 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          "  where messages.board_id in (select id from boards where boards.course_id =  #{ params [ :course_id ] }  ) " 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      max_size   =   ActiveRecord :: Base . connection ( ) . select_value ( sql1_count ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      user_list  =  User . find_by_sql ( sql1 ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    end 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    { :user_list = > user_list , :max_size = > max_size } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  end 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  # 获取某次作业的所有作业列表