|
- require 'open-uri'
-
- module Util
- module_function
-
- def days_between(time, other_time)
- raise ArgumentError if time.blank? || other_time.blank?
- Date.parse(time.to_s) - Date.parse(other_time.to_s)
- end
-
- def convert_base64_image(str, **opts)
- return if str.blank?
-
- Base64ImageConverter.new(**opts).convert(str)
- end
-
- def write_file(io, path)
- dir = File.dirname(path)
- FileUtils.mkdir_p(dir) unless File.directory?(dir)
-
- Rails.logger.info("### save file #{path}, size: #{io.size} ~")
- File.open(path, 'wb') do |file|
- if io.respond_to?(:read)
- io.rewind
- while buffer = io.read(8192)
- file.write(buffer)
- end
- else
- file.write(io)
- end
- end
- true
- end
-
- def download_file(url, save_path)
- data = open(url, &:read)
- file = File.new(save_path, 'w+')
- file.binmode
- file << data
- file.flush
- file.close
- file
- end
-
- def logger_error(exception)
- Rails.logger.error(exception.message)
- exception.backtrace.each { |message| Rails.logger.error(message) }
- end
-
- def map_or_pluck(relation, name)
- relation.is_a?(Array) || relation.loaded? ? relation.map(&name.to_sym) : relation.pluck(name)
- end
-
- def extract_content(str)
- return '' if str.blank?
- str.gsub(/<\/?.*?>/, '').gsub(/[\n\t\r]/, '').gsub(/ /, '')
- end
-
- def conceal(str, type = nil)
- str = str.to_s
- return if str.blank?
-
- case type
- when :phone then "#{str[0..2]}****#{str[-4..-1]}"
- when :email then "#{str[0]}***#{str[(str.rindex('@')-1)..-1]}"
- else "#{str[0..2]}***#{str[-3..-1]}"
- end
- end
-
- def display_cost_time(time)
- time = time.to_i
- return if time.zero? || time < 60
-
- day = time / (24 * 60 * 60)
- hour = (time % (24 * 60 * 60)) / (60 * 60)
- minute = (time % (60 * 60)) / 60
-
- str = ''
- str += "#{day}天" unless day.zero?
- str += "#{hour}小时" unless hour.zero?
- str += "#{minute}分" unless minute.zero?
- str
- end
- end
|