From e174b8edac50155b29ca90908e20089711081b60 Mon Sep 17 00:00:00 2001 From: SylorHuang Date: Fri, 20 Dec 2019 17:34:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E7=BB=84=E7=BB=87=E7=9A=84?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/composes_controller.rb | 46 +++++++++++++++++++ app/models/compose.rb | 6 +++ app/models/compose_project.rb | 3 ++ app/models/compose_user.rb | 4 ++ app/models/user.rb | 3 ++ app/views/composes/create.json.jbuilder | 1 + config/routes.rb | 3 +- db/migrate/20191220085002_create_composes.rb | 15 ++++++ .../20191220085133_create_compose_users.rb | 12 +++++ .../20191220085352_create_compose_projects.rb | 14 ++++++ spec/models/compose_project_spec.rb | 5 ++ spec/models/compose_spec.rb | 5 ++ spec/models/compose_user_spec.rb | 5 ++ 13 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 app/controllers/composes_controller.rb create mode 100644 app/models/compose.rb create mode 100644 app/models/compose_project.rb create mode 100644 app/models/compose_user.rb create mode 100644 app/views/composes/create.json.jbuilder create mode 100644 db/migrate/20191220085002_create_composes.rb create mode 100644 db/migrate/20191220085133_create_compose_users.rb create mode 100644 db/migrate/20191220085352_create_compose_projects.rb create mode 100644 spec/models/compose_project_spec.rb create mode 100644 spec/models/compose_spec.rb create mode 100644 spec/models/compose_user_spec.rb diff --git a/app/controllers/composes_controller.rb b/app/controllers/composes_controller.rb new file mode 100644 index 000000000..6d03a1444 --- /dev/null +++ b/app/controllers/composes_controller.rb @@ -0,0 +1,46 @@ +class ComposesController < ApplicationController + before_action :require_login, except: [:index] + + def index + + end + + def new + + end + + def create + ActiveRecord::Base.transaction do + begin + compose_params = params[:compose] + @compose = Compose.new(compose_params.merge(user_id: current_user.id)) + if @compose.save + ComposeUser.create!(user_id: current_user.id, compose_id: @compose.id, is_manager: 1) + normal_status(0,"组织创建成功") + else + normal_status(-1,"组织创建失败") + end + rescue Exception => e + tip_exception("#{e}") + raise ActiveRecord::Rollback + end + end + + end + + def edit + + end + + def update + + end + + def destroy + + end + + def show + + end +end \ No newline at end of file diff --git a/app/models/compose.rb b/app/models/compose.rb new file mode 100644 index 000000000..9bcfb5449 --- /dev/null +++ b/app/models/compose.rb @@ -0,0 +1,6 @@ +class Compose < ApplicationRecord + belongs_to :user + has_many :compose_projects + has_many :compose_users + +end diff --git a/app/models/compose_project.rb b/app/models/compose_project.rb new file mode 100644 index 000000000..617204eff --- /dev/null +++ b/app/models/compose_project.rb @@ -0,0 +1,3 @@ +class ComposeProject < ApplicationRecord + belongs_to :compose +end diff --git a/app/models/compose_user.rb b/app/models/compose_user.rb new file mode 100644 index 000000000..e3b514b3e --- /dev/null +++ b/app/models/compose_user.rb @@ -0,0 +1,4 @@ +class ComposeUser < ApplicationRecord + belongs_to :compose + belongs_to :user +end diff --git a/app/models/user.rb b/app/models/user.rb index f25ecc4b8..5596d8639 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -158,6 +158,9 @@ class User < ApplicationRecord has_many :hacks, dependent: :destroy has_many :hack_user_lastest_codes, dependent: :destroy + has_many :composes, dependent: :destroy + has_many :compose_users, dependent: :destroy + # Groups and active users scope :active, lambda { where(status: STATUS_ACTIVE) } diff --git a/app/views/composes/create.json.jbuilder b/app/views/composes/create.json.jbuilder new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/app/views/composes/create.json.jbuilder @@ -0,0 +1 @@ + diff --git a/config/routes.rb b/config/routes.rb index 34412ccae..b306ebfad 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,4 +1,4 @@ -Rails.application.routes.draw do +Rails.application.routes.draw do require 'sidekiq/web' require 'admin_constraint' mount Sidekiq::Web => '/sidekiq', :constraints => AdminConstraint.new @@ -12,6 +12,7 @@ Rails.application.routes.draw do resources :edu_settings scope '/api' do + resources :composes get 'home/index' get 'home/search' diff --git a/db/migrate/20191220085002_create_composes.rb b/db/migrate/20191220085002_create_composes.rb new file mode 100644 index 000000000..8b301d946 --- /dev/null +++ b/db/migrate/20191220085002_create_composes.rb @@ -0,0 +1,15 @@ +class CreateComposes < ActiveRecord::Migration[5.2] + def change + create_table :composes do |t| + t.integer :user_id + t.string :title + t.text :description + t.integer :show_mode, default: 0 + t.boolean :compose_mode, default: false + t.integer :compose_users_count, default: 0 + t.integer :compose_projects_count , default: 0 + t.timestamps + end + add_index :composes, [:user_id,:show_mode,:compose_mode] + end +end diff --git a/db/migrate/20191220085133_create_compose_users.rb b/db/migrate/20191220085133_create_compose_users.rb new file mode 100644 index 000000000..2df62cb08 --- /dev/null +++ b/db/migrate/20191220085133_create_compose_users.rb @@ -0,0 +1,12 @@ +class CreateComposeUsers < ActiveRecord::Migration[5.2] + def change + create_table :compose_users do |t| + t.integer :user_id + t.integer :compose_id + t.integer :is_manager, default: 0 + + t.timestamps + end + add_index :compose_users, [:user_id, :compose_id] + end +end diff --git a/db/migrate/20191220085352_create_compose_projects.rb b/db/migrate/20191220085352_create_compose_projects.rb new file mode 100644 index 000000000..308b4fa2d --- /dev/null +++ b/db/migrate/20191220085352_create_compose_projects.rb @@ -0,0 +1,14 @@ +class CreateComposeProjects < ActiveRecord::Migration[5.2] + def change + create_table :compose_projects do |t| + t.integer :user_id + t.integer :project_id + t.integer :compose_id + t.integer :position , default: 0 + + t.timestamps + end + add_index :compose_projects, [:user_id, :project_id, :compose_id] + add_column :composes, :compose_projects_count, :integer, :default => 0 + end +end diff --git a/spec/models/compose_project_spec.rb b/spec/models/compose_project_spec.rb new file mode 100644 index 000000000..53a5c80aa --- /dev/null +++ b/spec/models/compose_project_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe ComposeProject, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/compose_spec.rb b/spec/models/compose_spec.rb new file mode 100644 index 000000000..cfdbaa51b --- /dev/null +++ b/spec/models/compose_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Compose, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/compose_user_spec.rb b/spec/models/compose_user_spec.rb new file mode 100644 index 000000000..ce4d2e00b --- /dev/null +++ b/spec/models/compose_user_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe ComposeUser, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end