diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb
index eec6e8ead..402702659 100644
--- a/app/api/mobile/apis/courses.rb
+++ b/app/api/mobile/apis/courses.rb
@@ -100,15 +100,34 @@ module Mobile
params do
requires :token, type: String
requires :invite_code, type: String, desc: '邀请码'
+ requires :teacher_flag, type: Boolean
+ requires :assistant_flag, type: Boolean
+ requires :student_flag, type: Boolean
end
- post "join" do
+ post "join_class" do
authenticate!
- cs = CoursesService.new
- status = cs.join_course({role: "10", openid: params[:openid], invite_code: params[:invite_code]}, current_user)
- {
- status: status[:state],
- message:CoursesService::JoinCourseError.message(status[:state])
- }
+
+ roles_ids = []
+ if params[:teacher_flag]
+ roles_ids << "9"
+ elsif params[:assistant_flag]
+ roles_ids << "7"
+ end
+
+ if params[:student_flag]
+ roles_ids << "10"
+ end
+
+ if roles_ids.length <= 0
+ {status:-1,message:"请至少选择一个角色"}
+ else
+ cs = CoursesService.new
+ status = cs.join_course_roles({role: roles_ids, openid: params[:openid], invite_code: params[:invite_code]}, current_user)
+ {
+ status: status[:state],
+ message:CoursesService::JoinCourseError.message(status[:state])
+ }
+ end
end
@@ -166,7 +185,52 @@ module Mobile
present :status, 0
end
- desc "设置教辅"
+ desc "课程未审核列表"
+ params do
+ requires :token, type: String
+ requires :course_id, type: Integer, desc: "课程id"
+ end
+ get 'reviewers' do
+ authenticate!
+ cs = CoursesService.new
+ reviewers = cs.reviewers_list(params[:course_id])
+ present :data, reviewers, with: Mobile::Entities::User
+ present :status, 0
+ end
+
+ desc "课程单个未审核用户信息"
+ params do
+ requires :token, type: String
+ requires :course_id, type: Integer, desc: "课程id"
+ requires :user_id, type: Integer, desc: "用户id"
+ end
+ post 'review_member_info' do
+ authenticate!
+
+ cs = CoursesService.new
+ reviewer = cs.get_reviewer_info(params)
+ present :data, reviewer, with: Mobile::Entities::User
+ present :status, 0
+ end
+
+ desc "处理教师或助教的身份申请"
+ params do
+ requires :token, type: String
+ requires :course_id, type: Integer, desc: "课程id"
+ requires :user_id, type: Integer, desc: "用户id"
+ requires :type, type: Integer, desc: "同意或拒绝"
+ end
+ post 'deal_join_apply' do
+ authenticate!
+
+ cs = CoursesService.new
+ result = cs.deal_join_apply(params,current_user)
+
+ present :status, result[:status]
+ present :message, result[:message]
+ end
+
+ desc "设置助教"
params do
requires :token,type:String
requires :user_id,type:Integer,desc: '用户id'
@@ -178,7 +242,7 @@ module Mobile
present :status, 0
end
- desc "删除教辅"
+ desc "删除助教"
params do
requires :token,type:String
requires :user_id,type:Integer,desc: '用户id'
@@ -448,20 +512,35 @@ module Mobile
requires :id, type: Integer
requires :token, type: String
requires :user_id, type: Integer
- requires :role_id, type: Integer
+ requires :teacher_flag, type: Boolean
+ requires :assistant_flag, type: Boolean
+ requires :student_flag, type: Boolean
end
post 'edit_member_role' do
authenticate!
+ roles_id = []
+
+ if params[:teacher_flag]
+ roles_id << 9
+ elsif params[:assistant_flag]
+ roles_id << 7
+ end
+
+ if params[:student_flag]
+ roles_id << 10
+ end
+
+
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)
+ if c.tea_id == params[:user_id] || c.tea_id != current_user.id || roles_id.length <= 0
present :status, -1
else
cs = CoursesService.new
- status = cs.modify_user_course_role params
+ status = cs.modify_user_course_role params,roles_id
present :status, status
end
end
diff --git a/app/api/mobile/apis/projects.rb b/app/api/mobile/apis/projects.rb
index bdb824694..f3242845f 100644
--- a/app/api/mobile/apis/projects.rb
+++ b/app/api/mobile/apis/projects.rb
@@ -163,14 +163,21 @@ module Mobile
params do
requires :token, type: String
requires :invite_code, type: String, desc: '邀请码'
+ requires :role_id, type: Integer, desc: '身份'
end
- post "join" do
+ post "join_project" do
authenticate!
- ps = ProjectsService.new
- status = ps.join_project({role: "5", openid: params[:openid], invite_code: params[:invite_code]}, current_user)
+ role_id = params[:role_id]
- {status:status, message:ProjectsService::JoinProjectError.message(status)}
+ if role_id != 3 && role_id != 4 && role_id != 5
+ {status:-1,message:"请至少选择一个角色"}
+ else
+ ps = ProjectsService.new
+ status = ps.join_project({role: role_id, openid: params[:openid], invite_code: params[:invite_code]}, current_user)
+
+ {status:status, message:ProjectsService::JoinProjectError.message(status)}
+ end
# {status:-1, message: '该功能将在近日开放,敬请期待!' }
end
diff --git a/app/api/mobile/entities/project_member.rb b/app/api/mobile/entities/project_member.rb
index 58edf7ea7..decd7dac3 100644
--- a/app/api/mobile/entities/project_member.rb
+++ b/app/api/mobile/entities/project_member.rb
@@ -14,11 +14,11 @@ module Mobile
else
case f
when :roles_id
- u.roles[0].id
+ # u.roles[0].id
+ u.roles.map {|r| r.id}
end
end
end
-
end
end
diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb
index ce3157d5f..c8401f051 100644
--- a/app/services/courses_service.rb
+++ b/app/services/courses_service.rb
@@ -111,6 +111,129 @@ class CoursesService
users
end
+ def reviewers_list course_id
+ reviewers = []
+ c = Course.find(course_id)
+
+ if c
+ messages = CourseMessage.where("course_id=? and course_message_type = 'JoinCourseRequest' and status = 0 ",course_id)
+
+ messages.each do |m|
+ user = User.find(m.course_message_id)
+
+ if user
+ img_url = url_to_avatar(user)
+ gender = user.user_extensions.gender.nil? ? 0 : user.user_extensions.gender
+ work_unit = get_user_work_unit user
+ location = get_user_location user
+ roles_ids = m.content.split(",")
+ reviewers << {:id => user.id, :img_url => img_url, :nickname => user.login, :gender => gender,
+ :work_unit => work_unit, :mail => user.mail, :location => location,
+ role_name: "",
+ name: user.show_name,
+ roles_id: roles_ids.include?("7") ? 7 : 9,
+ :brief_introduction => user.user_extensions.brief_introduction,:realname=>user.realname}
+ end
+ end
+
+ end
+
+ reviewers
+ end
+
+ def get_reviewer_info params
+ info = nil
+ c = Course.find(params[:course_id])
+ if c
+ messages = CourseMessage.where("course_id=? and course_message_id = ? and course_message_type = 'JoinCourseRequest' and status = 0 ",params[:course_id],params[:user_id]).first
+
+ if messages
+ user = User.find(params[:user_id])
+ if user
+ img_url = url_to_avatar(user)
+ gender = user.user_extensions.gender.nil? ? 0 : user.user_extensions.gender
+ work_unit = get_user_work_unit user
+ location = get_user_location user
+ roles_ids = messages.content.split(",")
+ info = {:id => user.id, :img_url => img_url, :nickname => user.login, :gender => gender,
+ :work_unit => work_unit, :mail => user.mail, :location => location,
+ role_name: "",
+ name: user.show_name,
+ roles_id: roles_ids.include?("7") ? 7 : 9,
+ :brief_introduction => user.user_extensions.brief_introduction,:realname=>user.realname}
+ end
+ end
+ end
+
+ info
+ end
+
+ def deal_join_apply params,current_user
+ status = -1
+ message = ""
+
+ c = Course.find(params[:course_id])
+
+ if c
+ messages = CourseMessage.where("course_id=? and course_message_id = ? and course_message_type = 'JoinCourseRequest' and status = 0 ",params[:course_id],params[:user_id]).first
+ if messages
+ apply_user = User.find(params[:user_id])
+ ids = messages.content.split(",") # content保存的是申请的职位角色
+ integer_ids = []
+ ids.each do |role_id|
+ integer_ids << role_id.to_i
+ end
+
+ if params[:type] == 0
+
+ if apply_user.member_of_course?(c)
+ #将角色改为老师或者教辅
+ member = c.members.where(:user_id=>apply_user.id).all[0]
+ member.role_ids = integer_ids
+ #删除为学生的记录
+ unless member.role_ids.include?(10)
+ joined = StudentsForCourse.where('student_id = ? and course_id = ?', member.user_id,c.id)
+ joined.each do |join|
+ join.delete
+ end
+ end
+
+ member.course_group_id = 0
+ member.save
+ CourseMessage.create(:user_id => apply_user.id, :course_id => c.id, :viewed => false,:content=> messages.content,:course_message_id=>current_user.id,:course_message_type=>'CourseRequestDealResult',:status=>1)
+ messages.update_attributes(:status=>1,:viewed=>1)
+ else
+ members = []
+ members << Member.new(:role_ids => integer_ids, :user_id => apply_user.id)
+ c.members << members
+ CourseMessage.create(:user_id => apply_user.id, :course_id => c.id, :viewed => false,:content=> messages.content,:course_message_id=>current_user.id,:course_message_type=>'CourseRequestDealResult',:status=>1)
+ messages.update_attributes(:status=>1,:viewed=>1)
+ end
+ if integer_ids.include?(9)
+ message = "您已同意教师"+apply_user.show_name+",加入班级"
+ else
+ message = "您已同意助教"+apply_user.show_name+",加入班级"
+ end
+ else
+ CourseMessage.create(:user_id => apply_user.id, :course_id => c.id, :viewed => false,:content=> messages.content,:course_message_id=>current_user.id,:course_message_type=>'CourseRequestDealResult',:status=>2)
+ message.update_attributes(:status=>2,:viewed=>1)
+ if integer_ids.include?(9)
+ message = "您已拒绝教师"+apply_user.show_name+",加入班级"
+ else
+ message = "您已拒绝助教"+apply_user.show_name+",加入班级"
+ end
+ end
+ status = 0
+ else
+ message = "该申请不存在或已被处理"
+ end
+ else
+ message = "该班级不存在或已被删除"
+ end
+
+ {:status => status,:message => message}
+ end
+
#获取用户的工作单位
def get_user_work_unit user
work_unit = ""
@@ -329,15 +452,17 @@ class CoursesService
0, '加入成功',
1, '密码错误',
2, '班级已过期 请联系班级管理员重启班级。',
- 3, '您已经加入了班级',
+ 3, '您已经是该班级的成员了',
4, '您的邀请码不正确',
5, '您还未登录',
- 6, '申请成功,请等待审核完毕',
+ 6, '您的申请已提交,请等待管理员审批',
7, '您已经发送过申请了,请耐心等待',
8, '您已经是该班级的教师了',
9, '您已经是该班级的教辅了',
10, '您已经是该班级的管理员了',
11, '该班级不存在或已被删除啦',
+ 12, '您已经发送过申请了,请耐心等待',
+ 13, '您的申请已提交,请等待管理员审批',
'未知错误,请稍后再试'
]
end
@@ -460,15 +585,31 @@ class CoursesService
is_stu = true
end
#如果已经发送过消息了,那么就要给个提示
- if CourseMessage.where("course_message_type = 'JoinCourseRequest' and user_id = #{course.tea_id} and content = '#{role_str}' and course_message_id = #{User.current.id} and course_id = #{course.id} and status = 0").count != 0
+ if CourseMessage.where("course_message_type = 'JoinCourseRequest' and user_id = #{course.tea_id} and content = '#{role_str}' and course_message_id = #{current_user.id} and course_id = #{course.id} and status = 0").count != 0
if is_stu
@state = 12
else
@state = 7
end
else
- Mailer.run.join_course_request(course, User.current, params[:role])
- CourseMessage.create(:user_id => course.tea_id, :course_id => course.id, :viewed => false,:content=> role_str,:course_message_id=>User.current.id,:course_message_type=>'JoinCourseRequest',:status=>0)
+ Mailer.run.join_course_request(course, current_user, params[:role])
+ CourseMessage.create(:user_id => course.tea_id, :course_id => course.id, :viewed => false,:content=> role_str,:course_message_id=>current_user.id,:course_message_type=>'JoinCourseRequest',:status=>0)
+
+ #----------------微信通知----------------------
+
+ if role_ids.include?("7") || role_ids.include?("9")
+ tea_user = User.find(course.tea_id)
+ count = ShieldWechatMessage.where("container_type='User' and container_id=#{tea_user.id} and shield_type='Course' and shield_id=#{course.id}").count
+ if count == 0
+
+ rolename = role_ids.include?("7") ? "助教" : "教师"
+ content = current_user.show_name + "申请以"+rolename+"身份加入班级,等待您的审批。"
+ ws = WechatService.new
+ ws.class_notice tea_user.id, "course_join_review", course.id, "班级成员审批通知", course.name, tea_user.show_name, format_time(Time.now), content, "点击查看申请详情"
+ end
+ end
+ #--------------------------------------------
+
if is_stu
@state = 13
else
@@ -1054,20 +1195,21 @@ class CoursesService
# end
#修改班级成员角色
- def modify_user_course_role params
+ def modify_user_course_role params,roles_id
status = -1
c = Course.find("#{params[:id]}")
- member = c.member_principals.includes(:roles, :principal).where("user_id=?",params[:user_id]).first
+ # member = c.member_principals.includes(:roles, :principal).where("user_id=?",params[:user_id]).first
+ member = c.members.where("user_id=?",params[:user_id]).first
if member
- role = Role.find(params[:role_id])
+ member.role_ids = roles_id
- member.member_roles[0].role_id = params[:role_id]
+ role = Role.find(roles_id[0])
# 这里的判断只能通过角色名,可以弄成常量
- if params[:role_id] == 10
+ if roles_id && roles_id.include?(10)
StudentsForCourse.create(:student_id => params[:user_id], :course_id =>params[:id])
else
joined = StudentsForCourse.where('student_id = ? and course_id = ?', params[:user_id],params[:id])
@@ -1090,7 +1232,7 @@ class CoursesService
Role.givable.all[3..5]
- if member.member_roles[0].save
+ if member.save
status = 0
end
end
diff --git a/app/services/projects_service.rb b/app/services/projects_service.rb
index 2d5e3bf08..f519059d2 100644
--- a/app/services/projects_service.rb
+++ b/app/services/projects_service.rb
@@ -125,20 +125,25 @@ class ProjectsService
status = member.member_roles[0].role_id
else
if params[:invite_code].present?
- members = []
- user_grades = []
- project_info = []
- user_grades << UserGrade.new(:user_id => current_user.id, :project_id => project.id)
- project.user_grades << user_grades unless user_grades.first.user_id.nil?
+ if params[:role_id] == 5
+ members = []
+ user_grades = []
+ project_info = []
- members << Member.new(:role_ids => ["5"], :user_id => current_user.id)
- project.members << members
+ user_grades << UserGrade.new(:user_id => current_user.id, :project_id => project.id)
+ project.user_grades << user_grades unless user_grades.first.user_id.nil?
- project_info << ProjectInfo.new(:user_id => current_user.id, :project_id => project.id)
- project.project_infos << project_info
+ members << Member.new(:role_ids => ["5"], :user_id => current_user.id)
+ project.members << members
- status = 0
+ project_info << ProjectInfo.new(:user_id => current_user.id, :project_id => project.id)
+ project.project_infos << project_info
+
+ status = 0
+ else
+
+ end
else
status = 4
end
diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html
index 5b9b71b0d..4fadcbd9d 100644
--- a/public/assets/wechat/class.html
+++ b/public/assets/wechat/class.html
@@ -34,9 +34,17 @@
{{teacher.name}}
管理员
- 教辅
+ 助教