From f82ad97a68d4ad9a31ec4ba794c588fa8b87b44f Mon Sep 17 00:00:00 2001 From: txz Date: Mon, 11 Apr 2016 15:11:01 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=9B=9E=E5=A4=8D=E6=A1=86=E5=AE=BD=E5=BA=A6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/blog_detail.html | 4 +++- public/assets/wechat/course_discussion.html | 4 +++- public/assets/wechat/course_notice.html | 4 +++- public/assets/wechat/homework_detail.html | 4 +++- public/assets/wechat/issue_detail.html | 4 +++- public/assets/wechat/jour_message_detail.html | 4 +++- public/assets/wechat/project_discussion.html | 4 +++- public/stylesheets/weui/weixin.css | 3 ++- 8 files changed, 23 insertions(+), 8 deletions(-) diff --git a/public/assets/wechat/blog_detail.html b/public/assets/wechat/blog_detail.html index 92e03ef0c..6af2f3c3e 100644 --- a/public/assets/wechat/blog_detail.html +++ b/public/assets/wechat/blog_detail.html @@ -36,7 +36,9 @@
- +
+ +
diff --git a/public/assets/wechat/course_discussion.html b/public/assets/wechat/course_discussion.html index 680e92f5d..d1b708718 100644 --- a/public/assets/wechat/course_discussion.html +++ b/public/assets/wechat/course_discussion.html @@ -36,7 +36,9 @@
- +
+ +
diff --git a/public/assets/wechat/course_notice.html b/public/assets/wechat/course_notice.html index 6bc5a790c..3048d219c 100644 --- a/public/assets/wechat/course_notice.html +++ b/public/assets/wechat/course_notice.html @@ -36,7 +36,9 @@
- +
+ +
diff --git a/public/assets/wechat/homework_detail.html b/public/assets/wechat/homework_detail.html index abc92f133..f61b963a9 100644 --- a/public/assets/wechat/homework_detail.html +++ b/public/assets/wechat/homework_detail.html @@ -38,7 +38,9 @@
- +
+ +
diff --git a/public/assets/wechat/issue_detail.html b/public/assets/wechat/issue_detail.html index fc9591692..9391539f1 100644 --- a/public/assets/wechat/issue_detail.html +++ b/public/assets/wechat/issue_detail.html @@ -38,7 +38,9 @@
- +
+ +
diff --git a/public/assets/wechat/jour_message_detail.html b/public/assets/wechat/jour_message_detail.html index ac0705ac3..515e2216f 100644 --- a/public/assets/wechat/jour_message_detail.html +++ b/public/assets/wechat/jour_message_detail.html @@ -34,7 +34,9 @@
- +
+ +
diff --git a/public/assets/wechat/project_discussion.html b/public/assets/wechat/project_discussion.html index 3fa7b0949..0619ad5bf 100644 --- a/public/assets/wechat/project_discussion.html +++ b/public/assets/wechat/project_discussion.html @@ -36,7 +36,9 @@
- +
+ +
diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index 33e4e51ae..f587a3e50 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -59,5 +59,6 @@ a.underline {text-decoration:underline;} .post-reply-content {font-size:13px; text-align:left; word-break:break-all; word-wrap:break-word; overflow:hidden;} .post-reply-date {font-size:13px;} .post-reply-trigger {font-size:13px;} -.post-reply-input {width:100%; height:28px; line-height:28px; border:1px solid #e6e6e6; outline:none; border-radius:3px;} +.post-input-container {padding-right:2px;} +.post-reply-input {width:100%; height:28px; line-height:28px; border:1px solid #e6e6e6; outline:none; padding:0; margin:0; border-radius:3px;} .post-reply-submit {font-size:13px; padding:3px 8px; color:#fff; background-color:#269ac9; outline:none; border:none; display:inline-block;} \ No newline at end of file From 275895f80530d9be6b8f2adc92dec521111e036a Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 12 Apr 2016 11:00:47 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E7=9A=84=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/comment.rb | 4 +++ app/models/homework_common.rb | 40 ++--------------------- app/models/journal.rb | 40 +---------------------- app/models/journals_for_message.rb | 51 ++---------------------------- app/models/message.rb | 7 ++++ config/locales/zh.yml | 27 +++++++++++++++- config/menu.yml | 2 +- 7 files changed, 44 insertions(+), 127 deletions(-) diff --git a/app/models/comment.rb b/app/models/comment.rb index b87203a50..59835cfc9 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -16,6 +16,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Comment < ActiveRecord::Base + require 'net/http' + require 'json' include Redmine::SafeAttributes include ApplicationHelper has_many_kindeditor_assets :assets, :dependent => :destroy @@ -42,10 +44,12 @@ class Comment < ActiveRecord::Base if self.commented.course if self.author_id != self.commented.author_id self.course_messages << CourseMessage.new(:user_id => self.commented.author_id, :course_id => self.commented.course.id, :viewed => false) + Wechat.api.comment_template self.commented.author_id, "#{l(:label_notice_comment_template)}", self.author.try(:realname), format_time(self.created_on), self.comments.html_safe end else # 项目相关 if self.author_id != self.commented.author_id self.forge_messages << ForgeMessage.new(:user_id => self.commented.author_id, :project_id => self.commented.project.id, :viewed => false) + Wechat.api.comment_template self.commented.author_id, "#{l(:label_news_comment_template)}", self.author.try(:realname), format_time(self.created_on), self.comments.html_safe end end end diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb index ab687c869..c34c63f2d 100644 --- a/app/models/homework_common.rb +++ b/app/models/homework_common.rb @@ -59,6 +59,7 @@ class HomeworkCommon < ActiveRecord::Base self.course.members.each do |m| # if m.user_id != self.user_id self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.course_id, :viewed => false) + Wechat.api.homework_template(m.user_id, "#{l(:label_new_homework_template)}", self.course.name, self.name, self.end_time.to_s + " 23:59:59") # end end end @@ -104,44 +105,7 @@ class HomeworkCommon < ActiveRecord::Base #修改作业后发送微信模板消息 def wechat_message self.course.members.each do |member| - uw = UserWechat.where("user_id=?", member.user_id).first - unless uw.nil? - data = { - touser:uw.openid, - template_id:"3e5Dj2GIx8MOcMyRKpTUEQnM7Tg0ASSCNc01NS9HCGI", - url:"http://www.trustie.net/", - topcolor:"#FF0000", - data:{ - first: { - value:"您的作业已被修改", - color:"#173177" - }, - keyword1:{ - value:self.course.name, - color:"#173177" - }, - keyword2:{ - value:self.name, - color:"#173177" - }, - keyword3:{ - value:self.end_time.to_s + "23:59:59", - color:"#173177" - }, - remark:{ - value:"具体内容请点击详情查看网站", - color:"#173177" - } - } - } - logger.info "start send template message: #{data}" - begin - req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) - rescue Exception => e - logger.error "[homework_common] ===> #{e}" - end - logger.info "send over. #{req}" - end + Wechat.api.homework_template(member.user_id, "#{l(:label_update_homework_template)}", self.course.name, self.name, self.end_time.to_s + " 23:59:59") end end diff --git a/app/models/journal.rb b/app/models/journal.rb index e56c8b043..95aab7f96 100644 --- a/app/models/journal.rb +++ b/app/models/journal.rb @@ -239,44 +239,6 @@ class Journal < ActiveRecord::Base #缺陷回复微信模板消息 def issue_wechat_message - uw = UserWechat.where(user_id: self.issue.author_id).first - #unless uw.nil? && self.issue.author_id != User.current.id - unless uw.nil? - data = { - touser:uw.openid, - template_id:"A_3f5v90-zK73V9Kijm-paDkl9S-NuM8Cf-1UJi92_c", - url:"http://www.trustie.net/", - topcolor:"#FF0000", - data:{ - first: { - value:"您的缺陷有新回复了", - color:"#173177" - }, - keyword1:{ - value:self.user.try(:realname), - color:"#173177" - }, - keyword2:{ - value:format_time(self.created_on), - color:"#173177" - }, - keyword3:{ - value:self.notes.html_safe, - color:"#173177" - }, - remark:{ - value:"具体内容请点击详情查看网站", - color:"#173177" - } - } - } - logger.info "start send template message: #{data}" - begin - req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) - rescue Exception => e - logger.error "[journal] ===> #{e}" - end - logger.info "send over. #{req}" - end + Wechat.api.comment_template self.issue.author_id, "#{l(:label_issue_comment_template)}", self.user.try(:realname), format_time(self.created_on), self.notes.html_safe end end diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb index f207db8a8..c975bcaa6 100644 --- a/app/models/journals_for_message.rb +++ b/app/models/journals_for_message.rb @@ -256,7 +256,7 @@ class JournalsForMessage < ActiveRecord::Base end end if self.jour_type == 'HomeworkCommon' - journal_wechat_message '您的作业有新回复了',self.jour.user_id + Wechat.api.comment_template self.jour.user_id, "#{l(:label_homework_comment_template)}", self.user.try(:realname), format_time(self.created_on), self.notes.html_safe end end @@ -269,7 +269,7 @@ class JournalsForMessage < ActiveRecord::Base if self.reply_id == 0 if self.user_id != self.jour_id # 过滤自己给自己的留言消息 receivers << self.jour - journal_wechat_message "您有新留言了",self.jour_id + Wechat.api.comment_template self.jour_id, "#{l(:label_new_journals_template)}", self.user.try(:realname), format_time(self.created_on), self.notes.html_safe end else # 留言回复 reply_to = User.find(self.reply_id) @@ -279,12 +279,11 @@ class JournalsForMessage < ActiveRecord::Base if self.user_id != self.parent.jour_id && self.reply_id != self.parent.jour_id # 给东家发信息,如果回复的对象是东家则不发 receivers << self.parent.jour end - journal_wechat_message "您的留言有新回复了",self.reply_id + Wechat.api.comment_template self.reply_id, "#{l(:label_journals_comment_template)}", self.user.try(:realname), format_time(self.created_on), self.notes.html_safe end receivers.each do |r| self.user_feedback_messages << UserFeedbackMessage.new(:user_id => r.id, :journals_for_message_id => self.id, :journals_for_message_type => "Principal", :viewed => false) end - end end @@ -305,48 +304,4 @@ class JournalsForMessage < ActiveRecord::Base down_course_score_num(self.jour.course_id, self.user_id, "HomeworkCommon") end end - - #微信模板消息 - def journal_wechat_message type, user_id - uw = UserWechat.where(user_id: user_id).first - #unless uw.nil? && self.reply_id != User.current.id - unless uw.nil? - data = { - touser:uw.openid, - template_id:"A_3f5v90-zK73V9Kijm-paDkl9S-NuM8Cf-1UJi92_c", - url:"http://www.trustie.net/", - topcolor:"#FF0000", - data:{ - first: { - value:type, - color:"#173177" - }, - keyword1:{ - value:self.user.try(:realname), - color:"#173177" - }, - keyword2:{ - value:format_time(self.created_on), - color:"#173177" - }, - keyword3:{ - value:self.notes.html_safe, - color:"#173177" - }, - remark:{ - value:"具体内容请点击详情查看网站", - color:"#173177" - } - } - } - logger.info "start send template message: #{data}" - begin - req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) - rescue Exception => e - logger.error "[journal_for_message] ===> #{e}" - end - logger.info "send over. #{req}" - end - end - end diff --git a/app/models/message.rb b/app/models/message.rb index d697db236..2ff900858 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -1,3 +1,4 @@ +#encoding: utf-8 # Redmine - project management software # Copyright (C) 2006-2013 Jean-Philippe Lang # @@ -16,6 +17,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Message < ActiveRecord::Base + require 'net/http' + require 'json' include Redmine::SafeAttributes include UserScoreHelper include ApplicationHelper @@ -262,12 +265,14 @@ class Message < ActiveRecord::Base self.course.members.each do |m| if self.author.allowed_to?(:as_teacher, self.course) && m.user_id != self.author_id # 老师 自己的帖子不给自己发送消息 self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.board.course_id, :viewed => false) + Wechat.api.topic_publish_template m.user_id, "#{l(:label_course_topic_template)}", self.subject, self.author.try(:realname), format_time(self.created_on) end end else # 回帖 self.course.members.each do |m| if m.user_id == Message.find(self.parent_id).author_id && m.user_id != self.author_id # 只针对主贴回复,回复自己的帖子不发消息 self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.board.course_id, :viewed => false) + Wechat.api.comment_template m.user_id, "#{l(:label_topic_comment_template)}", self.author.try(:realname), format_time(self.created_on), self.content.html_safe end end end @@ -276,12 +281,14 @@ class Message < ActiveRecord::Base self.project.members.each do |m| if m.user_id != self.author_id self.forge_messages << ForgeMessage.new(:user_id => m.user_id, :project_id => self.board.project_id, :viewed => false) + Wechat.api.topic_publish_template m.user_id, "#{l(:label_project_topic_template)}", self.subject, self.author.try(:realname), format_time(self.created_on) end end else # 回帖 self.project.members.each do |m| if m.user_id == Message.find(self.parent_id).author_id && m.user_id != self.author_id # 只针对主贴回复,回复自己的帖子不发消息 self.forge_messages << ForgeMessage.new(:user_id => m.user_id, :project_id => self.board.project_id, :viewed => false) + Wechat.api.comment_template m.user_id, "#{l(:label_topic_comment_template)}", self.author.try(:realname), format_time(self.created_on), self.content.html_safe end end end diff --git a/config/locales/zh.yml b/config/locales/zh.yml index e67ca806d..8990f2490 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -2123,4 +2123,29 @@ zh: label_resource_download_times: 下载次数 label_resource_upload_author: 上传者 label_resource_belongs_course: 所属课程 - label_resource_belongs_project: 所属项目 \ No newline at end of file + label_resource_belongs_project: 所属项目 + + #微信模板消息 + label_new_homework_template: 您的课程有新作业了 + label_update_homework_template: 您的作业已被修改 + label_course_topic_template: 课程问答区有新帖子发布了 + label_topic_comment_template: 您的帖子有新回复了 + label_project_topic_template: 项目讨论区有新帖子发布了 + label_issue_comment_template: 您的缺陷有新回复了 + label_notice_comment_template: 您的课程通知有新回复了 + label_news_comment_template: 您的项目新闻有新回复了 + label_homework_comment_template: 您的作业有新回复了 + label_new_journals_template: 您有新留言了 + label_journals_comment_template: 您的留言有新回复了 + label_resource_name: 您的课程有新作业了 + label_resource_name: 您的课程有新作业了 + label_resource_name: 您的课程有新作业了 + label_resource_name: 您的课程有新作业了 + label_resource_name: 您的课程有新作业了 + label_resource_name: 您的课程有新作业了 + label_resource_name: 您的课程有新作业了 + label_resource_name: 您的课程有新作业了 + label_resource_name: 您的课程有新作业了 + label_resource_name: 您的课程有新作业了 + + diff --git a/config/menu.yml b/config/menu.yml index 34e124845..e289a8cac 100644 --- a/config/menu.yml +++ b/config/menu.yml @@ -13,7 +13,7 @@ button: - type: "view" name: "进入网站" - url: "http://www.trustie.net/" + url: "https://www.trustie.net/" - type: "view" name: "使用手册" From 3665597153895b73373e6cbd8c998c8b9015397c Mon Sep 17 00:00:00 2001 From: txz Date: Tue, 12 Apr 2016 14:56:17 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=8E=92=E7=89=88=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1234567 | 1 + public/assets/wechat/activities.html | 6 ++++- public/assets/wechat/blog_detail.html | 7 +++--- public/assets/wechat/course_discussion.html | 15 ++++++++---- public/assets/wechat/course_notice.html | 15 ++++++++---- public/assets/wechat/homework_detail.html | 23 ++++++++++++------- public/assets/wechat/issue_detail.html | 21 +++++++++++------ public/assets/wechat/jour_message_detail.html | 5 ++-- public/assets/wechat/project_discussion.html | 15 ++++++++---- public/javascripts/wechat/app.js | 4 ++-- public/stylesheets/weui/weixin.css | 3 +++ 11 files changed, 75 insertions(+), 40 deletions(-) create mode 100644 1234567 diff --git a/1234567 b/1234567 new file mode 100644 index 000000000..f492d2490 --- /dev/null +++ b/1234567 @@ -0,0 +1 @@ +{"access_token":"ONE7uqb5MhyuYiOtMkzUMPJs8krCiQeBjWek_Q9glYtfCH-kkQKzv84dgxUv5VLBnb5zdKajWDyHqocvu71UwlVuVFhsXs9MwbVdCu1i4l2L5vKCkhNE5GuyO6WisXfvKOUfAEAYCI","expires_in":7200,"got_token_at":1460441290} \ No newline at end of file diff --git a/public/assets/wechat/activities.html b/public/assets/wechat/activities.html index 376fdcf6a..f5eded3ee 100644 --- a/public/assets/wechat/activities.html +++ b/public/assets/wechat/activities.html @@ -9,7 +9,11 @@
- +
diff --git a/public/assets/wechat/blog_detail.html b/public/assets/wechat/blog_detail.html index 6af2f3c3e..b3b97f047 100644 --- a/public/assets/wechat/blog_detail.html +++ b/public/assets/wechat/blog_detail.html @@ -3,12 +3,11 @@
-
- - +
{{blog.title}}
+
{{blog.user.realname}}发表博客
-
+
{{blog.created_at}} diff --git a/public/assets/wechat/course_discussion.html b/public/assets/wechat/course_discussion.html index d1b708718..9c70dfcfc 100644 --- a/public/assets/wechat/course_discussion.html +++ b/public/assets/wechat/course_discussion.html @@ -3,11 +3,16 @@
-
- - -
-
+
{{discussion.subject}}
+ + + + + + + +
发布者:{{discussion.user.realname}}
来   源:{{discussion.course_project_name}}  |  课程问答区
+
diff --git a/public/assets/wechat/course_notice.html b/public/assets/wechat/course_notice.html index 3048d219c..750543e03 100644 --- a/public/assets/wechat/course_notice.html +++ b/public/assets/wechat/course_notice.html @@ -3,11 +3,16 @@
-
- - -
-
+
{{news.title}}
+ + + + + + + +
发布者:{{news.author.realname}}
来   源:{{news.course_name}}  |  课程通知
+
diff --git a/public/assets/wechat/homework_detail.html b/public/assets/wechat/homework_detail.html index f61b963a9..708d8b420 100644 --- a/public/assets/wechat/homework_detail.html +++ b/public/assets/wechat/homework_detail.html @@ -3,14 +3,21 @@
-
- - -
-
-
- 迟交扣分:{{homework.late_penalty}}分 匿评开启时间:{{homework.evaluation_start}}
- 缺评扣分:{{homework.absence_penalty}}分/作品 匿评关闭时间:{{homework.evaluation_end}} +
{{homework.name}}
+ + + + + + + +
发布者:{{homework.author.realname}}
来   源:{{homework.course_name}}  |  课程作业
+
+
+ 迟交扣分:{{homework.late_penalty}}分
+ 缺评扣分:{{homework.absence_penalty}}分/作品
+ 匿评开启时间:{{homework.evaluation_start}}
+ 匿评关闭时间:{{homework.evaluation_end}}
{{homework.publish_time}} diff --git a/public/assets/wechat/issue_detail.html b/public/assets/wechat/issue_detail.html index 9391539f1..38f732e6f 100644 --- a/public/assets/wechat/issue_detail.html +++ b/public/assets/wechat/issue_detail.html @@ -3,14 +3,21 @@
-
- - -
+
{{issue.subject}}
+ + + + + + + +
发布者:{{issue.author.realname}}
来   源:{{issue.project_name}}  |  项目缺陷
-
- 状态:{{issue.issue_status}} 优先级:{{issue.issue_priority}}
- 指派给:{{issue.issue_assigned_to}} 完成度:{{issue.done_ratio}}% +
+ 状   态:{{issue.issue_status}}
+ 优先级:{{issue.issue_priority}}
+ 指派给:{{issue.issue_assigned_to}}
+ 完成度:{{issue.done_ratio}}%
{{issue.created_on}} diff --git a/public/assets/wechat/jour_message_detail.html b/public/assets/wechat/jour_message_detail.html index 515e2216f..7ce14e4a8 100644 --- a/public/assets/wechat/jour_message_detail.html +++ b/public/assets/wechat/jour_message_detail.html @@ -2,9 +2,8 @@
-
- - +
{{message.user.realname}}给您留言了
+
{{message.created_on}}
diff --git a/public/assets/wechat/project_discussion.html b/public/assets/wechat/project_discussion.html index 0619ad5bf..185d06784 100644 --- a/public/assets/wechat/project_discussion.html +++ b/public/assets/wechat/project_discussion.html @@ -3,11 +3,16 @@
-
- - -
-
+
{{discussion.subject}}
+ + + + + + + +
发布者:{{discussion.user.realname}}
来   源:{{discussion.course_project_name}}  |  项目讨论区
+
diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 4dce14c3a..ddfede164 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -1,6 +1,6 @@ var app = angular.module('wechat', ['ngRoute','ngCookies']); var apiUrl = '/api/v1/'; -var debug = false; //调试标志,如果在本地请置为true +var debug = true; //调试标志,如果在本地请置为true if(debug===true){ apiUrl = 'http://localhost:3000/api/v1/'; @@ -10,7 +10,7 @@ app.factory('auth', function($http,$routeParams, $cookies, $q){ var _openid = ''; if(debug===true){ - _openid = "oCnvgvz8R7QheXE-R9Kkr39j8Ndg"; + _openid = "1"; } var getOpenId = function() { diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index f587a3e50..3872bb649 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -33,6 +33,8 @@ a.underline {text-decoration:underline;} .hidden {overflow:hidden; white-space:nowrap; text-overflow:ellipsis;} .inline-block {display:inline-block;} .undis {display:none;} +.text-nowrap {white-space:nowrap;} +.v-top {vertical-align:top;} /*动态样式*/ .post-container {width:100%;} @@ -40,6 +42,7 @@ a.underline {text-decoration:underline;} .post-main {padding:10px; color:#9a9a9a;} .post-avatar {width:45px; height:45px; margin-right:10px;} .post-title {font-size:13px; text-align:left;} +.post-detail-info {font-size:13px; text-align:left; color:#9a9a9a;} .fl {float:left;} .fr {float:right;} .cl {clear:both; overflow:hidden;} From 2898805aa78c55ea4280b88475637f15bf04c537 Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 12 Apr 2016 15:12:40 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E5=9B=9E=E5=A4=8D=E7=9A=84=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1234567 | 1 + app/models/blog_comment.rb | 42 +++---------------- app/models/homework_common.rb | 4 +- app/models/issue.rb | 4 ++ app/models/journals_for_message.rb | 2 +- app/models/mailer.rb | 67 +----------------------------- app/models/news.rb | 4 ++ config/locales/zh.yml | 8 ++-- 8 files changed, 22 insertions(+), 110 deletions(-) create mode 100644 1234567 diff --git a/1234567 b/1234567 new file mode 100644 index 000000000..2954ee65a --- /dev/null +++ b/1234567 @@ -0,0 +1 @@ +{"access_token":"8_uw_0k7gzuGR_jM5OHas7VXxNKScuDVYDAFT0MCXckv53f9QBUtlUxs4baMASygfA-Y45NVaeEFefOcfB8xcyBRdyZjVrEj_A7fr9qxYxWT7RCB8J4whon2_uE5np28JQVcABAFMR","expires_in":7200,"got_token_at":1460444599} \ No newline at end of file diff --git a/app/models/blog_comment.rb b/app/models/blog_comment.rb index cfe6fe3f3..8f618476a 100644 --- a/app/models/blog_comment.rb +++ b/app/models/blog_comment.rb @@ -78,44 +78,12 @@ class BlogComment < ActiveRecord::Base #博客回复微信模板消息 def blog_wechat_message - uw = UserWechat.where(user_id: self.parent.author_id).first - #unless uw.nil? && self.parent.author_id != User.current.id - unless uw.nil? - data = { - touser:uw.openid, - template_id:"A_3f5v90-zK73V9Kijm-paDkl9S-NuM8Cf-1UJi92_c", - url:"http://www.trustie.net/", - topcolor:"#FF0000", - data:{ - first: { - value:"您的博客有新回复了", - color:"#173177" - }, - keyword1:{ - value:self.author.try(:realname), - color:"#173177" - }, - keyword2:{ - value:format_time(self.created_at), - color:"#173177" - }, - keyword3:{ - value:self.content.html_safe, - color:"#173177" - }, - remark:{ - value:"具体内容请点击详情查看网站", - color:"#173177" - } - } - } - logger.info "start send template message: #{data}" - begin - req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) - rescue Exception => e - logger.error "[blog_comment] ===> #{e}" + if self.parent_id.nil? + self.author.watcher_users.each do |watcher| + Wechat.api.message_update_template watcher.id, "#{l(:label_new_blog_template)}", self.author.try(:realname) + " 发表了博客:" + self.title.html_safe, format_time(self.created_at) end - logger.info "send over. #{req}" + else + Wechat.api.comment_template self.parent.author_id, "#{l(:label_blog_comment_template)}", self.author.try(:realname), format_time(self.created_at), self.content.html_safe end end end diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb index c34c63f2d..2774295a1 100644 --- a/app/models/homework_common.rb +++ b/app/models/homework_common.rb @@ -59,7 +59,7 @@ class HomeworkCommon < ActiveRecord::Base self.course.members.each do |m| # if m.user_id != self.user_id self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.course_id, :viewed => false) - Wechat.api.homework_template(m.user_id, "#{l(:label_new_homework_template)}", self.course.name, self.name, self.end_time.to_s + " 23:59:59") + Wechat.api.homework_template(m.user_id, "#{l(:label_new_homework_template)}", self.course.name, self.name.html_safe, self.end_time.to_s + " 23:59:59") # end end end @@ -105,7 +105,7 @@ class HomeworkCommon < ActiveRecord::Base #修改作业后发送微信模板消息 def wechat_message self.course.members.each do |member| - Wechat.api.homework_template(member.user_id, "#{l(:label_update_homework_template)}", self.course.name, self.name, self.end_time.to_s + " 23:59:59") + Wechat.api.homework_template(member.user_id, "#{l(:label_update_homework_template)}", self.course.name, self.name.html_safe, self.end_time.to_s + " 23:59:59") end end diff --git a/app/models/issue.rb b/app/models/issue.rb index 0d72407ba..45347b5ad 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -1,3 +1,4 @@ +#encoding: utf-8 # Redmine - project management software # Copyright (C) 2006-2013 Jean-Philippe Lang # @@ -16,6 +17,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Issue < ActiveRecord::Base + require 'net/http' + require 'json' include Redmine::SafeAttributes include Redmine::Utils::DateCalculation include UserScoreHelper @@ -156,6 +159,7 @@ class Issue < ActiveRecord::Base # 指派给自己的缺陷不提示消息 unless self.author_id == self.assigned_to_id self.forge_messages << ForgeMessage.new(:user_id => self.assigned_to_id, :project_id => self.project_id, :viewed => false) + Wechat.api.message_update_template self.assigned_to_id, "#{l(:label_new_issue_template)}", self.author.try(:realname) + " 给您指派了缺陷:" + self.subject.html_safe, format_time(self.created_on) end if self.tracker_id == 5 self.project.members.each do |m| diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb index c975bcaa6..ce18e1bdb 100644 --- a/app/models/journals_for_message.rb +++ b/app/models/journals_for_message.rb @@ -269,7 +269,7 @@ class JournalsForMessage < ActiveRecord::Base if self.reply_id == 0 if self.user_id != self.jour_id # 过滤自己给自己的留言消息 receivers << self.jour - Wechat.api.comment_template self.jour_id, "#{l(:label_new_journals_template)}", self.user.try(:realname), format_time(self.created_on), self.notes.html_safe + Wechat.api.message_update_template self.jour_id, "#{l(:label_new_journals_template)}", self.notes.html_safe, format_time(self.created_on) end else # 留言回复 reply_to = User.find(self.reply_id) diff --git a/app/models/mailer.rb b/app/models/mailer.rb index 4b7180857..664e5cfac 100644 --- a/app/models/mailer.rb +++ b/app/models/mailer.rb @@ -17,8 +17,6 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Mailer < ActionMailer::Base - require 'net/http' - require 'json' layout 'mailer' helper :application helper :issues @@ -642,9 +640,6 @@ class Mailer < ActionMailer::Base mail :to => recipients, :subject => "[ #{l(:label_user_homework)} : #{homework_common.name} #{l(:label_memo_create_succ)}]", :filter => true - @homework_common.course.members.each do |member| - mail_wechat_message member.user_id, "3e5Dj2GIx8MOcMyRKpTUEQnM7Tg0ASSCNc01NS9HCGI", "您的课程有新作业了", @homework_common.course.name, @homework_common.name, @homework_common.end_time.to_s + " 23:59:59" - end end # Builds a Mail::Message object used to email recipients of a news' project when a news item is added. @@ -710,8 +705,6 @@ class Mailer < ActionMailer::Base mail :to => recipients, :subject => "[#{news.course.name}] #{l(:label_news)}: #{news.title}", :filter => true - - mail_wechat_message news.author_id, "A_3f5v90-zK73V9Kijm-paDkl9S-NuM8Cf-1UJi92_c", "您的课程通知有新回复了", @author.try(:realname), format_time(comment.created_on), comment.comments.html_safe end end @@ -736,14 +729,7 @@ class Mailer < ActionMailer::Base :cc => cc, :subject => "[#{message.board.project.name} - #{message.board.name} - msg#{message.root.id}] #{message.subject}", :filter => true - if message.parent_id == nil - message.project.members.each do |member| - mail_wechat_message member.user_id, "oKzFCdk7bsIHnGbscA__N8LPQrBkUShvpjV3-kuwWDQ", "项目讨论区有新帖子发布了", message.subject, @author.try(:realname), format_time(message.created_on) - end - else - mail_wechat_message message.parent.author_id, "A_3f5v90-zK73V9Kijm-paDkl9S-NuM8Cf-1UJi92_c", "您的帖子有新回复了", @author.try(:realname), format_time(message.created_on), message.content.html_safe - end - elsif message.course + elsif message.course redmine_headers 'Course' => message.course.id, 'Topic-Id' => (message.parent_id || message.id) @author = message.author @@ -758,14 +744,7 @@ class Mailer < ActionMailer::Base :cc => cc, :subject => "[#{message.board.course.name} - #{message.board.name} - msg#{message.root.id}] #{message.subject}", :filter => true - if message.parent_id == nil - message.course.members.each do |member| - mail_wechat_message member.user_id, "oKzFCdk7bsIHnGbscA__N8LPQrBkUShvpjV3-kuwWDQ", "课程问答区有新帖子发布了", message.subject, @author.try(:realname), format_time(message.created_on) - end - else - mail_wechat_message message.parent.author_id, "A_3f5v90-zK73V9Kijm-paDkl9S-NuM8Cf-1UJi92_c", "您的帖子有新回复了", @author.try(:realname), format_time(message.created_on), message.content.html_safe end - end end # Builds a Mail::Message object used to email the recipients of a project of the specified wiki content was added. @@ -1119,48 +1098,4 @@ class Mailer < ActionMailer::Base 1.upto(len) { |i| newpass << chars[rand(chars.size-1)] } return newpass end - - #微信模板消息 - def mail_wechat_message user_id, template_id, first, key1, key2, key3, remark="具体内容请点击详情查看网站" - uw = UserWechat.where(user_id: user_id).first - logger.info "mail_wechat_message #{user_id} #{uw}" - unless uw.nil? - data = { - touser:uw.openid, - template_id:template_id, - url:"http://www.trustie.net/", - topcolor:"#FF0000", - data:{ - first: { - value:first, - color:"#173177" - }, - keyword1:{ - value:key1, - color:"#173177" - }, - keyword2:{ - value:key2, - color:"#173177" - }, - keyword3:{ - value:key3, - color:"#173177" - }, - remark:{ - value:remark, - color:"#173177" - } - } - } - - logger.info "start send template message: #{data}" - begin - req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) - rescue Exception => e - logger.error "[mailer] ===> #{e}" - end - logger.info "send over. #{req}" - end - end end diff --git a/app/models/news.rb b/app/models/news.rb index 6746d90cd..967516e65 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -1,3 +1,4 @@ +#encoding: utf-8 # Redmine - project management software # Copyright (C) 2006-2013 Jean-Philippe Lang # @@ -16,6 +17,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class News < ActiveRecord::Base + require 'net/http' + require 'json' include Redmine::SafeAttributes belongs_to :project,:touch => true include ApplicationHelper @@ -167,6 +170,7 @@ class News < ActiveRecord::Base self.course.members.each do |m| if m.user_id != self.author_id self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.course_id, :viewed => false) + Wechat.api.message_update_template m.user_id, "#{l(:label_new_notice_template)}", self.author.try(:realname) + " 发布了通知:" + self.title.html_safe, format_time(self.created_on) end end else diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 8990f2490..4f0c6b701 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -2137,10 +2137,10 @@ zh: label_homework_comment_template: 您的作业有新回复了 label_new_journals_template: 您有新留言了 label_journals_comment_template: 您的留言有新回复了 - label_resource_name: 您的课程有新作业了 - label_resource_name: 您的课程有新作业了 - label_resource_name: 您的课程有新作业了 - label_resource_name: 您的课程有新作业了 + label_blog_comment_template: 您的博客有新回复了 + label_new_blog_template: 您的课程有新作业了 + label_new_issue_template: 您有新缺陷了 + label_new_notice_template: 您的课程有新通知了 label_resource_name: 您的课程有新作业了 label_resource_name: 您的课程有新作业了 label_resource_name: 您的课程有新作业了 From 1882cd8f4f8ab28e91efd9603fdfc856008f8b2a Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 12 Apr 2016 15:42:59 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=A7=93=E5=90=8D?= =?UTF-8?q?=E4=B8=8D=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/entities/user.rb | 4 +++- app/helpers/api_helper.rb | 4 ++++ public/javascripts/wechat/app.js | 4 ++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/api/mobile/entities/user.rb b/app/api/mobile/entities/user.rb index 16048c61a..e33c6a845 100644 --- a/app/api/mobile/entities/user.rb +++ b/app/api/mobile/entities/user.rb @@ -24,6 +24,8 @@ module Mobile u.nil? || u.user_extensions.nil? ? "" : u.user_extensions.brief_introduction when :student_num u.nil? || u.user_extensions.nil? ? "" : u.user_extensions.student_id + when :realname + u.nil? ? "" : get_user_realname(u) end end end @@ -37,7 +39,7 @@ module Mobile #昵称 expose :nickname #真名 - expose :realname + user_expose :realname #性别 user_expose :gender #我的二维码 diff --git a/app/helpers/api_helper.rb b/app/helpers/api_helper.rb index bd7ba8751..274bfc552 100644 --- a/app/helpers/api_helper.rb +++ b/app/helpers/api_helper.rb @@ -27,6 +27,10 @@ module ApiHelper location end + def get_user_realname user + name = user.lastname + user.firstname + name.empty? || name.nil? ? user.login : name + end def get_assigned_homeworks(homeworks, n, index) homeworks += homeworks diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index ddfede164..713c98863 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -1,6 +1,6 @@ var app = angular.module('wechat', ['ngRoute','ngCookies']); var apiUrl = '/api/v1/'; -var debug = true; //调试标志,如果在本地请置为true +var debug = false; //调试标志,如果在本地请置为true if(debug===true){ apiUrl = 'http://localhost:3000/api/v1/'; @@ -10,7 +10,7 @@ app.factory('auth', function($http,$routeParams, $cookies, $q){ var _openid = ''; if(debug===true){ - _openid = "1"; + _openid = "2"; } var getOpenId = function() { From 70afbb3323db186ed1f8c5ac4c0a5eded3a2c016 Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 12 Apr 2016 15:46:56 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E5=A7=93=E5=90=8D=E7=9A=84=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E3=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/api_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/api_helper.rb b/app/helpers/api_helper.rb index 274bfc552..49640d889 100644 --- a/app/helpers/api_helper.rb +++ b/app/helpers/api_helper.rb @@ -29,7 +29,7 @@ module ApiHelper def get_user_realname user name = user.lastname + user.firstname - name.empty? || name.nil? ? user.login : name + name.empty? || name.nil? || name == " " ? user.login : name end def get_assigned_homeworks(homeworks, n, index) From 38c182d76a28ab40a05f5d78802c6587fe398234 Mon Sep 17 00:00:00 2001 From: txz Date: Tue, 12 Apr 2016 15:51:18 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E8=80=85=E7=9C=9F=E5=90=8D=E4=B8=BA=E7=A9=BA=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E6=98=B5=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/homework_detail.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/assets/wechat/homework_detail.html b/public/assets/wechat/homework_detail.html index 708d8b420..776ecb4ce 100644 --- a/public/assets/wechat/homework_detail.html +++ b/public/assets/wechat/homework_detail.html @@ -6,7 +6,9 @@
{{homework.name}}
- +
发布者:{{homework.author.realname}} + {{homework.author.realname}} + {{homework.author.nickname}}
来   源: