@ -4,6 +4,7 @@ class CoursesService
include CoursesHelper
include CoursesHelper
include HomeworkAttachHelper
include HomeworkAttachHelper
include ApiHelper
include ApiHelper
include ActionView :: Helpers :: DateHelper
#参数school_id为0或不传时返回所有课程, 否则返回对应学校的课程
#参数school_id为0或不传时返回所有课程, 否则返回对应学校的课程
#参数per_page_count分页功能, 每页显示的课程数
#参数per_page_count分页功能, 每页显示的课程数
@ -657,22 +658,12 @@ class CoursesService
membership . each do | mp |
membership . each do | mp |
course = mp . course
course = mp . course
latest_course_dynamics = [ ]
latest_course_dynamics = [ ]
dynamics_count = 0
# 课程学霸 学生总分数排名靠前的5个人
homework_count = course . 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 = #{ course . id } ) GROUP BY student_works.user_id ORDER BY score limit 0,6 "
better_students = User . find_by_sql ( sql )
if homework_count != 0 && ! better_students . empty?
latest_course_dynamics << { :type = > 6 , :time = > Time . now . to_s , :count = > 6 , :better_students = > better_students }
dynamics_count += 1
end
# 课程通知
# 课程通知
latest_news = course . news . page ( 1 ) . per ( 2 ) . order ( " created_on desc " )
latest_news = course . news . page ( 1 ) . per ( 2 ) . order ( " created_on desc " )
unless latest_news . first . nil?
unless latest_news . first . nil?
latest_course_dynamics << { :type = > 1 , :time = > latest_news . first . created_on , :count = > course . news . count ,
latest_course_dynamics << { :type = > 1 , :time = > latest_news . first . created_on , :count = > course . news . count ,
:news = > latest_news . all }
:news = > latest_news . all }
dynamics_count += 1
end
end
# 课程讨论区
# 课程讨论区
@ -694,12 +685,31 @@ class CoursesService
homeworks = course . homework_commons . page ( 1 ) . per ( 2 ) . order ( 'created_at desc' )
homeworks = course . homework_commons . page ( 1 ) . per ( 2 ) . order ( 'created_at desc' )
unless homeworks . first . nil?
unless homeworks . first . nil?
latest_course_dynamics << { :type = > 4 , :time = > homeworks . first . updated_at , :count = > course . homework_commons . count , :homeworks = > homeworks }
latest_course_dynamics << { :type = > 4 , :time = > homeworks . first . updated_at , :count = > course . homework_commons . count , :homeworks = > homeworks }
dynamics_count += 1
end
end
latest_course_dynamics . sort! { | order , newer | newer [ :time ] < = > order [ :time ] }
latest_course_dynamics . sort! { | order , newer | newer [ :time ] < = > order [ :time ] }
# 课程学霸 学生总分数排名靠前的5个人
homework_count = course . 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 = #{ course . id } ) GROUP BY student_works.user_id ORDER BY score limit 0,4 "
better_students = User . find_by_sql ( sql )
# 找出在课程讨论区发帖回帖数最多的
active_students = [ ]
sql1 = " select users.*,count(author_id) 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 = #{ course . id } ) " <<
" GROUP BY messages.author_id ORDER BY count(author_id) desc " <<
" limit 0,4 "
active_students = User . find_by_sql ( sql1 )
if homework_count != 0 && ! better_students . empty?
latest_course_dynamics << { :type = > 6 , :time = > Time . now . to_s , :count = > 4 , :better_students = > better_students }
end
unless active_students . empty?
latest_course_dynamics << { :type = > 7 , :time = > Time . now . to_s , :count = > 4 , :active_students = > active_students }
end
latest_course_dynamic = latest_course_dynamics . first
latest_course_dynamic = latest_course_dynamics . first
unless latest_course_dynamic . nil?
unless latest_course_dynamic . nil?
result << { :course_name = > course . name , :current_user_is_member = > current_user . member_of_course? ( course ) , :current_user_is_teacher = > is_course_teacher ( current_user , course ) , :course_id = > course . id , :course_img_url = > url_to_avatar ( course ) , :course_time = > course . time , :course_term = > course . term , :message = > dynamics_count , :dynamics = > latest_course_dynamics , :count = > dynamics_count }
result << { :course_name = > course . name , :current_user_is_member = > current_user . member_of_course? ( course ) , :current_user_is_teacher = > is_course_teacher ( current_user , course ) , :course_id = > course . id , :course_img_url = > url_to_avatar ( course ) , :course_time = > course . time , :course_term = > course . term , :message = > " " , :dynamics = > latest_course_dynamics ,
:course_student_num = > course ? course . members . count : 0 , :time_from_now = > distance_of_time_in_words ( Time . now , latest_course_dynamic [ :time ] . to_time ) << " 前 " }
end
end
end
end
#返回数组集合
#返回数组集合