diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 60e00280e..7b2c4ff1a 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -419,6 +419,54 @@ module Mobile end + desc "获取班级某成员角色信息" + params do + requires :id, type: Integer + requires :token, type: String + requires :user_id, type: Integer + end + post 'get_member_info' do + authenticate! + + c = Course.find("#{params[:id]}") + + my_member = c.member_principals.where("users.id=#{params[:user_id]}").first + + if my_member && my_member.roles[0] + present :course_id,params[:id] + present :user_id,params[:user_id] + present :member_info,my_member, with: Mobile::Entities::ProjectMember + present :status, 0 + else + present :status, -1 + end + + end + + desc "修改班级某成员角色信息" + params do + requires :id, type: Integer + requires :token, type: String + requires :user_id, type: Integer + requires :role_id, type: Integer + end + post 'edit_member_role' do + authenticate! + + c = Course.find("#{params[:id]}") + + #7教辅 9教师 10学生 + if c.tea_id == params[:user_id] || c.tea_id != current_user.id || !(params[:role_id] == 7 || params[:role_id] == 9 || params[:role_id] == 10) + present :status, -1 + else + + cs = CoursesService.new + cs.set_user_course_role params + + present :status, 0 + end + end + end end end diff --git a/app/api/mobile/apis/projects.rb b/app/api/mobile/apis/projects.rb index c1ada723c..fa8e0dcb2 100644 --- a/app/api/mobile/apis/projects.rb +++ b/app/api/mobile/apis/projects.rb @@ -62,69 +62,111 @@ module Mobile present :status, 0 end - desc "获取项目" + desc "获取项目成员" params do + requires :id, type: Integer requires :token, type: String end - post 'auth' do + post 'members' do authenticate! - auth = 0 + project = Project.find("#{params[:id]}") + members = project.member_principals + + master_members = project.member_principals.includes(:roles, :principal).where("member_roles.role_id=3").all.sort - if (current_user.user_extensions && current_user.user_extensions.identity == 0 && current_user.allowed_to?(:add_course, nil, :global => true)) - auth = 1 + master_members.each do |m| + if m.user_id == project.user_id + master_members.delete(m) + master_members.insert(0,m) + break + end end - present :auth, auth + develop_members = project.member_principals.includes(:roles, :principal).where("member_roles.role_id=4").all.sort + report_members = project.member_principals.includes(:roles, :principal).where("member_roles.role_id=5").all.sort + + present :master_members,master_members, with: Mobile::Entities::ProjectMember + present :develop_members,develop_members, with: Mobile::Entities::ProjectMember + present :report_members,report_members, with: Mobile::Entities::ProjectMember + present :status, 0 end - desc "新建大纲" + desc "获取项目某成员角色信息" params do + requires :id, type: Integer requires :token, type: String - requires :title, type: String, desc: '大纲标题' - requires :courses, type: Array[String], desc: '课程名' + requires :user_id, type: Integer end - post do + post 'get_member_info' do authenticate! - ss = SyllabusesService.new + project = Project.find("#{params[:id]}") - sy = ss.create(current_user, params[:title], - params[:courses].map{|c| {name: c} }) + my_member = project.member_principals.where("users.id=#{params[:user_id]}").first - if sy.new_record? - {status:-1, message: '创建大纲失败' } - else - present :data, sy, with: Mobile::Entities::Syllabus,user: current_user + if my_member && my_member.roles[0] + present :project_id,params[:id] + present :user_id,params[:user_id] + present :member_info,my_member, with: Mobile::Entities::ProjectMember present :status, 0 + else + present :status, -1 end end - desc '编辑大纲' + desc "修改项目某成员角色信息" params do + requires :id, type: Integer requires :token, type: String - requires :title, type: String, desc: '大纲标题' - # requires :add_courses, type: Array[String], desc: '课程名' - # requires :modify_courses, type: Array[Integer,String], desc: '课程名' + requires :user_id, type: Integer + requires :role_id, type: Integer end - post ':id/edit' do - + post 'edit_member_role' do authenticate! - ss = SyllabusesService.new + project = Project.find("#{params[:id]}") - #修改课程大纲 - status = ss.edit(current_user, params) + my_member = project.member_principals.where("users.id=#{current_user.id}").first - if status == -1 - {status:status, message: '修改课程信息失败' } + #3管理 4开发 5报告 + if !(my_member && my_member.roles[0] && my_member.roles[0].id == 3 ) || project.user_id == params[:user_id] || !(params[:role_id] == 3 || params[:role_id] == 4 || params[:role_id] == 5) + present :status, -1 else - present :status, status + + present :status, 0 end end - end + desc "新建项目" + params do + requires :token, type: String + requires :name, type: String, desc: '项目名称' + end + post 'create' do + authenticate! + + + + present :status, 0 + + end + + desc "加入项目" + params do + requires :token, type: String + requires :invite_code, type: String, desc: '邀请码' + end + post 'create' do + authenticate! + + + + present :status, 0 + end + + end end end end \ No newline at end of file diff --git a/app/api/mobile/entities/course.rb b/app/api/mobile/entities/course.rb index 88c8ba144..aaf5dd78b 100644 --- a/app/api/mobile/entities/course.rb +++ b/app/api/mobile/entities/course.rb @@ -86,6 +86,15 @@ module Mobile expose :my_homework,using: Mobile::Entities::Homework do |f, opt| f[:my_homework] if f.is_a?(Hash) && f.key?(:my_homework) end + expose :is_creator, if: lambda { |instance, options| options[:user] } do |instance, options| + if instance[:course] + course = instance[:course] + else + course = instance + end + current_user = options[:user] + course.tea_id == current_user.id + end course_expose :current_user_is_member course_expose :current_user_is_teacher course_expose :work_unit diff --git a/app/api/mobile/entities/project.rb b/app/api/mobile/entities/project.rb index 91d6a3073..4c2c5b04a 100644 --- a/app/api/mobile/entities/project.rb +++ b/app/api/mobile/entities/project.rb @@ -3,13 +3,25 @@ module Mobile class Project < Grape::Entity expose :name expose :id + expose :user_id expose :can_setting, if: lambda { |instance, options| options[:user] } do |instance, options| current_user = options[:user] - can_setting = instance.user_id == current_user.id ? true : false - can_setting = false if instance.id.nil? + + my_member = instance.member_principals.where("users.id=#{current_user.id}").first + can_setting = false + if my_member && my_member.roles[0] && my_member.roles[0].id == 3 + can_setting = true + end can_setting end + expose :is_creator, if: lambda { |instance, options| options[:user] } do |instance, options| + current_user = options[:user] + + current_user.id == instance.user_id + end + + expose :member_count, if: lambda { |instance, options| options[:user] } do |instance, options| instance.members.count end diff --git a/app/api/mobile/entities/project_member.rb b/app/api/mobile/entities/project_member.rb new file mode 100644 index 000000000..58edf7ea7 --- /dev/null +++ b/app/api/mobile/entities/project_member.rb @@ -0,0 +1,35 @@ +module Mobile + module Entities + class ProjectMember < Grape::Entity + include Redmine::I18n + include ApplicationHelper + include ApiHelper + def self.member_expose(f) + expose f do |u,opt| + if u.is_a?(Hash) && u.key?(f) + u[f] + elsif u.is_a?(::Member) + if u.respond_to?(f) + u.send(f) + else + case f + when :roles_id + u.roles[0].id + end + end + end + + end + end + + expose :user, using: Mobile::Entities::User do |c, opt| + if c.is_a?(::Member) + c.user + end + end + + member_expose :roles_id + + end + end +end diff --git a/app/api/mobile/entities/user.rb b/app/api/mobile/entities/user.rb index 2eb20f0db..dcdf48d3b 100644 --- a/app/api/mobile/entities/user.rb +++ b/app/api/mobile/entities/user.rb @@ -24,10 +24,12 @@ 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) + when :real_name + u.nil? ? "" : get_user_realname(u).gsub(/\s*/,""); when :name u.nil? ? "" : u.show_name + when :roles_id + u[:roles_id].nil? ? nil : u.roles_id end end end @@ -37,11 +39,13 @@ module Mobile expose :id #头像 - user_expose :img_url - #昵称 expose :nickname #真名 - user_expose :realname + user_expose :img_url + #昵称 + expose :realname + #昵称 + user_expose :real_name #性别 user_expose :gender #我的二维码 @@ -62,6 +66,8 @@ module Mobile user_expose :role_name + user_expose :roles_id + user_expose :name end diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index d864b6462..f8a8344a4 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -89,7 +89,8 @@ class CoursesService @members = searchTeacherAndAssistant(c) when '2' #@subPage_title = l :label_student_list - @members = searchStudent(c) + # @members = searchStudent(c) + @members = searchmember_by_name(student_homework_score(0,c.id, 0,"desc"),"") else #@subPage_title = '' @members = c.member_principals.includes(:roles, :principal).all.sort @@ -104,6 +105,7 @@ class CoursesService :work_unit => work_unit, :mail => m.user.mail, :location => location, role_name: m.roles.first.name, name: m.user.show_name, + roles_id: m.roles[0].id, :brief_introduction => m.user.user_extensions.brief_introduction,:realname=>m.user.realname} end users @@ -954,5 +956,19 @@ class CoursesService # student_works[index + 1 .. index + n] # end + + def set_user_course_role params + if params[role_id] == 7 + + + + elsif params[role_id] == + end + + + + + end + end diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html index f9618411d..f18235ddc 100644 --- a/public/assets/wechat/class.html +++ b/public/assets/wechat/class.html @@ -32,11 +32,14 @@