class UsersService include ApplicationHelper include AccountHelper include AvatarHelper #将用户注册的功能函数写这里 #参数约定 #成功返回注册后的User实例,失败直接抛异常 def register(params) @user = User.new @user.admin = false @user.register @user.login = params[:login] @user.mail = params[:mail] password = params[:password] password_confirmation = params[:password_confirmation] should_confirmation_password = params[:should_confirmation_password] if !password.blank? && !password_confirmation.blank? && should_confirmation_password @user.password, @user.password_confirmation = password, password_confirmation elsif !password.blank? && !should_confirmation_password @user.password = password else @user.password = "" end case Setting.self_registration when '1' @user = email_activation_register(@user) when '3' @user = automatically_register(@user) else @user = administrator_manually__register(@user) end if @user.id != nil ue = @user.user_extensions ||= UserExtensions.new ue.user_id = @user.id ue.save end @user end #显示用户 #id用户id def show_user(params) @user = User.find(params[:id]) img_url = url_to_avatar(@user) gender = @user.user_extensions.gender.nil? ? 0 : @user.user_extensions.gender work_unit = "" if @user.user_extensions.identity == 0 || @user.user_extensions.identity == 1 work_unit = @user.user_extensions.school.name unless @user.user_extensions.school.nil? elsif @user.user_extensions.identity == 3 work_unit = @user.user_extensions.occupation elsif @user.user_extensions.identity == 2 work_unit = @user.firstname end location = "" location << (@user.user_extensions.location || '') location << (@user.user_extensions.location_city || '') {:id => @user.id, :img_url => img_url, :nickname => @user.login, :gender => gender, :work_unit => work_unit, :mail => @user.mail, :location => location, :brief_introduction => @user.user_extensions.brief_introduction} end #编辑用户 def edit_user params @user = User.find(params[:id]) fileio = params[:file] @se = @user.extensions if @user.user_extensions.identity == 0 || @user.user_extensions.identity == 1 @se.school_id = params[:occupation] elsif @user.user_extensions.identity == 3 @se.occupation = params[:occupation] elsif @user.user_extensions.identity == 2 @user.firstname = params[:occupation] end @se.brief_introduction = params[:brief_introduction] @se.gender = params[:gender] @se.location = params[:province] if params[:province] @se.location_city = params[:city] if params[:city] raise @se.errors.full_message unless @se.save unless fileio.nil? file = fileio[:tempfile] diskfile=disk_filename(@user.class.to_s, @user.id) @image_file = fileio[:name] @urlfile='/' << File.join("images", "avatars", avatar_directory(@user.class.to_s), avatar_filename(@user.id, @image_file)) path = File.dirname(diskfile) unless File.directory?(path) FileUtils.mkdir_p(path) end File.rename(file.path, @urlfile) begin f = Magick::ImageList.new(diskfile) # gif格式不再做大小处理 if f.format != 'GIF' width = 300.0 proportion = (width/f[0].columns) height = (f[0].rows*proportion) f.resize_to_fill!(width, height) f.write(diskfile) end rescue Exception => e logger.error "[Error] avatar : users_service#edit_user ===> #{e}" end end @se end #关注列表 def user_watcher params @user = User.find(params[:id]) User.watched_by(@user.id) end end