// Author: fruit.com.cn import request from '@/axios' import type { EpisodeItem, EpisodeSaveData, PageResult } from './types' export interface EpisodePageParams { dramaId: number | string status?: string pageIndex?: number pageSize?: number } /** * 解包剧集列表分页。 * 契约(OpenAPI PageResultEpisodeRespVO):data = { total, list }。 * 兼容误把 data 当数组的旧调用,避免列表空白。 */ export function parseEpisodePage(payload: unknown): PageResult { if (Array.isArray(payload)) { return { total: payload.length, list: payload as EpisodeItem[] } } if (payload && typeof payload === 'object') { const page = payload as { total?: unknown; list?: unknown } const list = Array.isArray(page.list) ? (page.list as EpisodeItem[]) : [] const total = Number(page.total) return { total: Number.isFinite(total) ? total : list.length, list } } return { total: 0, list: [] } } export const listEpisodesApi = (params: EpisodePageParams) => { return request.get>({ url: '/admin/episodes', params }) } export const createEpisodeApi = (data: EpisodeSaveData) => { return request.post({ url: '/admin/episodes', data }) } export const updateEpisodeApi = (id: number, data: EpisodeSaveData) => { return request.put({ url: `/admin/episodes/${id}`, data }) } export const deleteEpisodeApi = (id: number) => { return request.delete({ url: `/admin/episodes/${id}` }) } export const sortEpisodesApi = (ids: number[]) => { return request.put({ url: '/admin/episodes/sort', data: { ids } }) }