/** * 广告位管理接口(对齐 @photo/contracts tags [ads]:listAdminAds / * createAd / updateAd / deleteAd / initAdUpload,广告位轮播 Task 11;仅 admin 可用) * * - 列表全量不分页(sortOrder 升序、并列 createdAt 升序);imageUrl 为 * 现签 GET,过期后重拉本列表刷新 * - 直传两步:init 签发 staging 凭证 → 裸 fetch PUT(预签名 URL 自带 * 凭证,Content-Type 与申明一致);无 complete 步——创建/更新端点核验 * staging 对象后 copyIfAbsent 转存版本化终键 * - PATCH 部分更新:换图三字段(imageStagingKey/imageBytes/imageContentType) * 必须同时提供;albumIds null=转全局 * - DELETE 硬删(数据不保留、无恢复端点;幂等 404) */ import request from '@/utils/http' /** 广告位列表(全量不分页) */ export function fetchAds() { return request.get({ url: '/v1/admin/ads' }) } /** 初始化广告图直传(staging 键 + 预签名凭证) */ export function fetchInitAdUpload(data: Api.Ads.UploadInitPayload) { return request.post({ url: '/v1/admin/ads/uploads', data }) } /** 创建广告位(服务端核验 staging 后转存终键;albumIds 空=全局) */ export function fetchCreateAd(data: Api.Ads.CreatePayload) { return request.post({ url: '/v1/admin/ads', data }) } /** 更新广告位(部分更新;换图三字段同时提供) */ export function fetchUpdateAd(id: string, data: Api.Ads.UpdatePayload) { return request.patch({ url: `/v1/admin/ads/${id}`, data }) } /** 硬删除广告位(无恢复;重复删除 404) */ export function fetchDeleteAd(id: string) { return request.del({ url: `/v1/admin/ads/${id}` }) }