class Users::VideosController < Users::BaseController before_action :private_user_resources!, :check_account before_action :require_teacher! before_action :require_auth_teacher!, except: [:index, :review] helper_method :current_video def index videos = Users::VideoQuery.call(observed_user, search_params) @count = videos.count @videos = paginate videos end def update return render_error('该状态下不能编辑视频信息') unless (current_video.published? || current_video.course_videos.present?) current_video.update!(title: params[:title]) AliyunVod::Service.update_video_info(current_video.uuid, Title: current_video.title) rescue nil end def cancel video = observed_user.videos.find_by(uuid: params[:video_id]) return render_not_found if video.blank? return render_error('该状态下不能删除视频') unless video.pending? video.destroy! AliyunVod::Service.delete_video([video.uuid]) rescue nil render_ok end def review params[:status] = 'processing' videos = Users::VideoQuery.call(observed_user, params) @count = videos.count @videos = paginate videos end def get_video_data start_time = params[:start_time].to_time.utc.strftime('%Y-%m-%dT%H:%M:%SZ') end_time = params[:end_time].to_time.utc.strftime('%Y-%m-%dT%H:%M:%SZ') result = AliyunVod::Service.video_data(current_video.uuid, start_time, end_time) render :json => {data: result} end def batch_publish Videos::BatchPublishService.call(observed_user, batch_publish_params) render_ok rescue Videos::BatchPublishService::Error => ex render_error(ex.message) end private def current_video @_current_video ||= observed_user.videos.find_by(id: params[:id]) if @_current_video.nil? video = Video.find_by(id: params[:id]) if video.course_videos.present? video end else @_current_video end end def search_params params.permit(:keyword, :sort_by, :sort_direction) end def batch_publish_params params.permit(videos: %i[video_id title course_id]) end end