alan 10 years ago
commit 2caf2ddf30

@ -21,7 +21,8 @@ gem 'acts-as-taggable-on', '2.4.1'
gem 'spreadsheet' gem 'spreadsheet'
gem 'ruby-ole' gem 'ruby-ole'
#gem 'email_verifier', path: 'lib/email_verifier' #gem 'email_verifier', path: 'lib/email_verifier'
gem 'rufus-scheduler'
gem 'dalli', path: 'lib/dalli-2.7.2'
group :development do group :development do
gem 'grape-swagger' gem 'grape-swagger'
gem 'grape-swagger-ui', git: 'https://github.com/guange2015/grape-swagger-ui.git' gem 'grape-swagger-ui', git: 'https://github.com/guange2015/grape-swagger-ui.git'

File diff suppressed because it is too large Load Diff

@ -6,6 +6,7 @@ module Mobile
require_relative 'apis/watches' require_relative 'apis/watches'
require_relative 'apis/upgrade' require_relative 'apis/upgrade'
require_relative 'apis/homeworks' require_relative 'apis/homeworks'
require_relative 'apis/comments'
class API < Grape::API class API < Grape::API
version 'v1', using: :path version 'v1', using: :path
format :json format :json
@ -37,6 +38,7 @@ module Mobile
mount Apis::Watches mount Apis::Watches
mount Apis::Upgrade mount Apis::Upgrade
mount Apis::Homeworks mount Apis::Homeworks
mount Apis::Comments
#add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'}) #add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'})
#add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) if Rails.env.development? #add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) if Rails.env.development?

@ -0,0 +1,79 @@
#coding=utf-8
module Mobile
module Apis
class Comments < Grape::API
resource :comments do
desc '课程通知评论'
params do
requires :token, type: String
requires :comments, type: String
end
post ':id' do
cs = CommentService.new
cs_params = {
id: params[:id],
comment: params.reject{|k,v| [:id].include?(k)}}
comments = cs.news_comments cs_params,current_user
raise "create comments failed #{comments.errors.full_messages}" if comments.new_record?
present :data, comments, with: Mobile::Entities::Comment
present :status, 0
end
desc '作业留言(教师布置的作业)'
params do
requires :token, type: String
requires :message,type: String, desc: '留言'
#optional :reference_content, type: String ,desc: '引用的内容'
#optional :reference_user_id, type: Integer,desc: '被引用的人'
end
post ':id/create_homework_message' do
cs_params = {
id: params[:id],
token: params[:token],
reference_content: params[:reference_content],
bid_message: params.reject{|k,v| [:id,:token,:reference_content].include?(k)}}
cs = CommentService.new
message = cs.homework_message cs_params,current_user
present :data, message, with: Mobile::Entities::Jours
present :status, 0
end
desc '课程留言'
params do
requires :token, type: String
requires :course_message,type: String, desc: '留言'
end
post ':id/leave_course_message' do
cs_params = {
id: params[:id],
token: params[:token],
new_form: params.reject{|k,v| [:id,:token].include?(k)}}
cs = CommentService.new
message = cs.leave_course_message cs_params,current_user
present :data, message, with: Mobile::Entities::Jours
present :status, 0
end
desc '回复留言'
params do
requires :token, type: String
requires :reference_id, type: Integer,desc: '所属留言树的根留言id最顶层的非回复的留言,留言对象中的m_parent_id'
requires :reference_user_id,type: Integer ,desc: '被回复的留言的作者id'
#requires :reference_message_id,type: Integer,desc: '被回复的留言的id'
requires :user_notes,type: String,desc: '留言的内容'
requires :jour_type,type: String,desc: '等于父留言的jour_type'
requires :jour_id,type:Integer, desc: '等于父留言的jour_id'
end
post ':reference_message_id/create_reply'do
cs = CommentService.new
message = cs.create_reply params,current_user
raise "create reply failed #{message.errors.full_messages}" if message.new_record?
present :data, message, with: Mobile::Entities::Jours
present :status, 0
end
end
end
end
end

