diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index f37d06f..2546700 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -1,7 +1,14 @@ class ProjectsController < ApplicationController before_action :authenticate - skip_before_action :verify_authenticity_token, :only => [:index,:create,:addUsers,:detail] + skip_before_action :verify_authenticity_token, :only => [ + :index, + :create, + :addUsers, + :detail, + :update, + :deleteUsers + ] #=============================================>获取我的项目列表,user_id保存在session中. def index @@ -32,80 +39,112 @@ class ProjectsController < ApplicationController #=============================================>创建项目 def create - - user_id = session[:user_id] - params_project = {content: params[:content],name: params[:name]} - project = Project.new(params_project) - if project.save - Projects_user.create(project_id:project.id,user_id:user_id) - render status: :created, nothing: true - else - render json: project.errors, status: :unprocessable_entity - end - #render :json => {:code => 0} - end + uid = session[:user_id] + project = Project.new(project_params) + if project.save + Projects_user.create(project_id:project.id,user_id:uid) + render status: :created, nothing: true + else + render json: project.errors, status: :unprocessable_entity + end + end #=============================================>项目添加用户 def addUsers - - uid = params[:user_id] - register = session[:user_id] - #username = params[:username] - pid = params[:project_id] - params_pu = {project_id: pid,user_id: uid} - pu = Projects_user.new(params_pu) - pu.save - content = User.find_by(id: register).name + "邀请您进入项目" + Project.find_by(id: pid).name - puts content - params_note = {user_id: uid,content: content,category: 2,project_id: pid} - note = Note.new(params_note) - note.save! - #puts Note.find_by(id: note.id).inspect - # now = Datetime.now - # note.created_at = now - # note.updated_at = now - note.save! - render :json => {:code => 0} + uid = User.find_by(email:params[:email]).id# 需要添加的用户 + register = session[:user_id]# 当前用户 + pid = params[:project_id] + # 检查该项目中是否已经有要添加的用户 + pu_exist=Projects_user.find_by(project_id:pid,user_id:uid) + if pu_exist.nil?# 不存在 + params_pu = {project_id: pid,user_id: uid} + pu = Projects_user.new(params_pu) + pu.save + + content = User.find_by(id: register).name + "邀请您进入项目" + Project.find_by(id: pid).name + puts content + params_note = {user_id: uid,content: content,category: 2,project_id: pid} + note = Note.new(params_note) + note.save! + render :json => {:code => 0} + else# 存在 + render json:current_user.errors, status: :unprocessable_entity + end + end + + #=============================================>项目删除用户 + def deleteUsers + uid = params[:user_id]# 需要添加的用户 + register = session[:user_id]# 当前用户 + pid = params[:project_id] + # 检查该项目中是否已经有要添加的用户 + projects_user=Projects_user.find_by(project_id:pid,user_id:uid) + if projects_user.nil?# 不存在 + render json:current_user.errors, status: :unprocessable_entity + end + # 存在 + puts projects_user.user_id + puts projects_user.project_id + Projects_user.where(project_id:pid,user_id:uid).delete_all + + content = User.find_by(id: register).name + "把您从项目" + Project.find_by(id: pid).name+"中删除" + puts content + params_note = {user_id: uid,content: content,category: 2,project_id: pid} + note = Note.new(params_note) + note.save! + + render :json => {:code => 0} end #=============================================>项目详情 def detail - #Todo - pid = params[:id] - project = Project.find_by(id: pid) - #uid = Projects_user.where(:project_id => pid) - users = [] - projects_users = Projects_user.where("project_id = ?",pid).all - - projects_users.each do |projects_user| - uid = projects_user.user_id - i = User.find_by(id: uid) - users += [{ - :nickname => i.name, - :id => i.id - }] - end - #puts users.inspect - # Users.find(uid).each do |i| - # users += [{ - # :nickname => i.name, - # :id => i.id - # }] - # end - render :json => { - :code => 0, - :data => { - :name => project.name, - :content => project.content, - :users => users + #Todo + pid = params[:id] + project = Project.find_by(id: pid) + #uid = Projects_user.where(:project_id => pid) + users = [] + projects_users = Projects_user.where("project_id = ?",pid).all + + projects_users.each do |projects_user| + uid = projects_user.user_id + i = User.find_by(id: uid) + users += [{ + :nickname => i.name, + :id => i.id + }] + end + #puts users.inspect + # Users.find(uid).each do |i| + # users += [{ + # :nickname => i.name, + # :id => i.id + # }] + # end + render :json => { + :code => 0, + :data => { + :name => project.name, + :content => project.content, + :users => users + } } - } end + + #=============================================>项目修改 + def update + project = Project.find_by(:id => params[:project][:id]) + if project.update(project_params) + render :json => {:code => 0} + else + render json:current_user.errors, status: :unprocessable_entity + end + end + private def project_params - params.require(:project).permit(:name,:content) + params.require(:project).permit(:name,:content,:id) end end \ No newline at end of file diff --git a/app/models/project.rb b/app/models/project.rb index 7adf60b..8ef1b5c 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1,7 +1,7 @@ class Project < ActiveRecord::Base has_and_belongs_to_many :users - validate :require_at_least_on_user,on: :update # 项目中最少要有一个用户 + validate :require_at_least_on_user,on: :update # 项目中最少要有一个用户 validates :name, presence: true, length: { minimum: 1, maximum: 50 }, uniqueness: true diff --git a/config/routes.rb b/config/routes.rb index 466397d..39c3e46 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -68,7 +68,9 @@ Rails.application.routes.draw do get 'projects' => 'projects#index' post 'projects' => 'projects#create' + patch 'projects' => 'projects#update' post 'projects/users' => 'projects#addUsers' + delete 'projects/users' => 'projects#deleteUsers' get 'projects/detail' => 'projects#detail' get 'notes/list' => 'notes#getNotesList' diff --git a/public/index.html b/public/index.html index 070f9bd..a1e7f1a 100644 --- a/public/index.html +++ b/public/index.html @@ -37,7 +37,7 @@ //3:通知 //4:修改个人信息 //5:项目详情 edited by cy - var src_array=["project_select","task","share","inform","alter_info","project_detail"]; + var src_array=["project_select","task","share","inform","user_detail","project_detail"]; var src="pages/"+src_array[seq]+".html"; if(seq == 5){ $("#cy_close").click(); diff --git a/public/pages/project_detail.html b/public/pages/project_detail.html index 09d598b..e90c312 100644 --- a/public/pages/project_detail.html +++ b/public/pages/project_detail.html @@ -62,14 +62,14 @@