diff --git a/app/api/mobile/apis/homeworks.rb b/app/api/mobile/apis/homeworks.rb index 49f3efde6..b1e38ad22 100644 --- a/app/api/mobile/apis/homeworks.rb +++ b/app/api/mobile/apis/homeworks.rb @@ -20,8 +20,18 @@ module Mobile present :status, 0 end end - end + desc "我的作品列表" + params do + requires :token, type: String + end + get ':user_id/homework_attachs' do + ue = Homeworks.get_service.my_homework_list params,current_user.nil? ? User.find(2):current_user + present :data, ue,with: Mobile::Entities::Course + present :status, 0 + end + + end end end end diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 878748793..69260716e 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -51,7 +51,7 @@ module Mobile desc '获取用户课程' params do - + optional :token, type: String end get ':id/courses' do diff --git a/app/api/mobile/entities/course.rb b/app/api/mobile/entities/course.rb index ffae1db1f..ec00579ce 100644 --- a/app/api/mobile/entities/course.rb +++ b/app/api/mobile/entities/course.rb @@ -50,6 +50,9 @@ module Mobile c[:course].teacher end end + expose :my_homework,using: Mobile::Entities::HomeworkAttach do |f, opt| + f[:my_homework] if f.is_a?(Hash) && f.key?(:my_homework) + end end end end diff --git a/app/api/mobile/entities/homework.rb b/app/api/mobile/entities/homework.rb index 4eb6bbfdf..ae3637106 100644 --- a/app/api/mobile/entities/homework.rb +++ b/app/api/mobile/entities/homework.rb @@ -5,6 +5,12 @@ module Mobile expose field do |f,opt| if f.is_a?(Hash) && f.key?(field) f[field] + elsif f.is_a?(::Bid) + if f.respond_to?(field) + f.send(field) + else + + end end end end diff --git a/app/api/mobile/entities/homework_attach.rb b/app/api/mobile/entities/homework_attach.rb new file mode 100644 index 000000000..8fa7a1dd1 --- /dev/null +++ b/app/api/mobile/entities/homework_attach.rb @@ -0,0 +1,28 @@ +module Mobile + module Entities + class HomeworkAttach < Grape::Entity + def self.homework_attach_expose(field) + expose field do |f,opt| + if f.is_a?(Hash) && f.key?(field) + f[field] + elsif f.is_a?(::HomeworkAttach) + if f.respond_to?(field) + f.send(field) + else + case field + when :homework_times + f.bid.courses.first.homeworks.index(f.bid) + 1 unless (f.bid.nil? || f.bid.courses.nil? || f.bid.courses.first.nil?) + #course.homeworks.index(@bid) + 1 + end + end + end + end + end + + homework_attach_expose :id + homework_attach_expose :name + homework_attach_expose :homework_times + #homework_attach_expose :user + end + end +end \ No newline at end of file diff --git a/app/services/homework_service.rb b/app/services/homework_service.rb index acbaf475d..871ae9801 100644 --- a/app/services/homework_service.rb +++ b/app/services/homework_service.rb @@ -153,4 +153,29 @@ class HomeworkService reply_time = fulr.created_on end end + + #我的作品列表 + def my_homework_list params,current_user + @user = User.find(params[:user_id]) + if !current_user.admin? && !@user.active? + raise '404' + return + end + if current_user == @user || current_user.admin? + membership = @user.coursememberships.all + else + membership = @user.coursememberships.all(:conditions => Course.visible_condition(current_user)) + end + membership.sort! {|older, newer| newer.created_on <=> older.created_on } + course_list = [] + membership.each do |mp| + my_homeworks = [] + mp.course.homeworks.each do |bid| + hw = bid.homeworks.where("user_id = #{current_user.id}") + my_homeworks << hw[0] unless (hw.nil? || hw[0].nil?) + end + course_list << {:course => mp.course,:img_url => url_to_avatar(mp.course),:my_homework => my_homeworks} + end + course_list + end end \ No newline at end of file diff --git a/app/services/users_service.rb b/app/services/users_service.rb index ab2ee23c5..897171b55 100644 --- a/app/services/users_service.rb +++ b/app/services/users_service.rb @@ -129,7 +129,7 @@ class UsersService if current_user == @user || current_user.admin? membership = @user.coursememberships.all else - membership = @user.coursememberships.all(:conditions => Course.visible_condition(User.current)) + membership = @user.coursememberships.all(:conditions => Course.visible_condition(current_user)) end membership.sort! {|older, newer| newer.created_on <=> older.created_on } course_list = []