@ -8,10 +8,11 @@ module Mobile
optional :school_id, type: Integer, desc: '传入学校id,返回该学校课程列表' optional :school_id, type: Integer, desc: '传入学校id,返回该学校课程列表'
requires :per_page_count, type: Integer, desc: '每页总数' requires :per_page_count, type: Integer, desc: '每页总数'
requires :page, type: Integer, desc: '当前页码' requires :page, type: Integer, desc: '当前页码'
optional :token, type: String
end end
get do get do
cs = CoursesService.new cs = CoursesService.new
courses = cs.course_list(params) courses = cs.course_list(params,current_user.nil? ? User.find(2):current_user)
present :data, courses, with: Mobile::Entities::Course present :data, courses, with: Mobile::Entities::Course
present :status, 0 present :status, 0
end end
@ -130,10 +131,11 @@ module Mobile
desc "搜索课程" desc "搜索课程"
params do params do
requires :name, type: String, desc: "课程名" requires :name, type: String, desc: "课程名"
optional :token, type: String
end end
get 'search' do get 'search' do
cs = CoursesService.new cs = CoursesService.new
courses = cs.search_course(params) courses = cs.search_course(params,current_user.nil? ? User.find(2):current_user)
present :data, courses, with: Mobile::Entities::Course present :data, courses, with: Mobile::Entities::Course
present :status, 0 present :status, 0
end end
@ -165,13 +167,15 @@ module Mobile
desc "返回单个课程" desc "返回单个课程"
params do params do
requires :id, type: Integer requires :id, type: Integer
optional :token, type: String
end end
route_param :id do route_param :id do
get do get do
cs = CoursesService.new cs = CoursesService.new
course = cs.show_course(params,(current_user.nil? ? User.find(2):current_user)) course = cs.show_course(params,(current_user.nil? ? User.find(2):current_user))
#course = Course.find(params[:id]) #course = Course.find(params[:id])
{status: 0, data: course} present :data, course, with: Mobile::Entities::Course
present :status, 0
end end
end end
@ -188,17 +192,18 @@ module Mobile
desc "课程通知列表" desc "课程通知列表"
params do params do
optional :token, type: String
end end
get ":course_id/news" do get ":course_id/news" do
cs = CoursesService.new cs = CoursesService.new
news = cs.course_news_list params news = cs.course_news_list params,current_user.nil? ? User.find(2):current_user
present :data, news, with: Mobile::Entities::News present :data, news, with: Mobile::Entities::News
present :status, 0 present :status, 0
end end
desc "显示课程通知" desc "显示课程通知"
params do params do
optional :token, type: String
end end
get "news/:id" do get "news/:id" do
cs = CoursesService.new cs = CoursesService.new
@ -208,6 +213,16 @@ module Mobile
present :status, 0 present :status, 0
end end
desc '用户课程动态'
params do
requires :token, type: String
end
get "course_dynamic/:id" do
cs = CoursesService.new
count = cs.course_dynamic(params,current_user)
present :data, count, with: Mobile::Entities::CourseDynamic
present :status, 0
end
end end
end end

@ -70,6 +70,32 @@ module Mobile
present :status, 0 present :status, 0
end end
desc "作品打分"
params do
requires :token, type: String
requires :is_teacher, type: String,desc: '是否为教师(匿评作品详情返回的结果中可获取此参数的值)'
requires :is_anonymous_comments, type: String, desc: '是否为匿评(匿评作品详情返回的结果中可获取此参数的值)'
optional :stars_value, type: Integer,desc: '用户给出的评分'
optional :cur_page,type: Integer,desc: '匿评作品详情返回的结果中可获取此参数的值'
optional :cur_type, type: Integer,desc: '匿评作品详情返回的结果中可获取此参数的值'
optional :user_message, type: String, desc: '用户评论'
end
post ':homework_id/scoring' do
cs_params = {
new_form: params.reject{|k,v| [:token,:is_teacher,:is_anonymous_comments,:stars_value,:cur_page,:cur_type,:homework_id].include?(k)},
token: params[:token],
is_teacher: params[:is_teacher],
is_anonymous_comments: params[:is_anonymous_comments],
stars_value: params[:stars_value],
cur_page: params[:cur_page],
cur_type: params[:cur_type],
homework_id: params[:homework_id]
}
Homeworks.get_service.add_score_and_jour cs_params,current_user
present :status, 0
end
end end
end end

