fix 统计学校信息排序问题

dev_aliyun2
anke1460 5 years ago
parent 8c83c0a620
commit a2cafe7bda

@ -5,7 +5,7 @@ class Admins::SchoolBaseStatisticService < ApplicationService
sort_columns :student_count, :teacher_count, :course_count, :course_group_count,
:attachment_count, :video_count, :normal_work_count, :shixun_work_count, :shixun_evaluate_count,
:student_works_num, :exercise_count, default_direction: :desc
:student_work_count, :exercise_count, default_direction: :desc
def initialize(params)
@params = params
@ -77,17 +77,17 @@ class Admins::SchoolBaseStatisticService < ApplicationService
case sort_by_column.to_s
when 'teacher_count' then
schools.joins('LEFT JOIN user_extensions ue ON ue.school_id = schools.id AND ue.identity = 0')
.select("#{base_query_column}, COUNT(*) teacher_count")
.select("#{base_query_column}, COUNT(ue.id) teacher_count")
when 'student_count' then
schools.joins('LEFT JOIN user_extensions ue ON ue.school_id = schools.id AND ue.identity = 1')
.select("#{base_query_column}, COUNT(*) student_count")
when 'course_count' then
schools.joins('LEFT JOIN courses ON courses.school_id = schools.id AND courses.is_delete = false')
.select("#{base_query_column}, COUNT(*) course_count")
schools.joins('LEFT JOIN courses ON courses.school_id = schools.id AND courses.is_delete = 0')
.select("#{base_query_column}, COUNT(courses.id) course_count")
when 'course_group_count' then
schools.joins("LEFT JOIN courses ON courses.school_id = schools.id AND courses.is_delete = false
schools.joins("LEFT JOIN courses ON courses.school_id = schools.id AND courses.is_delete = 0
LEFT JOIN course_groups ON course_groups.course_id = courses.id")
.select("#{base_query_column}, COUNT(*) course_group_count")
.select("#{base_query_column}, COUNT(course_groups.id) course_group_count")
when 'attachment_count' then
schools.joins("LEFT JOIN courses cs ON cs.school_id = schools.id AND cs.is_delete = 0
LEFT JOIN attachments ON attachments.container_type ='Course' AND attachments.container_id = cs.id")
@ -106,14 +106,14 @@ class Admins::SchoolBaseStatisticService < ApplicationService
.select("#{base_query_column}, COUNT(*) shixun_work_count")
when 'student_work_count' then
schools.joins("LEFT JOIN school_reports ON school_reports.school_id = schools.id")
.select("#{base_query_column}, COUNT(*) student_work_count")
.select("#{base_query_column}, SUM(student_work_count) AS student_work_count")
when 'shixun_evaluate_count' then
schools.joins('LEFT JOIN school_reports ON school_reports.school_id = schools.id')
.select("#{base_query_column}, COUNT(*) shixun_evaluate_count")
.select("#{base_query_column}, SUM(shixun_evaluate_count) AS shixun_evaluate_count")
when 'exercise_count' then
schools.joins('LEFT JOIN courses cs ON cs.school_id = schools.id AND cs.is_delete = 0
LEFT JOIN exercises ON exercises.course_id = cs.id')
.select("#{base_query_column}, COUNT(*) exercise_count")
.select("#{base_query_column}, COUNT(exercises.id) exercise_count")
end
end

Loading…
Cancel
Save