From 9e788c9b6f50c09defe2465c7904c5cb1a3d44f3 Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Wed, 27 Jul 2016 10:46:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E4=BD=8D=E6=89=B9=E5=87=86=E5=8F=8A?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=A1=86=E6=9E=B6=E6=90=AD=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/admin_controller.rb | 10 ++++++--- app/models/applied_message.rb | 21 +++++++++++++++++++ app/models/apply_add_schools.rb | 11 ++++++++++ app/views/admin/applied_schools.html.erb | 8 ++++--- app/views/admin/has_applied_schools.html.erb | 6 ++++-- config/locales/zh.yml | 1 + config/routes.rb | 2 ++ .../20160727020247_create_applied_messages.rb | 13 ++++++++++++ db/schema.rb | 12 ++++++++++- spec/factories/applied_messages.rb | 10 +++++++++ spec/models/applied_message_spec.rb | 5 +++++ 11 files changed, 90 insertions(+), 9 deletions(-) create mode 100644 app/models/applied_message.rb create mode 100644 db/migrate/20160727020247_create_applied_messages.rb create mode 100644 spec/factories/applied_messages.rb create mode 100644 spec/models/applied_message_spec.rb diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index 8822ca794..9946735f7 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb @@ -630,10 +630,14 @@ class AdminController < ApplicationController end # 批准未审批的高校 + # 消息发送,发送对象为申请人 + # status: 0表示未批准; status:1表示已批准; status: 2表示已拒绝 def approve_applied_schools - @applied_schools = ApplyAddSchools.find params[:id] - unless @applied_schools_schools.nil? - @applied_schools.update_column('status', 1) + applied_school = ApplyAddSchools.find params[:id] + applied_school.update_column('status', 1) unless applied_school.nil? + applied_school.applied_messages << AppliedMessage.new(:user_id => applied_school.user_id, :viewed => false, :status => true) + respond_to do |format| + format.html{ redirect_to unapplied_schools_url } end end diff --git a/app/models/applied_message.rb b/app/models/applied_message.rb new file mode 100644 index 000000000..f851e17a1 --- /dev/null +++ b/app/models/applied_message.rb @@ -0,0 +1,21 @@ +class AppliedMessage < ActiveRecord::Base + # status: 0表示未批准; status:1表示已批准; status: 2表示已拒绝 + attr_accessible :applied_id, :applied_type, :status, :user_id, :viewed + belongs_to :applied_message ,:polymorphic => true + belongs_to :apply_add_schools + belongs_to :user + has_many :message_alls, :class_name => 'MessageAll',:as =>:message, :dependent => :destroy + + validates :user_id,presence: true + validates :applied_id,presence: true + validates :applied_type, presence: true + after_create :add_user_message + + # 因为要排序所以需要写入总表 + def add_user_message + if MessageAll.where("message_type = '#{self.class.to_s}' and message_id = '#{self.id}'").first.nil? + self.message_alls << MessageAll.new(:user_id => self.user_id, :viewed => false) + end + end + +end diff --git a/app/models/apply_add_schools.rb b/app/models/apply_add_schools.rb index 63f2f8caa..e32bee706 100644 --- a/app/models/apply_add_schools.rb +++ b/app/models/apply_add_schools.rb @@ -1,5 +1,16 @@ class ApplyAddSchools < ActiveRecord::Base # status:0 未审批 ; 1 已批阅 attr_accessible :address, :city, :name, :province, :remarks, :school_id, :status + has_many :applied_messages, :class_name =>'AppliedMessage', :as => :applied_message, :dependent => :destroy belongs_to :school + + after_create :send_massage + + #给系统所有管理发送消息 + def send_massage + users = User.where(:admin => 1) + users.each do |user| + self.applied_messages << AppliedMessage.new(:user_id => user.id, :viewed => false, :status => false) + end + end end diff --git a/app/views/admin/applied_schools.html.erb b/app/views/admin/applied_schools.html.erb index 89940ac35..f14f8100a 100644 --- a/app/views/admin/applied_schools.html.erb +++ b/app/views/admin/applied_schools.html.erb @@ -45,6 +45,7 @@ <% @apply_status.each do |apply| %> + <% if apply.status == 0 %> <%= apply.id %> @@ -65,12 +66,13 @@ <%= format_date(apply.created_at) %> - <%= link_to( "批准", { :controller => 'admin', :action => 'approve_applied_schools', :id => apply.id }, :class => 'icon-del') %> - <%= link_to( "删除", { :controller => 'admin', :action => 'delete_applied_schools', :id => apply.id }, :class => 'icon-del') %> - <%= link_to( "更改", { :controller => 'admin', :action => 'edit_applied_schools', :id => apply.id, :name => apply.name }, :class => 'icon-del') %> + <%= link_to( l(:label_approve), { :controller => 'admin', :action => 'approve_applied_schools', :id => apply.id }, :class => 'icon-del') %> + <%= link_to( l(:button_delete), { :controller => 'admin', :action => 'delete_applied_schools', :id => apply.id }, :class => 'icon-del') %> + <%= link_to( l(:button_change), { :controller => 'admin', :action => 'edit_applied_schools', :id => apply.id, :name => apply.name }, :class => 'icon-del') %> <% end %> + <% end %> \ No newline at end of file diff --git a/app/views/admin/has_applied_schools.html.erb b/app/views/admin/has_applied_schools.html.erb index 2e9e3fe96..a68deb0bc 100644 --- a/app/views/admin/has_applied_schools.html.erb +++ b/app/views/admin/has_applied_schools.html.erb @@ -45,6 +45,7 @@ <% @has_apply_status.each do |apply| %> + <% if apply.status == 1 %> <%= apply.id %> @@ -65,11 +66,12 @@ <%= format_date(apply.created_at) %> - <%= link_to( "删除", { :controller => 'admin', :action => 'delete_applied_schools', :id => apply.id }, :class => 'icon-del') %> - <%= link_to( "更改", { :controller => 'admin', :action => 'edit_applied_schools', :id => apply.id, :name => apply.name }, :class => 'icon-del') %> + <%= link_to( l(:button_delete), { :controller => 'admin', :action => 'delete_applied_schools', :id => apply.id }, :class => 'icon-del') %> + <%= link_to( l(:button_change), { :controller => 'admin', :action => 'edit_applied_schools', :id => apply.id, :name => apply.name }, :class => 'icon-del') %> <% end %> + <% end %> \ No newline at end of file diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 4b8ecee81..b6c3f8bc4 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -910,6 +910,7 @@ zh: button_test: 测试 button_edit: 编辑 button_delete: 删除 + button_approve: 批准 button_set_homepage: 设为首页 button_cancel_homepage: 取消首页 button_edit_homepage: 编辑首页 diff --git a/config/routes.rb b/config/routes.rb index e98749334..1629f6152 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1071,6 +1071,8 @@ RedmineApp::Application.routes.draw do get 'admin/schools' get 'admin/applied_schools', as: :unapplied_schools get 'admin/has_applied_schools', as: :applied_schools + get 'admin/approve_applied_schools' + get 'admin/leave_messages' match 'admin/messages_list', as: :messages_list match 'admin/project_messages', as: :project_messages diff --git a/db/migrate/20160727020247_create_applied_messages.rb b/db/migrate/20160727020247_create_applied_messages.rb new file mode 100644 index 000000000..adc4f5454 --- /dev/null +++ b/db/migrate/20160727020247_create_applied_messages.rb @@ -0,0 +1,13 @@ +class CreateAppliedMessages < ActiveRecord::Migration + def change + create_table :applied_messages do |t| + t.integer :user_id + t.integer :applied_id + t.string :applied_type + t.integer :viewed, :default => false + t.integer :status, :default => false + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 1a18dfbaa..483814585 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20160725091759) do +ActiveRecord::Schema.define(:version => 20160727020247) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -52,6 +52,16 @@ ActiveRecord::Schema.define(:version => 20160725091759) do add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token" add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id" + create_table "applied_messages", :force => true do |t| + t.integer "user_id" + t.integer "applied_id" + t.string "applied_type" + t.integer "viewed" + t.integer "status" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + create_table "applied_projects", :force => true do |t| t.integer "project_id", :null => false t.integer "user_id", :null => false diff --git a/spec/factories/applied_messages.rb b/spec/factories/applied_messages.rb new file mode 100644 index 000000000..ddc96b997 --- /dev/null +++ b/spec/factories/applied_messages.rb @@ -0,0 +1,10 @@ +FactoryGirl.define do + factory :applied_message do + user_id 1 +applied_id 1 +applied_type "MyString" +viewed 1 +status 1 + end + +end diff --git a/spec/models/applied_message_spec.rb b/spec/models/applied_message_spec.rb new file mode 100644 index 000000000..9880b6521 --- /dev/null +++ b/spec/models/applied_message_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe AppliedMessage, :type => :model do + pending "add some examples to (or delete) #{__FILE__}" +end