@ -22,13 +22,15 @@ module Mobile
desc "显示用户" desc "显示用户"
params do params do
requires :id, type: Integer
end end
get ':id' do route_param :id do
us = UsersService.new get do
ue = us.show_user params us = UsersService.new
present :data, ue,with: Mobile::Entities::User ue = us.show_user params
present :status, 0 present :data, ue,with: Mobile::Entities::User
present :status, 0
end
end end
desc "修改用户" desc "修改用户"
@ -77,11 +79,12 @@ module Mobile
present :status, 0 present :status, 0
end end
desc "用户搜索" desc "用户搜索"
params do params do
requires :name, type: String, desc: '用户名关键字' requires :name, type: String, desc: '用户名关键字'
requires :search_by, type: String,desc: '搜索依据0 昵称1 用户名2 邮箱'
end end
get 'search' do get 'search/search_user' do
us = UsersService.new us = UsersService.new
user = us.search_user params user = us.search_user params
present :data, user, with: Mobile::Entities::User present :data, user, with: Mobile::Entities::User

@ -0,0 +1,30 @@
module Mobile
module Entities
class Comment < Grape::Entity
include Redmine::I18n
def self.comment_expose(field)
expose field do |f,opt|
if f.is_a?(Hash) && f.key?(field)
f[field]
elsif f.is_a?(::Comment)
if f.respond_to?(field)
if field == :created_on
format_time(f.send(field))
else
f.send(field)
end
end
end
end
end
comment_expose :id
expose :author, using: Mobile::Entities::User do |c, opt|
if c.is_a? ::Comment
c.author
end
end
comment_expose :comments
comment_expose :created_on
end
end
end

@ -1,6 +1,7 @@
module Mobile module Mobile
module Entities module Entities
class Course < Grape::Entity class Course < Grape::Entity
include Redmine::I18n
def self.course_expose(field) def self.course_expose(field)
expose field do |f,opt| expose field do |f,opt|
c = nil c = nil
@ -9,9 +10,11 @@ module Mobile
else else
c = f[:course] c = f[:course]
end end
if field == :img_url if f.is_a?(Hash) && f.key?(field)
f[field] if f.is_a?(Hash) && f.key?(field) f[field] if f.is_a?(Hash) && f.key?(field)
#f.img_url if f.respond_to?(:img_url) #f.img_url if f.respond_to?(:img_url)
elsif field == :created_at || field == :updated_at
(format_time(c[field]) if (c.is_a?(Hash) && c.key?(field))) || (format_time(c.send(field)) if c.respond_to?(field))
else else
(c[field] if (c.is_a?(Hash) && c.key?(field))) || (c.send(field) if c.respond_to?(field)) (c[field] if (c.is_a?(Hash) && c.key?(field))) || (c.send(field) if c.respond_to?(field))
end end
@ -53,6 +56,8 @@ module Mobile
expose :my_homework,using: Mobile::Entities::HomeworkAttach do |f, opt| expose :my_homework,using: Mobile::Entities::HomeworkAttach do |f, opt|
f[:my_homework] if f.is_a?(Hash) && f.key?(:my_homework) f[:my_homework] if f.is_a?(Hash) && f.key?(:my_homework)
end end
course_expose :current_user_is_member
course_expose :current_user_is_teacher
end end
end end
end end

@ -0,0 +1,16 @@
module Mobile
module Entities
class CourseDynamic < Grape::Entity
def self.course_dynamic_expose(field)
expose field do |c,opt|
c[field] if (c.is_a?(Hash) && c.key?(field))
end
end
course_dynamic_expose :type
course_dynamic_expose :count
course_dynamic_expose :course_name
course_dynamic_expose :course_id
course_dynamic_expose :course_img_url
end
end
end

@ -18,8 +18,14 @@ module Mobile
homework_expose :id homework_expose :id
#课程名称 #课程名称
homework_expose :course_name homework_expose :course_name
#课程老师 #作业发布者
homework_expose :course_teacher expose :author,using: Mobile::Entities::User do |f, opt|
f[:author]
end
#作业发布者真名
homework_expose :author_real_name
#作业次数 #作业次数
homework_expose :homework_times homework_expose :homework_times
#作业名称 #作业名称

