From 8968c991ff26bfb3f4a1ed5d15a9de1e7405c97c Mon Sep 17 00:00:00 2001
From: yuanke <249218296@qq.com>
Date: Mon, 18 Jul 2016 11:08:02 +0800
Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=EF=BC=9A=E4=BD=9C=E4=B8=9A?=
=?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=91=E9=80=81=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/api/mobile/apis/courses.rb | 9 +-
app/api/mobile/apis/resources.rb | 16 ++-
app/services/resources_service.rb | 119 ++++++++++++++++++
public/assets/wechat/class.html | 2 +-
public/assets/wechat/myresource.html | 6 +-
.../javascripts/wechat/controllers/class.js | 20 +--
.../wechat/controllers/myresource.js | 11 +-
.../wechat/controllers/send_class_list.js | 5 +-
8 files changed, 172 insertions(+), 16 deletions(-)
diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb
index caabad198..aa1e573ed 100644
--- a/app/api/mobile/apis/courses.rb
+++ b/app/api/mobile/apis/courses.rb
@@ -200,8 +200,13 @@ module Mobile
# course = Course.find(params[:id])
cs = CoursesService.new
course = cs.show_course(params,current_user)
- present :data, course, with: Mobile::Entities::Course,user: current_user
- { status: 0}
+
+ if course[:course][:is_delete] == 1
+ {status:-1, message: '该班级不存在或已被删除啦' }
+ else
+ present :data, course, with: Mobile::Entities::Course,user: current_user
+ present :status, 0
+ end
end
end
diff --git a/app/api/mobile/apis/resources.rb b/app/api/mobile/apis/resources.rb
index d5823d5b4..ebfef7f2d 100644
--- a/app/api/mobile/apis/resources.rb
+++ b/app/api/mobile/apis/resources.rb
@@ -85,12 +85,26 @@ module Mobile
requires :token, type: String
requires :course_ids, type: Array[Integer]
requires :send_id, type: Integer
+ requires :send_type, type: Integer
end
post 'send' do
authenticate!
rs = ResourcesService.new
- ori, flag, save_message = rs.send_resource_to_course(current_user,params)
+
+ ori = nil
+ flag = false
+ save_message = nil
+
+ case params[:send_type]
+ when 1
+ ori, flag, save_message = rs.send_resource_to_course(current_user,params)
+ when 2
+ ori, flag, save_message = rs.send_homework_to_course(current_user,params)
+ when 3
+ ori, flag, save_message = rs.send_exercise_to_course(current_user,params)
+ end
+
if flag
present :status, 0
else
diff --git a/app/services/resources_service.rb b/app/services/resources_service.rb
index bc97437e4..b56da8ad3 100644
--- a/app/services/resources_service.rb
+++ b/app/services/resources_service.rb
@@ -49,6 +49,125 @@ class ResourcesService
[@ori, @flag, @save_message]
end
+ def send_homework_to_course user,params
+ homework = HomeworkCommon.find params[:send_id].to_i
+ @ori = homework
+ course_ids = params[:course_ids]
+ @flag = false
+ unless course_ids.nil?
+ course_ids.each do |course_id|
+ course = Course.find course_id.to_i
+ new_homework = HomeworkCommon.new
+ new_homework.name = homework.name
+ new_homework.user_id = user.id
+ new_homework.description = homework.description
+ new_homework.homework_type = homework.homework_type
+ new_homework.late_penalty = homework.late_penalty
+ new_homework.course_id = course.id
+ new_homework.teacher_priority = homework.teacher_priority
+ new_homework.anonymous_comment = homework.anonymous_comment
+ new_homework.quotes = 0
+ new_homework.is_open = homework.is_open
+ homework.attachments.each do |attachment|
+ att = attachment.copy
+ att.container_id = nil
+ att.container_type = nil
+ att.copy_from = attachment.id
+ att.save
+ new_homework.attachments << att
+ end
+ homework_detail_manual = homework.homework_detail_manual
+ homework_detail_programing = homework.homework_detail_programing
+ homework_detail_group = homework.homework_detail_group
+ if homework_detail_manual
+ new_homework.homework_detail_manual = HomeworkDetailManual.new
+ new_homework_detail_manual = new_homework.homework_detail_manual
+ new_homework_detail_manual.ta_proportion = homework_detail_manual.ta_proportion
+ new_homework_detail_manual.comment_status = 0
+ new_homework_detail_manual.evaluation_num = homework_detail_manual.evaluation_num
+ new_homework_detail_manual.absence_penalty = homework_detail_manual.absence_penalty
+ end
+ if homework_detail_programing
+ new_homework.homework_detail_programing = HomeworkDetailPrograming.new
+ new_homework.homework_detail_programing.ta_proportion = homework_detail_programing.ta_proportion
+ new_homework.homework_detail_programing.language = homework_detail_programing.language
+ homework.homework_tests.each_with_index do |homework_test|
+ new_homework.homework_tests << HomeworkTest.new(
+ input: homework_test.input,
+ output: homework_test.output
+ )
+ end
+ end
+
+ if homework_detail_group
+ new_homework.homework_detail_group = HomeworkDetailGroup.new
+ new_homework.homework_detail_group.min_num = homework_detail_group.min_num
+ new_homework.homework_detail_group.max_num = homework_detail_group.max_num
+ new_homework.homework_detail_group.base_on_project = homework_detail_group.base_on_project
+ end
+ if new_homework.save
+ new_homework_detail_manual.save if new_homework_detail_manual
+ new_homework.homework_detail_programing.save if new_homework.homework_detail_programing
+ new_homework.homework_detail_group.save if new_homework.homework_detail_group
+ @flag = true
+ else
+ @flag = false
+ @save_message = new_homework.errors.full_messages
+ break
+ end
+ homework.update_column(:quotes, homework.quotes+1)
+ end
+ end
+ [@ori, @flag, @save_message]
+ end
+
+ def send_exercise_to_course user,params
+ # send_id = params[:send_id]
+ # @ori = Attachment.find_by_id(send_id)
+ # course_ids = params[:course_ids]
+ # @flag = false
+ # unless course_ids.nil?
+ # course_ids.each do |id|
+ # next if @ori.blank?
+ # @exist = false
+ # Course.find(id).attachments.each do |att| #如果课程中包含该资源
+ # if att.id == @ori.id || (!att.copy_from.nil? && !@ori.copy_from.nil? && att.copy_from == @ori.copy_from) || att.copy_from == @ori.id || att.id == @ori.copy_from
+ # att.created_on = Time.now
+ # att.save
+ # @exist = true
+ # @flag = true
+ # break
+ # end
+ # end
+ # next if @exist
+ # attach_copied_obj = @ori.copy
+ # attach_copied_obj.tag_list.add(@ori.tag_list) # tag关联
+ # attach_copied_obj.container = Course.find(id)
+ # attach_copied_obj.created_on = Time.now
+ # attach_copied_obj.author_id = user.id
+ # attach_copied_obj.is_public = 0
+ # attach_copied_obj.copy_from = @ori.copy_from.nil? ? @ori.id : @ori.copy_from #发送要添加copy_from
+ # if attach_copied_obj.attachtype == nil
+ # attach_copied_obj.attachtype = 4
+ # end
+ # if attach_copied_obj.save
+ # # 更新引用次数
+ # quotes = @ori.quotes.to_i + 1
+ # @ori.update_attribute(:quotes, quotes) unless @ori.nil?
+ # @ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now)
+ # @flag = true
+ # else
+ # @flag = false
+ # @save_message = attach_copied_obj.errors.full_messages
+ # break
+ # end
+ #
+ # end
+ # end
+
+ [@ori, @flag, @save_message]
+ end
+
# 我的资源-课件 已发布的
def all_course_attachments user
diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html
index c328ed226..2f9af6554 100644
--- a/public/assets/wechat/class.html
+++ b/public/assets/wechat/class.html
@@ -56,5 +56,5 @@
-
+