From 8b771a183c6dc6fb99ad02e0f0effbd1f60fcea6 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Tue, 20 Sep 2016 14:58:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=88=86=E7=8F=AD=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 124 +++++++++++++++- app/api/mobile/entities/course.rb | 1 + app/api/mobile/entities/course_group.rb | 19 +++ app/services/courses_service.rb | 4 +- .../_programing_work_show.html.erb | 2 +- public/assets/wechat/class.html | 4 +- public/assets/wechat/class_group.html | 20 +++ public/assets/wechat/edit_class_group.html | 14 ++ public/assets/wechat/edit_class_member.html | 16 ++- public/assets/wechat/edit_userinfo.html | 1 + public/assets/wechat/join_class.html | 2 - public/assets/wechat/join_classgroup.html | 10 +- .../assets/wechat/select_my_coursegroup.html | 17 ++- .../javascripts/wechat/controllers/class.js | 21 ++- .../wechat/controllers/class_group.js | 48 +++++++ .../wechat/controllers/edit_class.js | 2 +- .../wechat/controllers/edit_class_group.js | 136 ++++++++++++++++++ .../wechat/controllers/edit_class_member.js | 87 ++++++++++- .../wechat/controllers/join_classgroup.js | 17 +-- .../controllers/select_my_coursegroup.js | 53 ++++++- public/javascripts/wechat/others/routes.js | 2 + 21 files changed, 564 insertions(+), 36 deletions(-) create mode 100644 app/api/mobile/entities/course_group.rb create mode 100644 public/assets/wechat/class_group.html create mode 100644 public/assets/wechat/edit_class_group.html create mode 100644 public/javascripts/wechat/controllers/class_group.js create mode 100644 public/javascripts/wechat/controllers/edit_class_group.js diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index dd5525fae..c4b445af9 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -541,6 +541,7 @@ module Mobile present :course_id,params[:id] present :user_id,params[:user_id] present :member_info,my_member, with: Mobile::Entities::ProjectMember + present :course_group_id,my_member.course_group_id present :status, 0 else present :status, -1 @@ -779,7 +780,7 @@ module Mobile requires :token, type: String requires :course_group_id, type: Integer end - post 'join_coursegroup' do + post 'user_join_coursegroup' do begin authenticate! member = Member.where(:course_id => params[:id], :user_id => current_user.id).first @@ -795,6 +796,127 @@ module Mobile end end + desc "修改分班" + params do + requires :id, type: Integer + requires :token, type: String + requires :course_group_id, type: Integer + requires :user_id, type: Integer + end + post 'user_edit_coursegroup' do + begin + authenticate! + member = Member.where(:course_id => params[:id], :user_id => params[:user_id]).first + + raise "不是该班级的学生!" unless member + + member.course_group_id = params[:course_group_id].to_i + member.save + present :status,0 + rescue Exception=>e + present :message,e.message + present :status,-1 + end + end + + desc '获取分班列表带上学生' + params do + requires :id, type: Integer + requires :token, type:String + end + get 'course_groups_withstudent/:id' do + begin + authenticate! + course = Course.find(params[:id]) + groups = [] + groups = course.course_groups if course.course_groups + present :data,groups, with: Mobile::Entities::CourseGroup + present :status,0 + rescue + present :status,-1 + end + end + + desc "删除分班" + params do + requires :id, type: Integer + requires :token, type: String + requires :course_group_id, type: Integer + end + post 'delete_coursegroup' do + begin + authenticate! + c = Course.find("#{params[:id]}") + my_member = c.member_principals.where("users.id=#{current_user.id}").first + + roles_ids = [] + my_member.roles.each do |role| + roles_ids << role.id + end + + if my_member && (roles_ids.include?(3) || roles_ids.include?(7) || roles_ids.include?(9) ) + else + raise "您没有该权限!" + end + CourseGroup.delete(params[:course_group_id]) + present :status,0 + rescue Exception=>e + present :message,e.message + present :status,-1 + end + end + + + desc "编辑分班" + params do + requires :id, type: Integer + requires :token, type: String + end + post 'edit_coursegroup' do + begin + authenticate! + c = Course.find("#{params[:id]}") + my_member = c.member_principals.where("users.id=#{current_user.id}").first + + roles_ids = [] + my_member.roles.each do |role| + roles_ids << role.id + end + + if my_member && (roles_ids.include?(3) || roles_ids.include?(7) || roles_ids.include?(9) ) + else + raise "您没有该权限!" + end + + #增加分班和修改分班名 + modify_groups = params[:modify_groups] + modify_groups.each do |g| + group = CourseGroup.find(g.id) + group.name = g.id.to_s + Time.now.to_i.to_s #只能先另取个名了不然原有的两个互换的话修改不了 + group.save + end + + modify_groups.each do |g| + group = CourseGroup.find(g.id) + group.name = g.name + group.save + end + + #增加分班和修改分班名 + add_groups = params[:add_groups] + add_groups.each do |name| + group = CourseGroup.new + group.name = name + group.course_id = params[:id] + group.save + end + present :status,0 + rescue Exception=>e + present :message,e.message + present :status,-1 + end + end + end end end diff --git a/app/api/mobile/entities/course.rb b/app/api/mobile/entities/course.rb index 30a5a6cc9..1b696e40c 100644 --- a/app/api/mobile/entities/course.rb +++ b/app/api/mobile/entities/course.rb @@ -54,6 +54,7 @@ module Mobile course_expose :updated_at course_expose :course_student_num course_expose :member_count + course_expose :groupnum expose :can_setting, if: lambda { |instance, options| options[:user] } do |instance, options| current_user = options[:user] can_setting = false diff --git a/app/api/mobile/entities/course_group.rb b/app/api/mobile/entities/course_group.rb new file mode 100644 index 000000000..f5d05d44c --- /dev/null +++ b/app/api/mobile/entities/course_group.rb @@ -0,0 +1,19 @@ +module Mobile + module Entities + class CourseGroup < Grape::Entity + include Redmine::I18n + include ApplicationHelper + include ApiHelper + def self.course_group_expose(f) + expose f do |u,opt| + if u.is_a?(Hash) && u.key?(f) + u[f] + end + end + end + expose :id + expose :name + expose :users, using: Mobile::Entities::User + end + end +end diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 2c0506d1e..5d2957d4c 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -332,7 +332,9 @@ class CoursesService # unless (course.is_public == 1 || current_user.member_of_course?(course) || current_user.admin?) # raise '403' # end - {:course => course,:syllabus_title => course.syllabus.nil? ? "":course.syllabus.title ,:work_unit => work_unit, :img_url => url_to_avatar(course),:current_user_is_member => current_user.nil? ? false : current_user.member_of_course?(course),:current_user_is_teacher => current_user.nil? ? false : is_course_teacher(current_user,course),:course_student_num => course ? course.student.count.to_s : 0} + groupnum = 0 + groupnum = course.course_groups.length if course.course_groups + {:course => course,:syllabus_title => course.syllabus.nil? ? "":course.syllabus.title ,:work_unit => work_unit, :img_url => url_to_avatar(course),:current_user_is_member => current_user.nil? ? false : current_user.member_of_course?(course),:current_user_is_teacher => current_user.nil? ? false : is_course_teacher(current_user,course),:course_student_num => course ? course.student.count.to_s : 0,:groupnum => groupnum} end #创建课程 diff --git a/app/views/student_work/_programing_work_show.html.erb b/app/views/student_work/_programing_work_show.html.erb index c4df9e715..bf4cf9e76 100644 --- a/app/views/student_work/_programing_work_show.html.erb +++ b/app/views/student_work/_programing_work_show.html.erb @@ -43,7 +43,7 @@ 第<%= work.student_work_tests.count - index%>次测试
- <%= test.created_at.to_s(:db) %> + <%= format_time(test.created_at).to_s %> diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html index 30c9120c3..f8947b029 100644 --- a/public/assets/wechat/class.html +++ b/public/assets/wechat/class.html @@ -256,13 +256,15 @@