diff --git a/Gemfile b/Gemfile index b4a30658d..70838ca40 100644 --- a/Gemfile +++ b/Gemfile @@ -39,7 +39,7 @@ gem 'oauth2' #导出为pdf gem 'pdfkit' gem 'wkhtmltopdf-binary' - +gem 'request_store' #gem 'iconv' # markdown 转html gem 'redcarpet', '~> 3.4' diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index a8b3b4e1c..d3ce1e97a 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -327,7 +327,8 @@ class ApplicationController < ActionController::Base end def current_user - User.find_by_id 36401 + # User.current + User.find_by_id 1 end ## 默认输出json diff --git a/app/controllers/composes_controller.rb b/app/controllers/composes_controller.rb index 6d03a1444..6e4f02320 100644 --- a/app/controllers/composes_controller.rb +++ b/app/controllers/composes_controller.rb @@ -1,8 +1,19 @@ 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 @@ -12,20 +23,19 @@ class ComposesController < ApplicationController 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,"组织创建失败") + 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 @@ -33,14 +43,42 @@ class ComposesController < ApplicationController 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 \ No newline at end of file diff --git a/app/models/compose.rb b/app/models/compose.rb index 9bcfb5449..30e1aaec0 100644 --- a/app/models/compose.rb +++ b/app/models/compose.rb @@ -3,4 +3,8 @@ class Compose < ApplicationRecord has_many :compose_projects has_many :compose_users + validates :title, presence: {message: "组织名称不能为空"}, uniqueness: {message: "组织名称已存在"} + + scope :compose_includes, ->{includes(:compose_projects, :compose_users, :user)} + end diff --git a/app/views/composes/edit.json.jbuilder b/app/views/composes/edit.json.jbuilder new file mode 100644 index 000000000..a68396037 --- /dev/null +++ b/app/views/composes/edit.json.jbuilder @@ -0,0 +1 @@ +json.extract! @compose, :id, :title,:description,:show_mode,:compose_mode, :compose_users_count, :compose_projects_count diff --git a/app/views/composes/index.json.jbuilder b/app/views/composes/index.json.jbuilder new file mode 100644 index 000000000..3f8b626bd --- /dev/null +++ b/app/views/composes/index.json.jbuilder @@ -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 \ No newline at end of file diff --git a/app/views/composes/show.json.jbuilder b/app/views/composes/show.json.jbuilder new file mode 100644 index 000000000..e69de29bb