班级统计中“活跃度”未完全统计
This commit is contained in:
parent
18ea262f34
commit
6ccc53b089
|
@ -1380,7 +1380,7 @@ class CoursesController < ApplicationController
|
||||||
sql = "SELECT (message_num*2 + message_reply_num*1 + news_reply_num*1 + news_num*1 + resource_num*5 + journal_num*1 + homework_journal_num*1) AS act_score,
|
sql = "SELECT (message_num*2 + message_reply_num*1 + news_reply_num*1 + news_num*1 + resource_num*5 + journal_num*1 + homework_journal_num*1) AS act_score,
|
||||||
message_num, message_reply_num, news_reply_num, news_num, resource_num, journal_num, homework_journal_num, ccs.user_id FROM course_contributor_scores ccs
|
message_num, message_reply_num, news_reply_num, news_num, resource_num, journal_num, homework_journal_num, ccs.user_id FROM course_contributor_scores ccs
|
||||||
JOIN students_for_courses ON students_for_courses.course_id = ccs.course_id AND students_for_courses.student_id = ccs.user_id
|
JOIN students_for_courses ON students_for_courses.course_id = ccs.course_id AND students_for_courses.student_id = ccs.user_id
|
||||||
WHERE ccs.course_id = #{@course.id} HAVING act_score != 0 ORDER BY #{@type} #{@order}, act_score #{@order}"
|
WHERE ccs.course_id = #{@course.id} ORDER BY #{@type} #{@order}, act_score #{@order}"
|
||||||
@members = CourseContributorScore.find_by_sql(sql)
|
@members = CourseContributorScore.find_by_sql(sql)
|
||||||
|
|
||||||
elsif params[:tab] == "2"
|
elsif params[:tab] == "2"
|
||||||
|
|
|
@ -10,7 +10,7 @@ class StudentsForCourse < ActiveRecord::Base
|
||||||
validates_uniqueness_of :student_id, :scope => :course_id
|
validates_uniqueness_of :student_id, :scope => :course_id
|
||||||
|
|
||||||
after_destroy :delete_student_works, :delete_course_homework_statistic
|
after_destroy :delete_student_works, :delete_course_homework_statistic
|
||||||
after_create :recovery_student_works, :create_student_works, :create_course_homework_statistic
|
after_create :recovery_student_works, :create_student_works, :create_course_homework_statistic, :create_course_contribute_score
|
||||||
|
|
||||||
#退出班级或删除学生时隐藏学生的作品
|
#退出班级或删除学生时隐藏学生的作品
|
||||||
def delete_student_works
|
def delete_student_works
|
||||||
|
@ -72,4 +72,25 @@ class StudentsForCourse < ActiveRecord::Base
|
||||||
def delete_course_homework_statistic
|
def delete_course_homework_statistic
|
||||||
CourseHomeworkStatistics.where(:user_id => self.student_id, :course_id => self.course_id).destroy_all
|
CourseHomeworkStatistics.where(:user_id => self.student_id, :course_id => self.course_id).destroy_all
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def create_course_contribute_score
|
||||||
|
ccs = CourseContributorScore.where("course_id =? and user_id =?", self.course_id, self.student_id).first
|
||||||
|
unless ccs
|
||||||
|
course = self.course
|
||||||
|
user_id = self.student_id
|
||||||
|
message_num = Message.find_by_sql("select DISTINCT me.* from messages me, boards b where b.id = me.board_id and b.course_id = #{course.id} and b.project_id = '-1' and me.author_id = #{user_id} and me.parent_id is null;").count
|
||||||
|
message_reply_num = Message.find_by_sql("select DISTINCT me.* from messages me, boards b where b.id = me.board_id and b.course_id = #{course.id} and b.project_id = '-1' and me.author_id = #{user_id} and me.parent_id is not null").count
|
||||||
|
news_reply_num = Comment.find_by_sql("select cm.* from comments cm, news n where cm.author_id = #{user_id} and n.course_id = #{course.id} and cm.commented_id = n.id and cm.commented_type ='News'").count
|
||||||
|
|
||||||
|
resource_num = Attachment.find_by_sql("SELECT * FROM `attachments` where container_id = #{course.id} and author_id = #{user_id} and container_type ='Course'").count
|
||||||
|
journal_num = JournalsForMessage.where("user_id =? and jour_id =? and jour_type =?", user_id, course.id, "Course").count
|
||||||
|
journal_reply_num = JournalsForMessage.where("user_id =? and jour_id =? and jour_type =? and m_parent_id is not null", user_id, course.id, "Course").count
|
||||||
|
homework_ids = course.homework_commons.empty? ? "(-1)" : "(" + course.homework_commons.map(&:id).join(',') + ")"
|
||||||
|
homework_journal_num = JournalsForMessage.where("user_id =? and jour_id in #{homework_ids} and jour_type =?", user_id, "HomeworkCommon").count
|
||||||
|
news_num = News.where("author_id = #{user_id} and course_id =#{course.id}").count
|
||||||
|
total = message_num*2 + message_reply_num*1 + news_reply_num*1 + news_num*1 + resource_num*5 + journal_num*1 + homework_journal_num*1
|
||||||
|
CourseContributorScore.create(:course_id => self.course_id, :user_id => self.student_id, :message_num => message_num, :message_reply_num => message_reply_num, :news_reply_num => news_reply_num,
|
||||||
|
:resource_num => resource_num, :journal_num => journal_num, :journal_reply_num => journal_reply_num, :total_score => total, :homework_journal_num => homework_journal_num, :news_num => news_num)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
class UpdateCourseContributeScore < ActiveRecord::Migration
|
||||||
|
def up
|
||||||
|
count =Course.all.count / 30 + 2
|
||||||
|
transaction do
|
||||||
|
for i in 1 ... count do i
|
||||||
|
Course.page(i).per(30).each do |course|
|
||||||
|
course.student.each do |student|
|
||||||
|
user = student.student
|
||||||
|
ccs = CourseContributorScore.where("course_id =? and user_id =?", course.id, user.id).first if user
|
||||||
|
if user && ccs.nil?
|
||||||
|
CourseContributorScore.create(:course_id => course.id, :user_id => user.id, :message_num => 0, :message_reply_num => 0, :news_reply_num => 0,
|
||||||
|
:resource_num => 0, :journal_num => 0, :journal_reply_num => 0, :total_score => 0, :homework_journal_num => 0, :news_num => 0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue