#coding=utf-8
# 执行示例 bundle exec rake public_course:student args=149,2903
# args 第一个参数是subject_id, 第二个参数是课程course_id
# 第一期时间: 2018-12-16 至2019-03-31
# 第二期时间: 2019-04-07 至2019-07-28
#
# 这次学习很有收获,感谢老师提供这么好的资源和细心的服务🎉🎉🎉
#
desc " 同步精品课数据 "
namespace :public_course 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 = '2018-12-16'
end_time = '2019-04-01'
elsif status . to_i == 2
start_time = '2019-04-07'
end_time = '2019-07-28'
else
# 这种情况是取所有的
start_time = '2015-01-01'
end_time = '2022-07-28'
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 ( )
end
end
end
end
#
task :message = > :environment do
discusses = Discuss . find_by_sql ( " select content, user_id, created_on, updated_on from discusses where dis_id in (select shixun_id from stage_shixuns where
stage_id in ( select id from stages where subject_id = #{subject_id})) and created_at > #{start_time} and
created_at < #{end_time}")
discusses . find_each do | discuss |
puts discuss . user_id
puts discuss . content
# 回复帖子
# 讨论区发布帖子
# Message.create!(board: @message.board, root_id: @message.root_id || @message.id,
# author: current_user, parent: @message,
# message_detail_attributes: {
# content: params[:content]
# })
end
end
# 更新某个课程的某类时间
# 执行示例 bundle exec rake public_course:student args=2903,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
# 讨论区
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 )
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
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