@ -17,6 +17,8 @@ module Mobile
case field case field
when :homework_times 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?) f.bid.courses.first.homeworks.index(f.bid) + 1 unless (f.bid.nil? || f.bid.courses.nil? || f.bid.courses.first.nil?)
when :comment_status
f.bid.comment_status
end end
end end
end end
@ -28,6 +30,8 @@ module Mobile
homework_attach_expose :homework_times homework_attach_expose :homework_times
homework_attach_expose :description homework_attach_expose :description
homework_attach_expose :created_at homework_attach_expose :created_at
#comment_status 0:所属作业尚未开启匿评1匿评中 2匿评结束
homework_attach_expose :comment_status
expose :attachments,using: Mobile::Entities::Attachment do |f, opt| expose :attachments,using: Mobile::Entities::Attachment do |f, opt|
if f.respond_to?(:attachments) if f.respond_to?(:attachments)
f.send(:attachments) f.send(:attachments)

@ -6,7 +6,11 @@ module Mobile
def self.homework_jours_expose(field) def self.homework_jours_expose(field)
expose field do |f,opt| expose field do |f,opt|
if f.is_a?(Hash) && f.key?(field) if f.is_a?(Hash) && f.key?(field)
f[field] if field == :created_at
format_time(f[field])
else
f[field]
end
elsif f.is_a?(::SeemsRateableRates) elsif f.is_a?(::SeemsRateableRates)
end end

@ -18,12 +18,15 @@ module Mobile
end end
end end
jours_expose :id jours_expose :id
jours_expose :jour_type
jours_expose :jour_id
expose :user,using: Mobile::Entities::User do |f, opt| expose :user,using: Mobile::Entities::User do |f, opt|
f.user f.user
end end
jours_expose :created_on jours_expose :created_on
jours_expose :notes jours_expose :notes
jours_expose :m_reply_id jours_expose :m_reply_id
jours_expose :m_parent_id
expose :reply_user,using: Mobile::Entities::User do |f, opt| expose :reply_user,using: Mobile::Entities::User do |f, opt|
f.at_user f.at_user
end end

@ -1,6 +1,7 @@
module Mobile module Mobile
module Entities module Entities
class News < Grape::Entity class News < Grape::Entity
include Redmine::I18n
def self.news_expose(field) def self.news_expose(field)
expose field do |f,opt| expose field do |f,opt|
if f.is_a?(Hash) && f.key?(field) if f.is_a?(Hash) && f.key?(field)
@ -9,13 +10,18 @@ module Mobile
n = f[:news] n = f[:news]
comments = f[:comments] comments = f[:comments]
if n.is_a?(::News) if n.is_a?(::News)
n.send(field) if n.respond_to?(field) if field == :created_on
format_time(n.send(field)) if n.respond_to?(field)
else
n.send(field) if n.respond_to?(field)
end
end end
end end
end end
end end
news_expose :id
#新闻标题 #新闻标题
news_expose :title news_expose :title
@ -34,7 +40,11 @@ module Mobile
#评论数量 #评论数量
news_expose :comments_count news_expose :comments_count
#评论 #评论
news_expose :comments expose :comments, using: Mobile::Entities::Comment do |f, opt|
if f.is_a?(Hash) && f.key?(:comments)
f[:comments]
end
end
end end

