Merge branch 'forge' of http://bdgit.educoder.net/Hjqreturn/educoder into forge
commit
7d38b75c25
@ -0,0 +1,84 @@
|
||||
class ComposesController < ApplicationController
|
||||
before_action :require_login, except: [:index]
|
||||
before_action :find_compose, except: [:index, :new,:create]
|
||||
|
||||
def index
|
||||
@order_type = params[:order] || "created_at"
|
||||
@search_name = params[:search]
|
||||
composes = Compose.compose_includes
|
||||
if @search_name.present?
|
||||
composes = composes.where("title like ?", "%#{@search_name}%")
|
||||
end
|
||||
composes = composes.order("#{@order_type} desc")
|
||||
@page = params[:page] || 1
|
||||
@limit = params[:limit] || 15
|
||||
@composes_size = composes.size
|
||||
@composes = composes.page(@page).per(@limit)
|
||||
end
|
||||
|
||||
def new
|
||||
|
||||
end
|
||||
|
||||
def create
|
||||
ActiveRecord::Base.transaction do
|
||||
begin
|
||||
@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
|
||||
error_messages = @compose.errors.messages[:title][0]
|
||||
normal_status(-1,"组织创建失败:#{error_messages}")
|
||||
end
|
||||
rescue Exception => e
|
||||
tip_exception("#{e}")
|
||||
raise ActiveRecord::Rollback
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
|
||||
end
|
||||
|
||||
def update
|
||||
if @compose.update_attributes(compose_params)
|
||||
normal_status(0,"组织更新成功")
|
||||
else
|
||||
error_messages = @compose.errors.messages[:title][0]
|
||||
normal_status(-1,"组织更新失败:#{error_messages}")
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
if @compose.destroy
|
||||
normal_status(0,"组织删除成功")
|
||||
else
|
||||
normal_status(-1,"组织删除失败,请稍后重试")
|
||||
end
|
||||
end
|
||||
|
||||
def show
|
||||
compose_projects = @compose&.compose_projects&.pluck(:project_id)
|
||||
if compose_projects.size > 0
|
||||
@compose_projects = Project.where(id: compose_projects)
|
||||
else
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def compose_params
|
||||
params.require(:compose).permit(:user_id, :title, :description, :show_mode, :compose_mode, :compose_users_count, :compose_projects_count)
|
||||
end
|
||||
|
||||
def find_compose
|
||||
@compose = Compose.find(params[:id])
|
||||
unless @compose.present?
|
||||
normal_status(-1, "组织不存在")
|
||||
end
|
||||
end
|
||||
|
||||
end
|
@ -0,0 +1,10 @@
|
||||
class Compose < ApplicationRecord
|
||||
belongs_to :user
|
||||
has_many :compose_projects
|
||||
has_many :compose_users
|
||||
|
||||
validates :title, presence: {message: "组织名称不能为空"}, uniqueness: {message: "组织名称已存在"}
|
||||
|
||||
scope :compose_includes, ->{includes(:compose_projects, :compose_users, :user)}
|
||||
|
||||
end
|
@ -0,0 +1,3 @@
|
||||
class ComposeProject < ApplicationRecord
|
||||
belongs_to :compose
|
||||
end
|
@ -0,0 +1,4 @@
|
||||
class ComposeUser < ApplicationRecord
|
||||
belongs_to :compose
|
||||
belongs_to :user
|
||||
end
|
@ -0,0 +1 @@
|
||||
|
@ -0,0 +1 @@
|
||||
json.extract! @compose, :id, :title,:description,:show_mode,:compose_mode, :compose_users_count, :compose_projects_count
|
@ -0,0 +1,13 @@
|
||||
json.composes_count @composes_size
|
||||
json.per_page @limit
|
||||
|
||||
if @composes_size > 0
|
||||
json.composes do
|
||||
json.array! @composes do |compose|
|
||||
json.extract! compose, :id, :title,:description,:show_mode,:compose_mode, :compose_users_count, :compose_projects_count
|
||||
json.created_at format_time(compose.created_at)
|
||||
end
|
||||
end
|
||||
else
|
||||
json.composes []
|
||||
end
|
@ -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
|
@ -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
|
@ -0,0 +1,13 @@
|
||||
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]
|
||||
end
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe ComposeProject, type: :model do
|
||||
pending "add some examples to (or delete) #{__FILE__}"
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Compose, type: :model do
|
||||
pending "add some examples to (or delete) #{__FILE__}"
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe ComposeUser, type: :model do
|
||||
pending "add some examples to (or delete) #{__FILE__}"
|
||||
end
|
Loading…
Reference in new issue