import request from '@/axios' import type { PageResult } from './types' /** 创作者主体:登录账号绑定的创作者信息 */ export interface CreatorProfile { id: number code: string name: string /** INDIVIDUAL / COMPANY */ type: string /** pending / approved / rejected / frozen */ status: string statusText: string auditNote: string auditAt?: string contactName: string contactEmail: string countryCode: string dramaTotal: number } /** 我的作品 + 最近一次提交的审核进度 */ export interface CreatorDrama { id: number code: string title: string subtitle?: string genre?: string description?: string cover: string trailerUrl?: string language?: string status: string statusText: string episodes: number views: number updatedAt?: string submissionId?: number | null submissionType?: string | null submissionStatus?: string | null submissionStatusText?: string | null reviewNote?: string | null rejectCode?: string | null submitAt?: string | null reviewAt?: string | null } export interface CreatorNotice { id: number /** CREATOR(入驻审核)/ SUBMISSION(内容提交审核) */ bizType: string title: string content: string result: string time?: string } export interface CreatorSubmission { id: number creatorId: number dramaId: number /** CREATE / UPDATE / PUBLISH / OFFLINE */ type: string /** DRAFT / SUBMITTED / REVIEWING / APPROVED / REJECTED / WITHDRAWN */ status: string version: number submitAt?: string reviewAt?: string reviewNote: string rejectCode: string } export interface CreatorEpisode { id: number dramaId: number number: number title: string duration: string durationSec: number cover: string videoUrl: string isFree: boolean unlockCoin: number status: string statusText: string views: number sort: number } export interface CreatorDramaEditData { title: string subtitle?: string categoryId?: number genre?: string description?: string cover?: string trailerUrl?: string language?: string } export interface PriceEpisodeConfig { episodeId: number number: number title: string free: boolean unlockCoin: number previewSeconds: number } export interface PriceConfig { dramaId: number freeEpisodes: number unlockCoin: number episodeCount: number changedCount: number episodes: PriceEpisodeConfig[] } export interface CreatorDashboard { generatedAt: string drama: Record playback: Record interaction: Record /** paidOrderAmount 取不到时为 null */ revenue: Record /** 按天趋势:creator_stat_daily 无产出,恒为 null */ daily: null notes: string[] } export const getCreatorProfileApi = () => { return request.get({ url: '/admin/creator-center/profile' }) } export const pageMyDramasApi = (params: Record) => { return request.get>({ url: '/admin/creator-center/dramas/page', params }) } export const getMyDramaApi = (id: number) => { return request.get({ url: `/admin/creator-center/dramas/${id}` }) } export const listCreatorNoticesApi = () => { return request.get({ url: '/admin/creator-center/notices' }) } export const getCreatorDashboardApi = () => { return request.get({ url: '/admin/creator-center/dashboard' }) } export const createDramaApi = (data: CreatorDramaEditData) => { return request.post({ url: '/admin/creator-center/dramas', data }) } export const updateDramaApi = (id: number, data: CreatorDramaEditData) => { return request.put({ url: `/admin/creator-center/dramas/${id}`, data }) } export const listEpisodesApi = (dramaId: number) => { return request.get({ url: `/admin/creator-center/dramas/${dramaId}/episodes` }) } export const addEpisodeApi = (dramaId: number, data: Record) => { return request.post({ url: `/admin/creator-center/dramas/${dramaId}/episodes`, data }) } export const updateEpisodeApi = ( dramaId: number, episodeId: number, data: Record ) => { return request.put({ url: `/admin/creator-center/dramas/${dramaId}/episodes/${episodeId}`, data }) } export const deleteEpisodeApi = (dramaId: number, episodeId: number) => { return request.delete({ url: `/admin/creator-center/dramas/${dramaId}/episodes/${episodeId}` }) } export const sortEpisodesApi = (dramaId: number, ids: number[]) => { return request.put({ url: `/admin/creator-center/dramas/${dramaId}/episodes/sort`, data: { ids } }) } /** 把上传好的媒资挂到分集(产物必须是本人上传的) */ export const attachAssetApi = (dramaId: number, episodeId: number, assetId: number) => { return request.post({ url: `/admin/creator-center/dramas/${dramaId}/episodes/${episodeId}/attach`, data: { assetId } }) } export const getPricesApi = (dramaId: number) => { return request.get({ url: `/admin/creator-center/dramas/${dramaId}/prices` }) } export const savePricesApi = (dramaId: number, data: Record) => { return request.put({ url: `/admin/creator-center/dramas/${dramaId}/prices`, data }) } export const submitDramaApi = (dramaId: number, type: string) => { return request.post({ url: `/admin/creator-center/dramas/${dramaId}/submit`, data: { type } }) } export const withdrawSubmissionApi = (submissionId: number) => { return request.post({ url: `/admin/creator-center/submissions/${submissionId}/withdraw` }) } export const listSubmissionsApi = (dramaId: number) => { return request.get({ url: `/admin/creator-center/dramas/${dramaId}/submissions` }) }