dev_daiao
parent
ab02572d06
commit
bbf6c47ccf
@ -0,0 +1,3 @@
|
||||
class SubjectCourseRecord < ApplicationRecord
|
||||
belongs_to :subject
|
||||
end
|
@ -0,0 +1,3 @@
|
||||
class SubjectRecord < ApplicationRecord
|
||||
belongs_to :subject
|
||||
end
|
@ -0,0 +1,3 @@
|
||||
class SubjectShixunInfo < ApplicationRecord
|
||||
belongs_to :subject
|
||||
end
|
@ -0,0 +1,3 @@
|
||||
class SubjectUserInfo < ApplicationRecord
|
||||
belongs_to :subject
|
||||
end
|
@ -0,0 +1,14 @@
|
||||
class CreateSubjectRecords < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :subject_records do |t|
|
||||
t.references :subject, unique: true
|
||||
t.integer :study_count, default: 0
|
||||
t.integer :course_study_count, default: 0
|
||||
t.integer :initiative_study, default: 0
|
||||
t.integer :passed_count, default: 0
|
||||
t.integer :course_used_count, default: 0
|
||||
t.integer :school_used_count, default: 0
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,16 @@
|
||||
class CreateSubjectCourseRecords < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :subject_course_records do |t|
|
||||
t.references :subject
|
||||
t.references :school
|
||||
t.string :school_name
|
||||
t.integer :course_count, default: 0
|
||||
t.integer :student_count, default: 0
|
||||
t.integer :choice_shixun_num, default: 0
|
||||
t.integer :choice_shixun_frequency, default: 0
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_index :subject_course_records, [:school_id, :subject_id], unique: true, name: "couse_and_school_index"
|
||||
end
|
||||
end
|
@ -0,0 +1,21 @@
|
||||
class CreateSubjectShixunInfos < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :subject_shixun_infos do |t|
|
||||
t.references :subject
|
||||
t.references :shixun
|
||||
t.string :stage
|
||||
t.string :shixun_name
|
||||
t.integer :challenge_count, default: 0
|
||||
t.integer :course_count, default: 0
|
||||
t.integer :school_count, default: 0
|
||||
t.integer :used_count, default: 0
|
||||
t.integer :passed_count, default: 0
|
||||
t.integer :evaluate_count, default: 0
|
||||
t.integer :passed_ave_time, default: 0
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_index :subject_shixun_infos, [:shixun_id, :subject_id], unique: true
|
||||
end
|
||||
end
|
@ -0,0 +1,18 @@
|
||||
class CreateSubjectUserInfos < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :subject_user_infos do |t|
|
||||
t.references :user
|
||||
t.references :subject
|
||||
t.string :username
|
||||
t.integer :passed_myshixun_count, default: 0
|
||||
t.integer :passed_games_count, default: 0
|
||||
t.integer :code_line_count, default: 0
|
||||
t.integer :evaluate_count, default: 0
|
||||
t.integer :cost_time, default: 0
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_index :subject_user_infos, [:user_id, :subject_id], unique: true
|
||||
|
||||
end
|
||||
end
|
@ -0,0 +1,103 @@
|
||||
desc "统计实践课程的学习统计数据"
|
||||
|
||||
namespace :subjects do
|
||||
task data_statistic: :environment do
|
||||
puts("---------------------data_statistic_begin")
|
||||
Rails.logger.info("---------------------data_statistic_begin")
|
||||
subjects = Subject.where(status: 2)
|
||||
subjects.find_each do |subject|
|
||||
puts("---------------------data_statistic: #{subject.id}")
|
||||
Rails.logger.info("---------------------data_statistic: #{subject.id}")
|
||||
sr = SubjectRecord.find_or_create_by!(subject_id: subject.id)
|
||||
data = Subjects::DataStatisticService.new(subject)
|
||||
update_params = {
|
||||
study_count: data.study_count,
|
||||
course_study_count: data.course_study_count,
|
||||
initiative_study: data.initiative_study,
|
||||
passed_count: data.passed_count,
|
||||
course_used_count: data.course_used_count,
|
||||
school_used_count: data.school_used_count
|
||||
}
|
||||
sr.update_attributes!(update_params)
|
||||
end
|
||||
puts("---------------------data_statistic_end")
|
||||
Rails.logger.info("---------------------data_statistic_end")
|
||||
end
|
||||
|
||||
task course_info_statistic: :environment do
|
||||
puts("---------------------course_info_statistic_begin")
|
||||
Rails.logger.info("---------------------course_info_statistic_begin")
|
||||
subjects = Subject.where(status: 2)
|
||||
subjects.find_each do |subject|
|
||||
puts("---------------------course_info_statistic: #{subject.id}")
|
||||
Rails.logger.info("---------------------course_info_statistic: #{subject.id}")
|
||||
data = Subjects::DataStatisticService.call(subject)
|
||||
data.each do |key|
|
||||
scr = SubjectCourseRecord.find_or_create_by!(school_id: key[:school_id], subject_id: subject.id)
|
||||
update_params = {
|
||||
school_name: key[:school_name],
|
||||
course_count: key[:course_count],
|
||||
student_count: key[:student_count],
|
||||
choice_shixun_num: key[:choice_shixun_num],
|
||||
choice_shixun_frequency: key[:choice_shixun_frequency]
|
||||
}
|
||||
scr.update_attributes(update_params)
|
||||
end
|
||||
end
|
||||
puts("---------------------course_info_statistic_end")
|
||||
Rails.logger.info("---------------------course_info_statistic_end")
|
||||
end
|
||||
|
||||
task shixun_info_statistic: :environment do
|
||||
puts("---------------------shixun_info_statistic_begin")
|
||||
Rails.logger.info("---------------------shixun_info_statistic_begin")
|
||||
subjects = Subject.where(status: 2)
|
||||
subjects.find_each(batch_size: 100) do |subject|
|
||||
data = Subjects::ShixunUsedInfoService.call(subject)
|
||||
data.each do |key|
|
||||
ssi = SubjectShixunInfo.find_or_create_by!(shixun_id: key[:shixun_id], subject_id: subject.id)
|
||||
update_params = {
|
||||
stage: key[:stage],
|
||||
shixun_name: key[:name],
|
||||
challenge_count: key[:challenge_count],
|
||||
course_count: key[:course_count],
|
||||
school_count: key[:school_count],
|
||||
used_count: key[:used_count],
|
||||
passed_count: key[:passed_count],
|
||||
evaluate_count: key[:evaluate_count],
|
||||
passed_ave_time: key[:passed_ave_time]
|
||||
}
|
||||
ssi.update_attributes(update_params)
|
||||
end
|
||||
end
|
||||
puts("---------------------shixun_info_statistic_end")
|
||||
Rails.logger.info("---------------------shixun_info_statistic_end")
|
||||
end
|
||||
|
||||
task user_info_statistic: :environment do
|
||||
puts("---------------------user_info_statistic_begin")
|
||||
Rails.logger.info("---------------------user_info_statistic_begin")
|
||||
subjects = Subject.where(status: 2)
|
||||
subjects.find_each(batch_size: 100) do |subject|
|
||||
puts("---------------------user_info_statistic: #{subject.id}")
|
||||
data = Subjects::UserUsedInfoService.call(subject)
|
||||
data.each do |key|
|
||||
sui = SubjectUserInfo.find_or_create_by!(user_id: key[:user_id], subject_id: subject.id)
|
||||
update_params = {
|
||||
username: key[:name],
|
||||
passed_myshixun_count: key[:passed_myshixun_count],
|
||||
passed_games_count: key[:passed_games_count],
|
||||
code_line_count: key[:code_line_count],
|
||||
evaluate_count: key[:evaluate_count],
|
||||
cost_time: key[:cost_time]
|
||||
}
|
||||
sui.update_attributes(update_params)
|
||||
end
|
||||
end
|
||||
puts("---------------------user_info_statistic_end")
|
||||
Rails.logger.info("---------------------user_info_statistic_end")
|
||||
end
|
||||
|
||||
|
||||
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe SubjectCourseRecord, type: :model do
|
||||
pending "add some examples to (or delete) #{__FILE__}"
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe SubjectRecord, type: :model do
|
||||
pending "add some examples to (or delete) #{__FILE__}"
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe SubjectShixunInfo, type: :model do
|
||||
pending "add some examples to (or delete) #{__FILE__}"
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe SubjectUserInfo, type: :model do
|
||||
pending "add some examples to (or delete) #{__FILE__}"
|
||||
end
|
Loading…
Reference in new issue