class CreateAddDepartmentApplyService < ApplicationService Error = Class.new(StandardError) attr_reader :user, :params def initialize(user, params) @user = user @params = params end def call name = params[:name].to_s.strip raise Error, '名称不能为空' if name.blank? school = School.find_by(id: params[:school_id]) raise Error, '学校/单位不存在' if school.blank? department = Department.new department.name = name department.school = school ActiveRecord::Base.transaction do department.save! attrs = { user_id: user.id, department: department, school: school, name: department.name, remarks: params[:remarks], status: 0, } apply = ApplyAddDepartment.create!(attrs) unless user.professional_certification? user.user_extension.update!(department_id: department.id) end # 向管理员发送通知 message = AppliedMessage.new(user_id: 1, status: 0, applied_user_id: user.id, viewed: 0, applied_id: apply.id, applied_type: 'ApplyAddDepartment', name: department.name) message.save(validate: false) end department end end