class Videos::DispatchCallbackService < ApplicationService attr_reader :video, :params def initialize(params) @video = Video.find_by(uuid: params[:VideoId]) @params = params end def call return if video.blank? # TODO:: 拆分事件分发 case params['EventType'] when 'FileUploadComplete' then # 视频上传完成 video.file_url = params['FileUrl'] video.filesize = params['Size'] video.upload_success video.save! when 'SnapshotComplete' then # 封面截图完成 return if video.cover_url.present? video.update!(cover_url: params['CoverUrl']) end rescue => ex Util.logger_error(ex) end end