class CommonsController < ApplicationController OBJECT_TYPE = %W[message journals_for_message] before_action :require_login, :check_auth before_action :validate_object_type before_action :find_object before_action :validate_power def delete begin @object.destroy! rescue Exception => e uid_logger_error(e.message) tip_exception(e.message) raise ActiveRecord::Rollback end end def hidden action(true) end def unhidden action(false) end private def find_object begin @object = params[:object_type].strip.classify.constantize.find params[:object_id] rescue Exception => e uid_logger_error(e.message) tip_exception(e.message) return end end def validate_object_type return normal_status(2, "缺少object_id参数") if params[:object_id].blank? return normal_status(2, "缺少object_type参数") if params[:object_type].blank? return normal_status(2, "object_type参数格式错误") unless OBJECT_TYPE.include? params[:object_type].strip end def validate_power code = case params[:object_type].strip when 'message' if current_user.course_identity(@object.board.course) >= Course::STUDENT && @object.author != current_user 403 else 200 end when 'journals_for_message' course = @object&.jour_type.to_s == "StudentWorksScore" ? @object.jour&.student_work&.homework_common&.course : @object.jour&.course if current_user.course_identity(course) >= Course::STUDENT && @object.user != current_user 403 else 200 end else current_user.admin_or_business? ? 200 : 403 end return normal_status(code, "你没有权限操作!") if code == 403 end def action(flag) begin @object.has_attribute?(:is_hidden) ? @object.update_attributes(:is_hidden => flag ) : @object.update_attributes(:hidden => flag ) rescue Exception => e uid_logger_error(e.message) tip_exception(e.message) raise ActiveRecord::Rollback end end end