You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							44 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							44 lines
						
					
					
						
							1.2 KiB
						
					
					
				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
 |