From 6779b75d7b1ef2e266f43d30388850d71a889e6d Mon Sep 17 00:00:00 2001
From: cxt <853663049@qq.com>
Date: Fri, 20 Sep 2019 15:41:17 +0800
Subject: [PATCH] =?UTF-8?q?sql=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/controllers/colleges_controller.rb                    | 4 ++--
 app/tasks/statistic_school_daily_report_task.rb           | 4 ++--
 app/tasks/statistic_school_report_task.rb                 | 4 ++--
 db/migrate/20190920073337_migrate_user_extension_index.rb | 6 ++++++
 4 files changed, 12 insertions(+), 6 deletions(-)
 create mode 100644 db/migrate/20190920073337_migrate_user_extension_index.rb

diff --git a/app/controllers/colleges_controller.rb b/app/controllers/colleges_controller.rb
index 66d327649..f869e9ec6 100644
--- a/app/controllers/colleges_controller.rb
+++ b/app/controllers/colleges_controller.rb
@@ -40,8 +40,8 @@ class CollegesController < ApplicationController
 
   def teachers
     @teachers = User.find_by_sql("SELECT users.id, users.login, users.lastname, users.firstname, users.nickname, IFNULL((SELECT count(shixuns.id) FROM shixuns where shixuns.user_id =users.id group by shixuns.user_id), 0) AS publish_shixun_count,
-                                (SELECT count(c.id) FROM courses c, course_members m WHERE c.id != 1309 and m.course_id = c.id AND m.role in (1,2,3) and c.school_id = #{current_school.id} AND m.user_id=users.id AND c.is_delete = 0) as course_count
-                                FROM `users`, user_extensions ue where users.id=ue.user_id and ue.identity=0 and ue.school_id=#{current_school.id} ORDER BY publish_shixun_count desc, course_count desc, id desc LIMIT 10")
+                                (SELECT count(c.id) FROM courses c, course_members m WHERE c.id != 1309 and m.course_id = c.id AND m.user_id=users.id AND m.role in (1,2,3) and c.school_id = #{current_school.id} AND c.is_delete = 0) as course_count
+                                FROM `users`, user_extensions ue where ue.school_id=#{current_school.id} and users.id=ue.user_id and ue.identity=0 ORDER BY publish_shixun_count desc, course_count desc, id desc LIMIT 10")
     # ).order("publish_shixun_count desc, experience desc").limit(10)
     @teachers =
       @teachers.map do |teacher|
diff --git a/app/tasks/statistic_school_daily_report_task.rb b/app/tasks/statistic_school_daily_report_task.rb
index 5cd3fda7c..794a4b573 100644
--- a/app/tasks/statistic_school_daily_report_task.rb
+++ b/app/tasks/statistic_school_daily_report_task.rb
@@ -27,8 +27,8 @@ class StatisticSchoolDailyReportTask
       # 新增实训评测数量
       shixun_evaluate_count = EvaluateRecord.joins('LEFT JOIN homework_commons_shixuns hcs ON hcs.shixun_id = evaluate_records.shixun_id')
                                 .joins('LEFT JOIN homework_commons hc ON hcs.homework_common_id = hc.id AND hc.homework_type = 4')
-                                .joins('LEFT JOIN members ON members.user_id = evaluate_records.user_id')
-                                .joins('LEFT JOIN courses ON members.course_id = courses.id AND hc.course_id = courses.id')
+                                .joins('LEFT JOIN course_members ON course_members.user_id = evaluate_records.user_id')
+                                .joins('LEFT JOIN courses ON course_members.course_id = courses.id AND hc.course_id = courses.id')
                                 .where(courses: { school_id: school.id })
                                 .where(created_at: yesterday).reorder(nil).count
 
diff --git a/app/tasks/statistic_school_report_task.rb b/app/tasks/statistic_school_report_task.rb
index a55eb7a42..a72c57830 100644
--- a/app/tasks/statistic_school_report_task.rb
+++ b/app/tasks/statistic_school_report_task.rb
@@ -2,10 +2,10 @@ class StatisticSchoolReportTask
   def call
     School.find_each do |school|
       evaluate_count = Game.joins(:challenge)
-                           .joins('LEFT JOIN members ON members.user_id = games.user_id')
+                           .joins('LEFT JOIN course_members ON course_members.user_id = games.user_id')
                            .joins('LEFT JOIN homework_commons_shixuns hcs ON hcs.shixun_id = challenges.shixun_id')
                            .joins('LEFT JOIN homework_commons hc ON hcs.homework_common_id = hc.id AND hc.homework_type = 4')
-                           .joins('LEFT JOIN courses ON hc.course_id = courses.id AND members.course_id = courses.id')
+                           .joins('LEFT JOIN courses ON hc.course_id = courses.id AND course_members.course_id = courses.id')
                            .where(courses: { school_id: school.id })
                            .sum(:evaluate_count)
 
diff --git a/db/migrate/20190920073337_migrate_user_extension_index.rb b/db/migrate/20190920073337_migrate_user_extension_index.rb
new file mode 100644
index 000000000..1d333bd99
--- /dev/null
+++ b/db/migrate/20190920073337_migrate_user_extension_index.rb
@@ -0,0 +1,6 @@
+class MigrateUserExtensionIndex < ActiveRecord::Migration[5.2]
+  def change
+    remove_index :user_extensions, :school_id
+    add_index :user_extensions, [:school_id, :user_id]
+  end
+end