重构排序代码
This commit is contained in:
parent
f8f5ed3f9a
commit
c6f657ed8c
|
@ -123,118 +123,26 @@ class ProjectsController < ApplicationController
|
||||||
|
|
||||||
def index
|
def index
|
||||||
#Modified by nie
|
#Modified by nie
|
||||||
# @offset, @limit = api_offset_and_limit({:limit => 10})
|
|
||||||
# @project_count = Project.visible.count
|
|
||||||
# @project_pages = Paginator.new @project_count, @limit, params['page']
|
|
||||||
# @offset ||= @project_pages.offset
|
|
||||||
# @projects = Project.visible.offset(@offset).limit(@limit).order('lft').all
|
|
||||||
@project_type = params[:project_type]
|
@project_type = params[:project_type]
|
||||||
|
@limit = 10
|
||||||
|
@project_count = Project.visible.where("project_type = ?", 0).count
|
||||||
@offset, @limit = api_offset_and_limit({:limit => 10})
|
|
||||||
@projects_status = ProjectStatus.visible.where("project_statuses.project_type <> ? or project_statuses.project_type is null", 1)
|
|
||||||
# @projects_status = ProjectStatus.visible
|
|
||||||
# @projects_status.each do |project|
|
|
||||||
# if Project.visible.find_by_id("#{project.project_id}")
|
|
||||||
# project.project_type = Project.visible.find_by_id("#{project.project_id}").project_type
|
|
||||||
# project.save
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
# @projects.each do |project|
|
|
||||||
# @admin = project.users_by_role[Role.find(3)]
|
|
||||||
# unless @admin.nil?
|
|
||||||
# @admin.each do |user|
|
|
||||||
# ProjectInfo.create(:user_id => user.id, :project_id => project.id)
|
|
||||||
# end
|
|
||||||
#
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
# @projects = Project.where("project_type <> ? or project_type is null", 1)
|
|
||||||
# @projects.each do |project|
|
|
||||||
# @id = project.id
|
|
||||||
# @users = Member.find_by_sql("SELECT
|
|
||||||
# members.user_id
|
|
||||||
# FROM members
|
|
||||||
# INNER JOIN users
|
|
||||||
# ON members.user_id = users.id
|
|
||||||
# WHERE members.project_id = #{@id}
|
|
||||||
# AND (users.type = 'User' AND users.status = 1);")
|
|
||||||
# @users.each do |user|
|
|
||||||
# UserGrade.create(:project_id => project.id, :user_id => user.user_id)
|
|
||||||
# end
|
|
||||||
# #ProjectStatus.create(:changesets_count => project.changesets.count, :project_id => project.id, :watchers_count => project.watcher_users.count)
|
|
||||||
# end
|
|
||||||
# @projects_status = Project.visible.like(params[:name]) if params[:name].present?
|
|
||||||
@project_count = @projects_status.count
|
|
||||||
@project_pages = Paginator.new @project_count, @limit, params['page']
|
@project_pages = Paginator.new @project_count, @limit, params['page']
|
||||||
|
|
||||||
@offset ||= @project_pages.reverse_offset
|
|
||||||
|
|
||||||
# @projects = @projects.offset(@offset).limit(@limit).order('created_on DESC').all
|
|
||||||
if params[:project_sort_type].present?
|
if params[:project_sort_type].present?
|
||||||
case params[:project_sort_type]
|
case params[:project_sort_type]
|
||||||
when '0'
|
when '0'
|
||||||
@offset ||= @project_pages.reverse_offset
|
@projects = @projects = Project.visible.where("project_type = ?", 0).order("created_on desc").offset(@project_pages.offset).limit(@limit).all
|
||||||
unless @offset == 0
|
|
||||||
@projects_status = @projects_status.joins(:project).reorder("projects.created_on").offset(@offset).limit(@limit).all.reverse
|
|
||||||
else
|
|
||||||
limit = @project_count % @limit
|
|
||||||
if limit == 0
|
|
||||||
limit = @limit
|
|
||||||
end
|
|
||||||
@projects_status = @projects_status.joins(:project).reorder("projects.created_on").offset(@offset).limit(@limit).all.reverse
|
|
||||||
end
|
|
||||||
@s_type = 0
|
@s_type = 0
|
||||||
# @projects = @projects.sort {|x,y| y.created_on <=> x.created_on }
|
|
||||||
# @projects = @projects[@offset, @limit]
|
|
||||||
when '1'
|
when '1'
|
||||||
@offset ||= @project_pages.reverse_offset
|
@projects = sort_project_demo project_type = 0, order_by="grade desc", @project_pages.offset, @limit
|
||||||
unless @offset == 0
|
|
||||||
@projects_status = @projects_status.reorder('grade').offset(@offset).limit(@limit).all.reverse
|
|
||||||
else
|
|
||||||
limit = @project_count % @limit
|
|
||||||
if limit == 0
|
|
||||||
limit = @limit
|
|
||||||
end
|
|
||||||
@projects_status = @projects_status.reorder('grade').offset(@offset).limit(limit).all.reverse
|
|
||||||
end
|
|
||||||
@s_type = 1
|
@s_type = 1
|
||||||
|
|
||||||
#@projects = @projects[@offset, @limit]
|
|
||||||
when '2'
|
when '2'
|
||||||
@offset ||= @project_pages.reverse_offset
|
@projects = sort_project_demo project_type = 0, order_by="watchers_count desc", @project_pages.offset, @limit
|
||||||
unless @offset == 0
|
|
||||||
@projects_status = @projects_status.reorder('watchers_count').offset(@offset).limit(@limit).all.reverse
|
|
||||||
else
|
|
||||||
limit = @project_count % @limit
|
|
||||||
if limit == 0
|
|
||||||
limit = @limit
|
|
||||||
end
|
|
||||||
@projects_status = @projects_status.reorder('watchers_count').offset(@offset).limit(limit).all.reverse
|
|
||||||
end
|
|
||||||
@s_type = 2
|
@s_type = 2
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@offset ||= @project_pages.reverse_offset
|
@projects = sort_project_demo project_type = 0, order_by="grade desc", @project_pages.offset, @limit
|
||||||
unless @offset == 0
|
|
||||||
@projects_status = @projects_status.reorder('grade').offset(@offset).limit(@limit).all.reverse
|
|
||||||
else
|
|
||||||
limit = @project_count % @limit
|
|
||||||
if limit == 0
|
|
||||||
limit = @limit
|
|
||||||
end
|
|
||||||
@projects_status = @projects_status.reorder('grade').offset(@offset).limit(limit).all.reverse
|
|
||||||
end
|
|
||||||
@s_type = 1
|
@s_type = 1
|
||||||
# @projects = @projects.sort {|x,y| y.created_on <=> x.created_on }
|
|
||||||
# @projects = @projects[@offset, @limit]
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@projects = []
|
|
||||||
@projects_status.each do |obj|
|
|
||||||
@projects << Project.visible.find_by_id("#{obj.project_id}") unless Project.visible.find_by_id("#{obj.project_id}").nil?
|
|
||||||
end
|
|
||||||
#end
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html {
|
format.html {
|
||||||
render :layout => 'base'
|
render :layout => 'base'
|
||||||
|
@ -256,99 +164,28 @@ class ProjectsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def course
|
def course
|
||||||
#Modified by nie
|
|
||||||
# @offset, @limit = api_offset_and_limit({:limit => 10})
|
|
||||||
# @project_count = Project.visible.count
|
|
||||||
# @project_pages = Paginator.new @project_count, @limit, params['page']
|
|
||||||
# @offset ||= @project_pages.offset
|
|
||||||
# @projects = Project.visible.offset(@offset).limit(@limit).order('lft').all
|
|
||||||
@project_type = params[:project_type]
|
@project_type = params[:project_type]
|
||||||
|
@limit = 10;
|
||||||
@offset, @limit = api_offset_and_limit({:limit => 10})
|
@project_count = Project.visible.where("project_type = 1").count
|
||||||
@projects_status = ProjectStatus.visible.where("project_type = ?", 1)
|
|
||||||
# @projects.each do |project|
|
|
||||||
# @admin = project.users_by_role[Role.find(3)]
|
|
||||||
# unless @admin.nil?
|
|
||||||
# @admin.each do |user|
|
|
||||||
# ProjectInfo.create(:user_id => user.id, :project_id => project.id)
|
|
||||||
# end
|
|
||||||
#
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
# @projects.each do |project|
|
|
||||||
# ProjectStatus.create(:changesets_count => project.changesets.count, :project_id => project.id, :watchers_count => project.watcher_users.count)
|
|
||||||
# end
|
|
||||||
#@projects_status = Project.visible.like(params[:name]) if params[:name].present?
|
|
||||||
@project_count = @projects_status.count
|
|
||||||
@project_pages = Paginator.new @project_count, @limit, params['page']
|
@project_pages = Paginator.new @project_count, @limit, params['page']
|
||||||
|
|
||||||
@offset ||= @project_pages.reverse_offset
|
|
||||||
|
|
||||||
#@projects = @projects.offset(@offset).limit(@limit).order('created_on DESC').all
|
|
||||||
if params[:project_sort_type].present?
|
if params[:project_sort_type].present?
|
||||||
case params[:project_sort_type]
|
case params[:project_sort_type]
|
||||||
when '0'
|
when '0'
|
||||||
@offset ||= @project_pages.reverse_offset
|
@projects = Project.visible.where("project_type = ?", 1).order("created_on desc").offset(@project_pages.offset).limit(@limit).all
|
||||||
unless @offset == 0
|
|
||||||
@projects_status = @projects_status.offset(@offset).limit(@limit).all.reverse
|
|
||||||
else
|
|
||||||
limit = @project_count % @limit
|
|
||||||
if limit == 0
|
|
||||||
limit = @limit
|
|
||||||
end
|
|
||||||
@projects_status = @projects_status.offset(@offset).limit(limit).all.reverse
|
|
||||||
end
|
|
||||||
@s_type = 0
|
@s_type = 0
|
||||||
# @projects = @projects.sort {|x,y| y.created_on <=> x.created_on }
|
|
||||||
# @projects = @projects[@offset, @limit]
|
|
||||||
when '1'
|
when '1'
|
||||||
@offset ||= @project_pages.reverse_offset
|
@projects = sort_project_demo 1, "course_ac_para desc", @project_pages.offset, @limit
|
||||||
unless @offset == 0
|
|
||||||
@projects_status = @projects_status.reorder('course_ac_para').offset(@offset).limit(@limit).all.reverse
|
|
||||||
else
|
|
||||||
limit = @project_count % @limit
|
|
||||||
if limit == 0
|
|
||||||
limit = @limit
|
|
||||||
end
|
|
||||||
@projects_status = @projects_status.reorder('course_ac_para').offset(@offset).limit(limit).all.reverse
|
|
||||||
end
|
|
||||||
@s_type = 1
|
@s_type = 1
|
||||||
|
|
||||||
#@projects = @projects[@offset, @limit]
|
|
||||||
when '2'
|
when '2'
|
||||||
@offset ||= @project_pages.reverse_offset
|
@projects = sort_project_demo 1, "watchers_count desc", @project_pages.offset, @limit
|
||||||
unless @offset == 0
|
|
||||||
@projects_status = @projects_status.reorder('watchers_count').offset(@offset).limit(@limit).all.reverse
|
|
||||||
else
|
|
||||||
limit = @project_count % @limit
|
|
||||||
if limit == 0
|
|
||||||
limit = @limit
|
|
||||||
end
|
|
||||||
@projects_status = @projects_status.reorder('watchers_count').offset(@offset).limit(limit).all.reverse
|
|
||||||
end
|
|
||||||
@s_type = 2
|
@s_type = 2
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@offset ||= @project_pages.reverse_offset
|
logger.debug("-------------------------------------------------")
|
||||||
unless @offset == 0
|
@projects = Project.visible.where("project_type = ?", 1).order("created_on desc").offset(@project_pages.offset).limit(@limit).all
|
||||||
@projects_status = @projects_status.offset(@offset).limit(@limit).all.reverse
|
logger.debug("-------------------------------------------------")
|
||||||
else
|
@s_type = 0
|
||||||
limit = @project_count % @limit
|
|
||||||
if limit == 0
|
|
||||||
limit = @limit
|
|
||||||
end
|
|
||||||
@projects_status = @projects_status.offset(@offset).limit(limit).all.reverse
|
|
||||||
end
|
|
||||||
@s_type = 0
|
|
||||||
# @projects = @projects.sort {|x,y| y.created_on <=> x.created_on }
|
|
||||||
# @projects = @projects[@offset, @limit]
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@projects = []
|
|
||||||
@projects_status.each do |obj|
|
|
||||||
@projects << Project.visible.find_by_id("#{obj.project_id}") unless Project.visible.find_by_id("#{obj.project_id}").nil?
|
|
||||||
end
|
|
||||||
#end
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html {
|
format.html {
|
||||||
render :layout => 'base'
|
render :layout => 'base'
|
||||||
|
@ -369,6 +206,15 @@ class ProjectsController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def sort_project_demo project_type, order_by, offset, limit
|
||||||
|
#Project.visible.joins(:project_status).where("#{Project.table_name}.project_type = ?", project_type).order(order_by).offset(offset).limit(limit).all
|
||||||
|
Project.visible.find_by_sql("
|
||||||
|
SELECT *
|
||||||
|
FROM projects AS p RIGHT OUTER JOIN (
|
||||||
|
SELECT project_id,grade FROM project_statuses
|
||||||
|
WHERE project_type = #{project_type} ORDER BY #{order_by} LIMIT #{limit} OFFSET #{offset}) AS t ON p.id = t.project_id ")
|
||||||
|
end
|
||||||
|
|
||||||
def search
|
def search
|
||||||
#modified by nie
|
#modified by nie
|
||||||
@projects = Project.visible
|
@projects = Project.visible
|
||||||
|
|
|
@ -159,12 +159,12 @@ module WelcomeHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def sort_project_by_hot_rails project_type=0, order_by='grade DESC', limit=15
|
def sort_project_by_hot_rails project_type=0, order_by='grade DESC', limit=15
|
||||||
# Project.find_by_sql("
|
# Project.find_by_sql("
|
||||||
# SELECT p.id, p.name, p.description, p.identifier, t.project_id
|
# SELECT p.id, p.name, p.description, p.identifier, t.project_id
|
||||||
# FROM projects AS p RIGHT OUTER JOIN (
|
# FROM projects AS p LEFT OUTER JOIN (
|
||||||
# SELECT project_id,grade FROM project_statuses
|
# SELECT project_id,grade FROM project_statuses
|
||||||
# WHERE project_type = #{project_type} ORDER BY #{order_by} LIMIT #{limit} ) AS t ON p.id = t.project_id ")
|
# WHERE project_type = #{project_type} ORDER BY #{order_by} LIMIT #{limit} ) AS t ON p.id = t.project_id ")
|
||||||
Project.joins(:project_status).where("#{Project.table_name}.project_type = ?", project_type).order(order_by).limit(limit).all
|
Project.visible.joins(:project_status).where("#{Project.table_name}.project_type = ?", project_type).order(order_by).limit(limit).all
|
||||||
end
|
end
|
||||||
|
|
||||||
def sort_bid_by_hot_rails reward_type, limit = 10
|
def sort_bid_by_hot_rails reward_type, limit = 10
|
||||||
|
|
|
@ -1105,4 +1105,6 @@ class Project < ActiveRecord::Base
|
||||||
logger.error "[Project Model] ===> Auto create board when project saved, because #{@board.full_messages}"
|
logger.error "[Project Model] ===> Auto create board when project saved, because #{@board.full_messages}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue