|
|
#coding=utf-8
|
|
|
# 执行示例 bundle exec rake public_course:student args=3,3097
|
|
|
# args 第一个参数是subject_id,第二个参数是课程course_id
|
|
|
# 第一期时间:2017-07-23 至2017-10-24
|
|
|
# 第二期时间:2017-10-27 至2018-01-28
|
|
|
# 第三期时间:2018-03-07 至2018-06-08
|
|
|
# 第四期时间:2018-09-08 至2018-12-08
|
|
|
# 第五期时间:2019-03-02 至2019-06-02
|
|
|
# 第六期时间:2019-06-25 至2019-09-25#
|
|
|
# 这次学习很有收获,感谢老师提供这么好的资源和细心的服务🎉🎉🎉
|
|
|
#
|
|
|
|
|
|
desc "同步精品课数据"
|
|
|
namespace :public_course_zhp do
|
|
|
if ENV['args']
|
|
|
subject_id = ENV['args'].split(",")[0] # 对应课程的id
|
|
|
course_id = ENV['args'].split(",")[1] # 对应课堂的id
|
|
|
status = ENV['args'].split(",")[2] # 表示相应的期数
|
|
|
type = ENV['args'].split(",")[3] # 表示课程模块
|
|
|
end
|
|
|
|
|
|
|
|
|
if status.to_i == 1
|
|
|
start_time = '2017-07-23'
|
|
|
end_time = '2017-10-24'
|
|
|
elsif status.to_i == 2
|
|
|
start_time = '2017-10-27'
|
|
|
end_time = '2018-01-28'
|
|
|
elsif status.to_i == 3
|
|
|
start_time = '2018-03-07'
|
|
|
end_time = '2018-06-08'
|
|
|
elsif status.to_i == 4
|
|
|
start_time = '2018-09-08'
|
|
|
end_time = '2018-12-08'
|
|
|
elsif status.to_i == 5
|
|
|
start_time = '2019-03-02'
|
|
|
end_time = '2019-06-02'
|
|
|
else
|
|
|
# 这种情况是取所有的
|
|
|
start_time = '2019-06-25'
|
|
|
end_time = '2019-09-25'
|
|
|
end
|
|
|
|
|
|
task :student => :environment do
|
|
|
puts "subject_id is #{subject_id}"
|
|
|
puts "course_id is #{course_id}"
|
|
|
|
|
|
user_ids = Myshixun.find_by_sql("select distinct(user_id) from myshixuns where shixun_id in (select shixun_id from stage_shixuns
|
|
|
where stage_id in (select id from stages where subject_id=#{subject_id}))").map(&:user_id)
|
|
|
puts user_ids
|
|
|
if user_ids.present?
|
|
|
user_ids.each do |user_id|
|
|
|
puts user_id
|
|
|
begin
|
|
|
CourseMember.create!(course_id: course_id, user_id: user_id, role: 4)
|
|
|
rescue Exception => e
|
|
|
Rails.logger(e.message)
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
|
|
|
task :test_user => :environment do
|
|
|
users = User.where(is_test: true)
|
|
|
users.find_each do |user|
|
|
|
puts user.id
|
|
|
CourseMember.create!(course_id: course_id, user_id: user.id, role: 4)
|
|
|
end
|
|
|
end
|
|
|
|
|
|
|
|
|
# 更新某个课程的某类时间
|
|
|
# 执行示例 RAILS_ENV=production bundle exec rake public_course:time args=-1,2932,1,1
|
|
|
task :time => :environment do
|
|
|
# course_id = ENV['args'].split(",")[0] # 对应课堂的id
|
|
|
# type = ENV['args'].split(",")[1]
|
|
|
|
|
|
course = Course.find(course_id)
|
|
|
|
|
|
case type.to_i
|
|
|
when 1
|
|
|
# 讨论区
|
|
|
messages = Message.where(board_id: course.boards)
|
|
|
messages.each do |message|
|
|
|
created_on = random_time start_time, end_time
|
|
|
puts created_on
|
|
|
message.update_columns(created_on: created_on, updated_on: created_on)
|
|
|
MessageDetail.where(message_id: message.id).each do |detail|
|
|
|
rand_created_on = random_time start_time, end_time
|
|
|
detail.update_columns(created_at: rand_created_on, updated_at: rand_created_on)
|
|
|
end
|
|
|
end
|
|
|
when 2
|
|
|
# 作业
|
|
|
course.homework_commons.each do |homework|
|
|
|
created_at = random_time(start_time, end_time)
|
|
|
publish_time = random_larger_time created_at, start_time, end_time
|
|
|
end_time = random_larger_time publish_time, start_time, end_time
|
|
|
updated_at = end_time
|
|
|
|
|
|
homework.update_columns(publish_time: publish_time, end_time: end_time, created_at: created_at, updated_at: updated_at)
|
|
|
homework.homework_detail_manual.update_columns(comment_status: 6, created_at: created_at, updated_at: updated_at)
|
|
|
|
|
|
homework.student_works.where("work_status !=0 and update_time > '#{end_time}'").update_all(update_time: end_time)
|
|
|
end
|
|
|
when 3
|
|
|
# 试卷
|
|
|
course.exercises.each do |exercise|
|
|
|
created_at = random_time start_time, end_time
|
|
|
publish_time = random_larger_time created_at, start_time, end_time
|
|
|
end_time = random_larger_time publish_time, start_time, end_time
|
|
|
updated_at = end_time
|
|
|
|
|
|
exercise.update_columns(publish_time: publish_time, end_time: end_time, created_at: created_at, updated_at: updated_at, exercise_status: 3)
|
|
|
end
|
|
|
when 4
|
|
|
# 资源
|
|
|
course.attachments.each do |atta|
|
|
|
created_on = random_time start_time, end_time
|
|
|
|
|
|
atta.update_columns(is_publish: 1, created_on: created_on, publish_time: created_on)
|
|
|
end
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
task :create_homework_work => :environment do
|
|
|
course = Course.find(course_id)
|
|
|
course.practice_homeworks.each do |homework|
|
|
|
if homework.student_works.count == 0
|
|
|
str = ""
|
|
|
CourseMember.students(course).each do |student|
|
|
|
str += "," if str != ""
|
|
|
str += "(#{homework.id},#{student.user_id}, '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')"
|
|
|
end
|
|
|
if str != ""
|
|
|
sql = "insert into student_works (homework_common_id, user_id, created_at, updated_at) values" + str
|
|
|
ActiveRecord::Base.connection.execute sql
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
|
|
|
def min_swith(time)
|
|
|
puts time
|
|
|
return time < 9 ? "0#{time}" : time
|
|
|
end
|
|
|
|
|
|
def random_time(start_time, end_time)
|
|
|
hour = (6..23).to_a.sample(1).first
|
|
|
min = rand(60)
|
|
|
sec = rand(60)
|
|
|
|
|
|
start_time = Date.parse(start_time)
|
|
|
end_time = Date.parse(end_time)
|
|
|
date = (start_time..end_time).to_a.sample(1).first
|
|
|
|
|
|
time = "#{date} #{min_swith(hour)}:#{min_swith(min)}:#{min_swith(sec)}"
|
|
|
|
|
|
puts time
|
|
|
time
|
|
|
end
|
|
|
|
|
|
def random_larger_time(time, start_time, end_time)
|
|
|
large_time = random_time(start_time, end_time)
|
|
|
while large_time <= time
|
|
|
large_time = random_time(start_time, end_time)
|
|
|
end
|
|
|
large_time
|
|
|
end
|
|
|
end |