You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
6.2 KiB
110 lines
6.2 KiB
#coding=utf-8
|
|
|
|
namespace :homework_endtime do
|
|
desc "send a message for Job deadline"
|
|
task :message => :environment do
|
|
# 统一设置发布时间的作业
|
|
homeworks = HomeworkCommon.where("unified_setting = 1 and end_time <=? and end_time > ?", Time.now + 86400, Time.now + 82800)
|
|
homeworks.each do |homework|
|
|
if homework.tidings.where(:parent_container_type => "NearlyEnd").count == 0
|
|
course = homework.course
|
|
tid_str = ""
|
|
homework.student_works.where(:work_status => 0).find_each do |student|
|
|
tid_str += "," if tid_str != ""
|
|
tid_str += "(#{student.user_id}, #{homework.user_id}, #{homework.id}, 'HomeworkCommon', #{homework.id},
|
|
'NearlyEnd', #{course.id}, 'Course', 0, 'HomeworkCommon', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}',
|
|
'#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')"
|
|
end
|
|
if tid_str != ""
|
|
tid_sql = "insert into tidings (user_id, trigger_user_id, container_id, container_type, parent_container_id,
|
|
parent_container_type, belong_container_id, belong_container_type, viewed, tiding_type, created_at,
|
|
updated_at) values" + tid_str
|
|
ActiveRecord::Base.connection.execute tid_sql
|
|
end
|
|
end
|
|
end
|
|
|
|
# 分组设置发布时间的作业
|
|
homework_group_settings = HomeworkGroupSetting.where("end_time <=? and end_time > ?", Time.now + 86400, Time.now + 82800)
|
|
homework_group_settings.each do |homework_group|
|
|
homework = homework_group.homework_common
|
|
if homework.present?
|
|
course = homework.course
|
|
members = course.students.where(:course_group_id => homework_group.course_group_id)
|
|
if homework.tidings.where(:parent_container_type => "NearlyEnd", :user_id => members.pluck(:user_id)).count == 0
|
|
tid_str = ""
|
|
homework.student_works.where(:work_status => 0, :user_id => members.pluck(:user_id)).find_each do |member|
|
|
tid_str += "," if tid_str != ""
|
|
tid_str += "(#{member.user_id}, #{homework.user_id}, #{homework.id}, 'HomeworkCommon', #{homework.id},
|
|
'NearlyEnd', #{course.id}, 'Course', 0, 'HomeworkCommon', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}',
|
|
'#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')"
|
|
end
|
|
if tid_str != ""
|
|
tid_sql = "insert into tidings (user_id, trigger_user_id, container_id, container_type, parent_container_id,
|
|
parent_container_type, belong_container_id, belong_container_type, viewed, tiding_type, created_at,
|
|
updated_at) values" + tid_str
|
|
ActiveRecord::Base.connection.execute tid_sql
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
# 匿评截止时间快到了
|
|
task :evaluation_nearly_end => :environment do
|
|
homework_detail_manuals = HomeworkDetailManual.where("homework_detail_manuals.comment_status = 3 and evaluation_end <=?
|
|
and evaluation_end > ? ", Time.now + 86400, Time.now + 82800)
|
|
homework_detail_manuals.each do |homework_detail_manual|
|
|
homework_common = homework_detail_manual.homework_common
|
|
if homework_common.present?
|
|
# 取出分配匿评的[student_work_id,user_id]的二维数组
|
|
eva_distribution_ids = StudentWorksEvaluationDistribution.where(:student_work_id => homework_common.student_works.map(&:id)).
|
|
map{|a| [a.student_work_id, a.user_id]}
|
|
# 取出学生已评分的[student_work_id,user_id]的二维数组
|
|
work_score_ids = StudentWorksScore.where(:student_work_id => homework_common.student_works.map(&:id), :reviewer_role => 3).
|
|
map{|a| [a.student_work_id, a.user_id]}
|
|
tid_str = ""
|
|
# 已参与匿评但未完成全部匿评任务的user_id
|
|
user_ids = (eva_distribution_ids - work_score_ids).map{|a| a[1]}
|
|
user_ids.uniq.each do |user_id|
|
|
tid_str += "," if tid_str != ""
|
|
tid_str += "(#{user_id}, #{homework_common.user_id}, #{homework_common.id}, 'HomeworkCommon', #{homework_common.id},
|
|
'EvaluationNearlyEnd', #{homework_common.course_id}, 'Course', 0, 'HomeworkCommon',
|
|
'#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')"
|
|
end
|
|
if tid_str != ""
|
|
tid_sql = "insert into tidings (user_id, trigger_user_id, container_id, container_type, parent_container_id,
|
|
parent_container_type, belong_container_id, belong_container_type, viewed, tiding_type, created_at,
|
|
updated_at) values" + tid_str
|
|
ActiveRecord::Base.connection.execute tid_sql
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
# 匿评申诉截止时间快到了
|
|
task :appeal_nearly_end => :environment do
|
|
homework_detail_manuals = HomeworkDetailManual.where("homework_detail_manuals.comment_status = 4 and appeal_time <=?
|
|
and appeal_time > ?", Time.now + 86400, Time.now + 82800)
|
|
homework_detail_manuals.each do |homework_detail_manual|
|
|
homework_common = homework_detail_manual.homework_common
|
|
if homework_common.present?
|
|
eva_distribution = StudentWorksEvaluationDistribution.where(:student_work_id => homework_common.student_works.map(&:id))
|
|
tid_str = ""
|
|
eva_distribution.pluck(:user_id).uniq.each do |user_id|
|
|
tid_str += "," if tid_str != ""
|
|
tid_str += "(#{user_id}, #{homework_common.user_id}, #{homework_common.id}, 'HomeworkCommon', #{homework_common.id},
|
|
'AppealNearlyEnd', #{homework_common.course_id}, 'Course', 0, 'HomeworkCommon',
|
|
'#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')"
|
|
end
|
|
if tid_str != ""
|
|
tid_sql = "insert into tidings (user_id, trigger_user_id, container_id, container_type, parent_container_id,
|
|
parent_container_type, belong_container_id, belong_container_type, viewed, tiding_type, created_at,
|
|
updated_at) values" + tid_str
|
|
ActiveRecord::Base.connection.execute tid_sql
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|