forked from Gitlink/forgeplus
fixed 竞赛bmfile导出
This commit is contained in:
parent
f9ce7e27cc
commit
4d9e36a683
|
@ -215,8 +215,11 @@ class CompetitionInfosController < ApplicationController
|
|||
end
|
||||
|
||||
def enroll_template
|
||||
file_attr_name = params[:file].to_s == "bm_file_id" ? params[:file].to_s : "enroll_template_id"
|
||||
competition_users = CompetitionUser.where(competition_info: @competition_info.id).order("updated_at desc")
|
||||
competition_users = competition_users.where(status: [1, 2, 3]).where("competition_users.enroll_template_id is not null")
|
||||
competition_users = competition_users.where(status: [1, 2, 3])
|
||||
competition_users = competition_users.where("competition_users.enroll_template_id is not null") if file_attr_name.to_s == "enroll_template_id"
|
||||
competition_users = competition_users.where("competition_users.bm_file_id is not null") if file_attr_name.to_s == "bm_file_id"
|
||||
zones = @competition_info.manager_zones(current_user)
|
||||
if params[:zone].present?
|
||||
competition_users = zones.include?(params[:zone].to_s) ? competition_users.where(zone: params[:zone].to_s) : competition_users.where(zone: [])
|
||||
|
@ -233,7 +236,7 @@ class CompetitionInfosController < ApplicationController
|
|||
format.json
|
||||
format.zip {
|
||||
Rails.logger.info("######_______________########competition_users.size: #{competition_users.size}")
|
||||
service = Competition::ZipEnrollTemplateService.new(competition_users, "files")
|
||||
service = Competition::ZipEnrollTemplateService.new(competition_users, "files", file_attr_name)
|
||||
send_file service.zip, filename: service.filename, type: 'application/zip'
|
||||
}
|
||||
end
|
||||
|
|
|
@ -3,15 +3,16 @@ require 'zip'
|
|||
|
||||
class Competition::ZipEnrollTemplateService
|
||||
|
||||
attr_reader :competition_users, :path
|
||||
attr_reader :competition_users, :path, :file_attr_name
|
||||
|
||||
def initialize(competition_users, path)
|
||||
def initialize(competition_users, path, file_attr_name=nil)
|
||||
@competition_users = competition_users
|
||||
@path = path
|
||||
@file_attr_name = file_attr_name
|
||||
end
|
||||
|
||||
def filename
|
||||
export_name = "报名资料-#{Time.now.strftime('%Y%m%d%H%M%S')}"
|
||||
export_name = @file_attr_name == "bm_file_id" ? "bm审查文件-#{Time.now.strftime('%Y%m%d%H%M%S')}" : "报名资料-#{Time.now.strftime('%Y%m%d%H%M%S')}"
|
||||
"#{export_name.strip}.zip"
|
||||
end
|
||||
|
||||
|
@ -20,7 +21,8 @@ class Competition::ZipEnrollTemplateService
|
|||
Zip::File.open(zip_file, Zip::File::CREATE) do |attach_zip|
|
||||
if @competition_users.present?
|
||||
@competition_users.each do |c_user|
|
||||
attach = Attachment.find_by(id: c_user.enroll_template_id)
|
||||
file_uuid = @file_attr_name.nil? ? c_user.send("enroll_template_id") : c_user.send("#{@file_attr_name}")
|
||||
attach = Attachment.where_id_or_uuid(file_uuid).first
|
||||
next if attach.blank?
|
||||
attach_local_path = "#{Rails.root}/files/#{attach.disk_directory}/#{attach.disk_filename}"
|
||||
attach_filename = "#{c_user.id}_#{c_user.leader}_#{attach.filename}"
|
||||
|
|
Loading…
Reference in New Issue