|
|
|
# bundle exec rake sync:public_message args=149,2903
|
|
|
|
namespace :sync do
|
|
|
|
task :public_message => :environment do
|
|
|
|
subject_id = ENV['args'].split(",")[0] # 对应课程的id
|
|
|
|
board_id = ENV['args'].split(",")[1]
|
|
|
|
message_id = ENV['args'].split(",")[2]
|
|
|
|
status = ENV['args'].split(",")[3] # 表示相应的期数
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
shixun_ids = Shixun.find_by_sql("select shixun_id from stage_shixuns where stage_id in (select id from stages where
|
|
|
|
subject_id=#{subject_id}) ").map(&:shixun_id)
|
|
|
|
|
|
|
|
|
|
|
|
discusses = Discuss.where(dis_id: shixun_ids).where("created_at >? and created_at <?", start_time, end_time)
|
|
|
|
if discusses.present?
|
|
|
|
discusses.find_each do |discuss|
|
|
|
|
puts discuss.user_id
|
|
|
|
puts board_id
|
|
|
|
puts message_id
|
|
|
|
new_message = Message.create!(board_id: board_id.to_i, author_id: discuss.user_id, parent_id: message_id, root_id: message_id)
|
|
|
|
MessageDetail.create!(message_id: new_message.id, content: discuss.try(:content))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
task :sigle_message => :environment do
|
|
|
|
shixun_id = ENV['args'].split(",")[0] # 对应课程的id
|
|
|
|
board_id = ENV['args'].split(",")[1]
|
|
|
|
message_id = ENV['args'].split(",")[2]
|
|
|
|
status = ENV['args'].split(",")[3] # 表示相应的期数
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
discusses = Discuss.where(dis_id: shixun_id).where("parent_id is null and created_at >? and created_at <?", start_time, end_time)
|
|
|
|
discusses.each do |discuss|
|
|
|
|
rand_created_on = random_time start_time, end_time
|
|
|
|
puts discuss.id
|
|
|
|
# 找到所有的子回复
|
|
|
|
replies = Discuss.where(parent_id: discuss.id)
|
|
|
|
|
|
|
|
# 如果有子回复,除了创建父回复外,还需要同步子回复
|
|
|
|
new_message = Message.create!(board_id: board_id.to_i, author_id: discuss.user_id, parent_id: message_id, root_id: message_id)
|
|
|
|
new_message.update_columns(created_on: rand_created_on, updated_on: rand_created_on)
|
|
|
|
message_detail = MessageDetail.create!(message_id: new_message.id, content: discuss.try(:content))
|
|
|
|
message_detail.update_columns(created_at: rand_created_on, updated_at: rand_created_on)
|
|
|
|
if replies.present?
|
|
|
|
replies.each do |reply|
|
|
|
|
reply_time = random_smaller_time(rand_created_on, start_time, end_time)
|
|
|
|
puts("666")
|
|
|
|
reply_message = Message.create!(board_id: board_id.to_i, author_id: reply.user_id, parent_id: new_message.id, root_id: message_id)
|
|
|
|
reply_message.update_columns(created_on: reply_time, updated_on: reply_time)
|
|
|
|
reply_message_detail = MessageDetail.create!(message_id: reply_message.id, content: reply.try(:content))
|
|
|
|
reply_message_detail.update_columns(created_at: rand_created_on, updated_at: rand_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_smaller_time(parent_time, start_time, end_time)
|
|
|
|
large_time = random_time(start_time, end_time)
|
|
|
|
while large_time > parent_time
|
|
|
|
large_time = random_time(start_time, end_time)
|
|
|
|
end
|
|
|
|
large_time
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|