From b994e786ab6d1d2c4b33024db399bdb7ac21bc5d Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 6 Jul 2016 11:06:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=91=E7=9A=84=E5=8A=A8=E6=80=81=E4=B8=AD?= =?UTF-8?q?=E4=B8=89=E7=B1=BB=E5=8A=A8=E6=80=81=E4=B9=8B=E9=97=B4=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E7=9A=84=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/activities.rb | 37 ++- public/assets/wechat/activities.html | 257 +++++++++++++++++- .../wechat/controllers/activity.js | 110 +++++++- 3 files changed, 372 insertions(+), 32 deletions(-) diff --git a/app/api/mobile/apis/activities.rb b/app/api/mobile/apis/activities.rb index 661925012..b4fb90ea7 100644 --- a/app/api/mobile/apis/activities.rb +++ b/app/api/mobile/apis/activities.rb @@ -10,30 +10,44 @@ module Mobile params do requires :page, type: Integer requires :token, type: String + requires :container_type, type: String end post do authenticate! user = current_user - shield_project_ids = ShieldActivity.select("shield_id").where("container_type='User' and container_id=#{user.id} and shield_type='Project'").map(&:shield_id) - shield_course_ids = ShieldActivity.select("shield_id").where("container_type='User' and container_id=#{user.id} and shield_type='Course'").map(&:shield_id) + container_type = params[:container_type] ? params[:container_type] : "All" + + if container_type == "All" || container_type == "Project" + shield_project_ids = ShieldActivity.select("shield_id").where("container_type='User' and container_id=#{user.id} and shield_type='Project'").map(&:shield_id) + user_project_ids = (user.projects.where("status = 1").map{|project| project.id}-shield_project_ids).empty? ? "(-1)" : "(" + (user.projects.where("status = 1").map{|project| project.id}-shield_project_ids).join(",") + ")" + project_types = "('Message','Issue','Project')" + end + + if container_type == "All" || container_type == "Course" + shield_course_ids = ShieldActivity.select("shield_id").where("container_type='User' and container_id=#{user.id} and shield_type='Course'").map(&:shield_id) + user_course_ids = (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).empty? ? "(-1)" : "(" + (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).join(",") + ")" + course_types = "('Message','News','HomeworkCommon','Poll','Course')" + end + page = params[:page] ? params[:page] : 0 - user_project_ids = (user.projects.where("status = 1").map{|project| project.id}-shield_project_ids).empty? ? "(-1)" : "(" + (user.projects.where("status = 1").map{|project| project.id}-shield_project_ids).join(",") + ")" - user_course_ids = (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).empty? ? "(-1)" : "(" + (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).join(",") + ")" - course_types = "('Message','News','HomeworkCommon','Poll','Course')" - project_types = "('Message','Issue','Project')" principal_types = "JournalsForMessage" watched_user_ids = User.watched_by(user.id).count == 0 ? " " : ("," + User.watched_by(user.id).map{|u| u.id.to_s }.join(',')) user_ids = "(" + user.id.to_s + watched_user_ids + ")" watched_user_blog_ids = Blog.select("id").where("author_id in #{user_ids}").count == 0 ? " " :Blog.select("id").where("author_id in #{user_ids}").map { |blog| blog.id}.join(",") blog_ids = "(" + watched_user_blog_ids + ")" - activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types})" + - "or (container_type = 'Course' and container_id in #{user_course_ids} and act_type in #{course_types}) "+ - "or (container_type = 'Principal' and act_type= '#{principal_types}' and container_id = #{user.id}) " + - "or (container_type = 'Blog' and act_type= 'BlogComment' and container_id in #{blog_ids})").order('updated_at desc') - + if container_type == "Course" + activities = UserActivity.where("(container_type = 'Course' and container_id in #{user_course_ids} and act_type in #{course_types})").order('updated_at desc') + elsif container_type == "Project" + activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types})").order('updated_at desc') + else + activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types})" + + "or (container_type = 'Course' and container_id in #{user_course_ids} and act_type in #{course_types}) "+ + "or (container_type = 'Principal' and act_type= '#{principal_types}' and container_id = #{user.id}) " + + "or (container_type = 'Blog' and act_type= 'BlogComment' and container_id in #{blog_ids})").order('updated_at desc') + end all_count = activities.count activities = activities.limit(10).offset(page * 10) count = activities.count @@ -42,6 +56,7 @@ module Mobile present :count, count present :page, page present :status, 0 + present :container_type, container_type end end end diff --git a/public/assets/wechat/activities.html b/public/assets/wechat/activities.html index a51a0f5f0..037ef8277 100644 --- a/public/assets/wechat/activities.html +++ b/public/assets/wechat/activities.html @@ -6,14 +6,19 @@
我的动态
+ + + + +
- 所有动态 - 课程动态 - 项目动态 + {{menu}}
-
-
+
+
+ +
@@ -140,7 +145,7 @@
-
+
@@ -230,7 +235,7 @@
-
+
@@ -268,7 +273,7 @@
-
+
@@ -306,10 +311,242 @@
+
+
更多
+
+
+ +
+
+
+
+
+
+
+
+
+ +
{{act.latest_update}}
+
+ +
+
+ 迟交扣分:{{act.homework_common_detail.late_penalty}}分 匿评开启时间:{{act.homework_common_detail.evaluation_start}}
+ 缺评扣分:{{act.homework_common_detail.absence_penalty}}分/作品 匿评关闭时间:{{act.homework_common_detail.evaluation_end}} +
+
+
+ +
+
+
{{act.praise_count}}
+
{{act.praise_count}}
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+ +
{{act.latest_update}}
+
+ +
+
+
+
+
+ +
+
+
{{act.praise_count}}
+
{{act.praise_count}}
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+ +
{{act.latest_update}}
+
+ +
+
+
+ +
+
+ +
+
+
{{act.praise_count}}
+
{{act.praise_count}}
+
+ +
+
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
更多
+
+
+ +
+
+
+
+
+
+
+
+
+ +
{{act.latest_update}}
+
+ +
+
+ 状态:{{act.issue_detail.issue_status}} 优先级:{{act.issue_detail.issue_priority}}
+ 指派给:{{act.issue_detail.issue_assigned_to}} 完成度:{{act.issue_detail.done_ratio}}% +
+
+
+ +
+
+
{{act.praise_count}}
+
{{act.praise_count}}
+
+ +
+
+
+
+
+ + +
+
+
+
+
+
+ +
{{act.latest_update}}
+
+ +
+
+
+
+
+ +
+
+
{{act.praise_count}}
+
{{act.praise_count}}
+
+ +
+
+
+
+
-
-
更多
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
更多
+
+
diff --git a/public/javascripts/wechat/controllers/activity.js b/public/javascripts/wechat/controllers/activity.js index 73bd09f26..b89c46300 100644 --- a/public/javascripts/wechat/controllers/activity.js +++ b/public/javascripts/wechat/controllers/activity.js @@ -6,6 +6,8 @@ app.controller('ActivityController', return url; }; + $scope.menus = ['所有动态', '课程动态', '项目动态']; + $scope.alertService = alertService.create(); console.log("ActivityController load"); @@ -13,33 +15,119 @@ app.controller('ActivityController', $scope.activities = rms.get("activities") || []; $scope.has_more = rms.get("has_more"); - $scope.loadActData = function(page){ + $scope.course_page = rms.get('course_page') || 0; + $scope.course_activities = rms.get("course_activities") || []; + $scope.course_has_more = rms.get("course_has_more"); + + $scope.project_page = rms.get('project_page') || 0; + $scope.project_activities = rms.get("project_activities") || []; + $scope.project_has_more = rms.get("project_has_more"); + + $scope.loadActData = function(index,page){ + container_type = "All"; + switch(index){ + case 1: + container_type = "All"; + $scope.page = page; + break; + case 2: + container_type = "Course"; + $scope.course_page = page; + break; + case 3: + container_type = "Project"; + $scope.project_page = page; + break; + } - $scope.page = page; $http({ method: 'POST', url: apiUrl+ "activities", - data: {token: auth.token(), page: page} + data: {token: auth.token(), page: page, container_type: container_type} }).then(function successCallback(response) { if(response.data.page >0) { - $scope.activities = $scope.activities.concat(response.data.data); + switch(response.data.container_type){ + case "All": + $scope.activities = $scope.activities.concat(response.data.data); + break; + case "Course": + $scope.course_activities = $scope.course_activities.concat(response.data.data); + break; + case "Project": + $scope.project_activities = $scope.project_activities.concat(response.data.data); + break; + case 3: + } } else { - $scope.activities = response.data.data; + switch(response.data.container_type){ + case "All": + $scope.activities = response.data.data; + break; + case "Course": + $scope.course_activities = response.data.data; + break; + case "Project": + $scope.project_activities = response.data.data; + break; + case 3: + } } - rms.save("activities", $scope.activities); - $scope.has_more = (response.data.count + response.data.page * 10) < response.data.all_count; - rms.save('has_more', $scope.has_more); - rms.save('page', response.data.page); - + switch(response.data.container_type){ + case "All": + rms.save("activities", $scope.activities); + $scope.has_more = (response.data.count + response.data.page * 10) < response.data.all_count; + rms.save('has_more', $scope.has_more); + rms.save('page', response.data.page); + break; + case "Course": + rms.save("course_activities", $scope.course_activities); + $scope.course_has_more = (response.data.count + response.data.page * 10) < response.data.all_count; + rms.save('course_has_more', $scope.course_has_more); + rms.save('course_page', response.data.page); + break; + case "Project": + rms.save("project_activities", $scope.project_activities); + $scope.project_has_more = (response.data.count + response.data.page * 10) < response.data.all_count; + rms.save('project_has_more', $scope.project_has_more); + rms.save('project_page', response.data.page); + break; + case 3: + } console.log(response.data); }, function errorCallback(response) { }); }; + $scope.tab = function(index){ + $scope.currentTab = index; + switch(index){ + //ALL + case 1: + if($scope.activities.length<=0){ + $scope.loadActData(index,0); + } + break; + //Course + case 2: + if($scope.course_activities.length<=0){ + $scope.loadActData(index,0); + } + break; + //Project + case 3: + if($scope.project_activities.length<=0){ + $scope.loadActData(index,0); + } + break; + } + } + + $scope.currentTab = 1; + if($scope.activities.length<=0){ - $scope.loadActData(0); + $scope.loadActData(1,0); } else { $timeout(function(){ window.scrollTo(0, rms.get("yoffset"));