@ -315,7 +315,7 @@ class AccountController < ApplicationController
code = /\d*/ code = /\d*/
#根据home_url生产正则表达式 #根据home_url生产正则表达式
eval("code = " + "/^" + home_url.gsub(/\//,"\\\/") + "\\\/*(welcome)?\\\/*(\\\/index\\\/*.*)?\$/") eval("code = " + "/^" + home_url.gsub(/\//,"\\\/") + "\\\/*(welcome)?\\\/*(\\\/index\\\/*.*)?\$/")
if code=~params[:back_url] && last_login_on != '' if (code=~params[:back_url] || params[:back_url].to_s.include?('lost_password')) && last_login_on != ''
redirect_to user_activities_path(user) redirect_to user_activities_path(user)
else else
if last_login_on == '' if last_login_on == ''

@ -9,7 +9,7 @@ class BidsController < ApplicationController
menu_item :homework_statistics, :only => :homework_statistics menu_item :homework_statistics, :only => :homework_statistics
menu_item :edit, :only => :edit menu_item :edit, :only => :edit
before_filter :auth_login1, :only => [:show_courseEx]
before_filter :can_show_course,only: [] before_filter :can_show_course,only: []
before_filter :can_show_contest,only: [] before_filter :can_show_contest,only: []

@ -5,6 +5,7 @@ class CoursesController < ApplicationController
helper :members helper :members
helper :words helper :words
before_filter :auth_login1, :only => [:show, :feedback]
menu_item :overview menu_item :overview
menu_item :feedback, :only => :feedback menu_item :feedback, :only => :feedback
menu_item :homework, :only => :homework menu_item :homework, :only => :homework
@ -98,7 +99,8 @@ class CoursesController < ApplicationController
#更新课程信息 #更新课程信息
def update def update
cs = CoursesService.new cs = CoursesService.new
@course = cs.edit_course params,@course,User.current c = cs.edit_course params,@course,User.current
@course = c[:course]
if @course.errors.full_messages.count <= 0 if @course.errors.full_messages.count <= 0
respond_to do |format| respond_to do |format|
format.html { format.html {
@ -498,7 +500,7 @@ class CoursesController < ApplicationController
def create def create
cs = CoursesService.new cs = CoursesService.new
@course = cs.create_course params,User.current @course = cs.create_course(params,User.current)[:course]
if @course.new_record? if @course.new_record?
respond_to do |format| respond_to do |format|
format.html { render :action => 'new', :layout => 'base' } #Added by young format.html { render :action => 'new', :layout => 'base' } #Added by young
@ -955,10 +957,34 @@ class CoursesController < ApplicationController
else else
render_403 render_403
end end
end end
#根据已有课程复制课程
#param id:已有课程ID
def copy_course
if @course
@new_course = Course.new @course.attributes
@new_course.tea_id = User.current.id
@new_course.created_at = DateTime.now
@new_course.updated_at = DateTime.now
@new_course.endup_time = nil
if @new_course.save
r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first
m = Member.new(:user => User.current, :roles => [r])
m.project_id = -1
course = CourseInfos.new(:user_id => User.current.id, :course_id => @new_course.id)
#user_grades = UserGrade.create(:user_id => User.current.id, :course_id => @course.id)
if @new_course.is_public == 1
course_status = CourseStatus.create(:course_id => @new_course.id, :watchers_count => 0, :changesets_count => 0, :grade => 0, :course_type => 1)
end
@new_course.members << m
@new_course.course_infos << course
redirect_to settings_course_url @new_course
end
else
render_404
end
end
private private

@ -20,7 +20,7 @@ class FilesController < ApplicationController
layout 'base_projects' #by young layout 'base_projects' #by young
menu_item :files menu_item :files
before_filter :auth_login1, :only => [:index]
before_filter :find_project_by_project_id#, :except => [:getattachtype] before_filter :find_project_by_project_id#, :except => [:getattachtype]
before_filter :authorize, :except => [:getattachtype,:quote_resource_show,:search] before_filter :authorize, :except => [:getattachtype,:quote_resource_show,:search]

@ -17,6 +17,7 @@
class MessagesController < ApplicationController class MessagesController < ApplicationController
include ApplicationHelper include ApplicationHelper
before_filter :authorize1, :only => [:show]
menu_item :boards menu_item :boards
default_search_scope :messages default_search_scope :messages
before_filter :find_board, :only => [:new, :preview,:edit] before_filter :find_board, :only => [:new, :preview,:edit]

@ -17,6 +17,7 @@
class NewsController < ApplicationController class NewsController < ApplicationController
layout 'base_projects'# by young layout 'base_projects'# by young
before_filter :authorize1, :only => [:show]
default_search_scope :news default_search_scope :news
model_object News model_object News
before_filter :find_model_object, :except => [:new, :create, :index] before_filter :find_model_object, :except => [:new, :create, :index]

@ -19,12 +19,13 @@
# Description 封装代码,简化代码,格式化代码, # Description 封装代码,简化代码,格式化代码,
class ProjectsController < ApplicationController class ProjectsController < ApplicationController
layout :select_project_layout layout :select_project_layout
before_filter :authorize1, :only => [:show]
menu_item :overview menu_item :overview, :only => :show
menu_item :roadmap, :only => :roadmap menu_item :roadmap, :only => :roadmap
menu_item :settings, :only => :settings menu_item :settings, :only => :settings
menu_item :homework, :only => [:homework, :new_homework] menu_item :homework, :only => [:homework, :new_homework]
menu_item :feedback, :only => :feedback menu_item :feedback, :only => :feedback
menu_item :share, :only => :share
before_filter :find_project, :except => [ :index, :search,:list, :new, :create, :copy, :statistics, :new_join, before_filter :find_project, :except => [ :index, :search,:list, :new, :create, :copy, :statistics, :new_join,
:course, :enterprise_course, :course_enterprise,:view_homework_attaches] :course, :enterprise_course, :course_enterprise,:view_homework_attaches]
@ -248,6 +249,17 @@ class ProjectsController < ApplicationController
# Description 项目动态展示方法,删除了不必要的代码 # Description 项目动态展示方法,删除了不必要的代码
def show def show
# 试图跳转到请求的按钮 # 试图跳转到请求的按钮
if params[:login]
login = params[:login]
login = login.sub(/%40/,'@')
mail = params[:login]
password = params[:password]
us = UsersService.new
user = us.register_auto(login,mail, password)
Member.create(:role_ids => [4], :user_id => user.id,:project_id => @project.id)
UserGrade.create(:user_id => user.id, :project_id => @project.id)
User.current = user unless User.current.nil?
end
if params[:jump] && redirect_to_project_menu_item(@project, params[:jump]) if params[:jump] && redirect_to_project_menu_item(@project, params[:jump])
return return
end end

@ -18,7 +18,7 @@ class UsersController < ApplicationController
layout :setting_layout layout :setting_layout
#Added by young #Added by young
before_filter :auth_login1, :only => [:show, :user_activities] before_filter :auth_login1, :only => [:show, :user_activities, :user_newfeedback]
menu_item :activity menu_item :activity
menu_item :user_information, :only => :info menu_item :user_information, :only => :info
menu_item :user_course, :only => :user_courses menu_item :user_course, :only => :user_courses

@ -25,22 +25,30 @@ class WelcomeController < ApplicationController
before_filter :entry_select, :only => [:index] before_filter :entry_select, :only => [:index]
def index def index
unless params[:project].nil? # 企业版定制: params[:project]为传过来的参数
@cur_projects = Project.find(params[:project]) unless params[:organization].nil?
@organization = @cur_projects.enterprise_name @cur_projects = Project.find(params[:organization])
@organization_projects = Project.find_by_sql(["select * from projects where enterprise_name =? ", @organization]) @organization = @cur_projects.enterprise_name
@organization_projects = (current_user.admin? || User.current.member_of?(@cur_projects)) ? Project.where("enterprise_name =? ", @organization) : Project.all_public.where("enterprise_name =? ", @organization)
@e_count = @organization_projects.count @e_count = @organization_projects.count
@part_projects = []
# 取十个
@organization_projects.each do |obj|
break if(@organization_projects[10] == obj)
@part_projects << Project.visible.find_by_id("#{obj.id}") unless obj.id.nil?
end
# 不够十个的用最火项目替代
@e_count < 9 ? @part_projects = find_miracle_project( 9 - @e_count, 3,"score desc") : @part_projects
# 配置文件首页定制
@enterprise_page = FirstPage.find_by_page_type('enterprise') @enterprise_page = FirstPage.find_by_page_type('enterprise')
if @enterprise_page.nil? if @enterprise_page.nil?
@enterprise_page = FirstPage.new @enterprise_page = FirstPage.new
@enterprise_page.page_type = 'enterprise' @enterprise_page.page_type = 'enterprise'
end end
if @e_count < 9 # 主页配置部分结束
part_count = 9 - @e_count
# @part_projects = find_all_hot_project part_count, order
@part_projects = find_miracle_project(part_count, 3,"score desc")
end
end end
# end 企业版定制结束
if @first_page.nil? || @first_page.sort_type.nil? if @first_page.nil? || @first_page.sort_type.nil?
@projects = find_miracle_project(10, 3,"score desc") @projects = find_miracle_project(10, 3,"score desc")
else else

@ -37,4 +37,27 @@ module ApiHelper
end end
result result
end end
#########################################################
#sw
#获取课程未匿评数量
#param: user => "用户", course_id => "查询的课程ID"
#return: 作业的数量
#########################################################
def get_course_anonymous_evaluation user,course
count = 0
if course
is_teacher = is_course_teacher user,course
if is_teacher #如果是老师,显示学生提交的作业数
course.homeworks.each do |bid|
count += bid.homeworks.count
end
else #如果是学生,显示未匿评的数量
course.homeworks.each do |bid|
count += get_student_not_batch_homework_list bid,user
end
end
end
[count,is_teacher]
end
end end

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save