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