parent
							
								
									86493d00dc
								
							
						
					
					
						commit
						c5c2dfb372
					
				| @ -0,0 +1,2 @@ | ||||
| // Place all the behaviors and hooks related to the matching controller here.
 | ||||
| // All this logic will automatically be available in application.js.
 | ||||
| @ -0,0 +1,3 @@ | ||||
| // Place all the styles related to the initialization_data controller here. | ||||
| // They will automatically be included in application.css. | ||||
| // You can use Sass (SCSS) here: http://sass-lang.com/ | ||||
| @ -0,0 +1,114 @@ | ||||
| class InitializationDataController < ApplicationController | ||||
| 
 | ||||
|   def init_subjects | ||||
|     raise("实践课程id不能为空") if params[:paths].blank? | ||||
|     paths = params[:paths].split(",") | ||||
|     origin_database = EduSetting.where(name: origin_database)&.value | ||||
|     database = EduSetting.where(name: database)&.value | ||||
|     # 获取原始数据库导入数据 | ||||
|     get_origin_data origin_database, paths | ||||
|     # 创建初始数据 | ||||
|     create_init_data database | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   end | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   private | ||||
|   def get_origin_data origin_database, paths | ||||
|     connect_to_origin_date(origin_database) | ||||
|     @subjects = get_subject_data(paths) | ||||
|     @stages = get_stages_data(@subjects) | ||||
|     @stage_shixuns = get_stage_shixuns_data(@stages) | ||||
|     @shixuns = get_shixun_data(@stage_shixuns) | ||||
|     @shixun_mirror_repositories = get_shixun_mirror_repositories_data(@shixuns) | ||||
|     @shixun_tag_repertoires = get_shixun_tag_repertoires_data(@shixuns) | ||||
|     @shixun_service_configs = get_shixun_service_configs_data(@shixuns) | ||||
|     @challenges = get_challenges_data(@shixuns) | ||||
|     @challenge_tags = get_challenge_tags_data(@challenges) | ||||
|     @test_sets = get_test_sets_data(@challenges) | ||||
|     @challenge_chooses = get_challenge_chooses_data(@challenges) | ||||
|     @challenge_questions = get_challenge_questions_data(@challenge_chooses) | ||||
|   end | ||||
| 
 | ||||
|   def create_init_data database | ||||
|     connect_to_origin_date database | ||||
|     #copy_shixuns | ||||
| 
 | ||||
|   end | ||||
| 
 | ||||
|   # 链接库 | ||||
|   def connect_to_origin_date database | ||||
|     ActiveRecord::Base.establish_connection( | ||||
|         adapter: "mysql2", | ||||
|         host: "localhost", | ||||
|         username: "root", | ||||
|         password: "123456", | ||||
|         database: "#{database}" | ||||
|     ) | ||||
|   end | ||||
| 
 | ||||
|   # 查询需要的路径 | ||||
|   def get_subject_data paths | ||||
|     Subject.where(id: paths) | ||||
|   end | ||||
| 
 | ||||
|   # 获取实践课程的章节 | ||||
|   def get_stages_data subjects | ||||
|     Stage.where(subject_id: subjects) | ||||
|   end | ||||
| 
 | ||||
|   # 获取时间课程的关联实训表 | ||||
|   def get_stage_shixuns_data stages | ||||
|     StageShixun.where(stage_id: stages) | ||||
|   end | ||||
| 
 | ||||
|   # 获取实训数据 | ||||
|   def get_shixun_data stage_shixuns | ||||
|     Shixun.where(id: stage_shixuns.map(&:shixun_id)) | ||||
|   end | ||||
| 
 | ||||
|   # 获取关卡数据 | ||||
|   def get_challenges_data shixuns | ||||
|     Challenge.where(shixun_id: shixuns) | ||||
|   end | ||||
| 
 | ||||
|   # 获取关卡标签数据 | ||||
|   def get_challenge_tags_data challenges | ||||
|     ChallengeTag.where(challenge_id: challenges) | ||||
|   end | ||||
| 
 | ||||
|   # 获取实训技能标签数据 | ||||
|   def get_shixun_mirror_repositories_data shixuns | ||||
|     ShixunMirrorRepository.where(shixun_id: shixuns) | ||||
|   end | ||||
| 
 | ||||
|   # 获取实训标签 | ||||
|   def get_shixun_tag_repertoires_data shixuns | ||||
|     ShixunTagRepertoire.where(shixun_id: shixuns) | ||||
|   end | ||||
| 
 | ||||
|   # 获取实训镜像配置 | ||||
|   def get_shixun_service_configs_data shixuns | ||||
|     ShixunServiceConfig.where(shixun_id: shixuns) | ||||
|   end | ||||
| 
 | ||||
|   # 获取测试集数据 | ||||
|   def get_test_sets_data challenges | ||||
|     TestSet.where(challenge_id: challenges) | ||||
|   end | ||||
| 
 | ||||
|   # 获取选择题题目 | ||||
|   def get_challenge_chooses_data challenges | ||||
|     ChallengeChoose.where(challenge_id: challenges) | ||||
|   end | ||||
| 
 | ||||
|   # 复制选择题选项 | ||||
|   def get_challenge_questions_data challenge_chooses | ||||
|     ChallengeQuestion.where(challenge_choose_id: challenge_chooses) | ||||
|   end | ||||
| 
 | ||||
| 
 | ||||
| end | ||||
| @ -0,0 +1,2 @@ | ||||
| module InitializationDataHelper | ||||
| end | ||||
| @ -0,0 +1,5 @@ | ||||
| require 'rails_helper' | ||||
| 
 | ||||
| RSpec.describe InitializationDataController, type: :controller do | ||||
| 
 | ||||
| end | ||||
| @ -0,0 +1,15 @@ | ||||
| require 'rails_helper' | ||||
| 
 | ||||
| # Specs in this file have access to a helper object that includes | ||||
| # the InitializationDataHelper. For example: | ||||
| # | ||||
| # describe InitializationDataHelper do | ||||
| #   describe "string concat" do | ||||
| #     it "concats two strings with spaces" do | ||||
| #       expect(helper.concat_strings("this","that")).to eq("this that") | ||||
| #     end | ||||
| #   end | ||||
| # end | ||||
| RSpec.describe InitializationDataHelper, type: :helper do | ||||
|   pending "add some examples to (or delete) #{__FILE__}" | ||||
| end | ||||
					Loading…
					
					
				
		Reference in new issue