class CreateAddSchoolApplyService < ApplicationService Error = Class.new(StandardError) attr_reader :user, :params def initialize(user, params) @user = user @params = params end def call AddSchoolApplyForm.new(params).validate! name = params[:name].to_s.strip raise Error, '学校/单位已经存在' if name.present? && School.exists?(name: name) school = School.new school.name = name school.province = params[:province].to_s.strip school.city = params[:city].to_s.strip school.address = params[:address].to_s.strip ActiveRecord::Base.transaction do school.save! school_attrs = school.as_json(only: %i[name province city address]) ApplyAddSchool.create!(school_attrs.merge(school: school, user_id: user.id, remarks: params[:remarks])) # 向管理员发送通知 message = AppliedMessage.new(user_id: 1, status: 0, applied_user_id: user.id, viewed: 0, applied_id: school.id, applied_type: 'ApplyAddSchools', name: school.name) message.save(validate: false) end school end end