diff --git a/app/models/forge_message.rb b/app/models/forge_message.rb index 0dce57598..8bf754719 100644 --- a/app/models/forge_message.rb +++ b/app/models/forge_message.rb @@ -1,14 +1,7 @@ class ForgeMessage < ActiveRecord::Base - # 公共表中活动类型,命名规则:TYPE_OF_{类名}_ACT - TYPE_OF_ISSUE_ACT = "Issue" - TYPE_OF_MESSAGE_ACT = "Message" - TYPE_OF_ATTACHMENT_ACT = "Attachment" - TYPE_OF_DOCUMENT_ACT = "Document" - TYPE_OF_JOURNAL_ACT = "Journal" - TYPE_OF_WIKI_ACT = "Wiki" - TYPE_OF_NEWS_ACT = "News" - - attr_accessible :forge_message_id, :forge_message_type, :project_id, :user_id, :viewed, :secret_key + # status在不同的类中,作用不同 + # Isseu: satus nil:发布了缺陷;:1:缺陷计划完成日志到了提醒 + attr_accessible :forge_message_id, :forge_message_type, :project_id, :user_id, :viewed, :secret_key, :status belongs_to :forge_message ,:polymorphic => true belongs_to :project diff --git a/db/migrate/20150928090128_add_status_to_forge_message.rb b/db/migrate/20150928090128_add_status_to_forge_message.rb new file mode 100644 index 000000000..e08af8802 --- /dev/null +++ b/db/migrate/20150928090128_add_status_to_forge_message.rb @@ -0,0 +1,5 @@ +class AddStatusToForgeMessage < ActiveRecord::Migration + def change + add_column :forge_messages, :status, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index 77a4d4d50..205f3140c 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 => 20150925060939) do +ActiveRecord::Schema.define(:version => 20150928090128) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -476,6 +476,13 @@ ActiveRecord::Schema.define(:version => 20150925060939) do add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority" + create_table "discuss_demos", :force => true do |t| + t.string "title" + t.text "body" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + create_table "documents", :force => true do |t| t.integer "project_id", :default => 0, :null => false t.integer "category_id", :default => 0, :null => false @@ -490,23 +497,26 @@ ActiveRecord::Schema.define(:version => 20150925060939) do add_index "documents", ["created_on"], :name => "index_documents_on_created_on" add_index "documents", ["project_id"], :name => "documents_project_id" - create_table "dts", :force => true do |t| - t.string "IPLineCode" - t.string "Description" - t.string "Num" - t.string "Variable" - t.string "TraceInfo" - t.string "Method" + create_table "dts", :primary_key => "Num", :force => true do |t| + t.string "Defect", :limit => 50 + t.string "Category", :limit => 50 t.string "File" - t.string "IPLine" - t.string "Review" - t.string "Category" - t.string "Defect" - t.string "PreConditions" - t.string "StartLine" + t.string "Method" + t.string "Module", :limit => 20 + t.string "Variable", :limit => 50 + t.integer "StartLine" + t.integer "IPLine" + t.string "IPLineCode", :limit => 200 + t.string "Judge", :limit => 15 + t.integer "Review", :limit => 1 + t.string "Description" + t.text "PreConditions", :limit => 2147483647 + t.text "TraceInfo", :limit => 2147483647 + t.text "Code", :limit => 2147483647 t.integer "project_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" + t.integer "id", :null => false end create_table "enabled_modules", :force => true do |t| @@ -566,6 +576,7 @@ ActiveRecord::Schema.define(:version => 20150925060939) do t.datetime "created_at", :null => false t.datetime "updated_at", :null => false t.string "secret_key" + t.integer "status" end create_table "forums", :force => true do |t| @@ -910,7 +921,6 @@ ActiveRecord::Schema.define(:version => 20150925060939) do t.datetime "created_on" t.integer "comments_count", :default => 0, :null => false t.integer "course_id" - t.datetime "updated_on" end add_index "news", ["author_id"], :name => "index_news_on_author_id" diff --git a/lib/tasks/issue_due_date.rake b/lib/tasks/issue_due_date.rake new file mode 100644 index 000000000..0c44b7c4d --- /dev/null +++ b/lib/tasks/issue_due_date.rake @@ -0,0 +1,21 @@ +#coding=utf-8 +namespace :issue_endtime do + desc "send a message for Issue'due_date deadline" + task :due_date => :environment do + contrast_time = Time.now - 86400 + issues = Issue.where("due_date >=? and due_date <=? and due_date !=?",contrast_time,Time.now, nil) + issues.each do |issue| + if ForgeMessage.where("forge_message_type =? and forge_message_id =? and status =?", "Issue", issue.id, 1).first.nil? + recipients = [] + assigner = User.find(issue.assigned_to_id) + recipients << issue.author + recipients << assigner + recipients.each do |r| + issue.forge_messages << ForgeMessage.new(:user_id => r.id, :project_id => issue.project_id, :viewed => false, :status => true) + # 发送邮件通知 + # Mailer.homework_endtime__added(homework_common, s.student_id).deliver + end + end + end + end +end