/** 店铺密钥列表加载与新增适配(任务 82/84):GET/POST /api/admin/shop-keys + 归一与解析。 */ import { http } from '@/api/http' import { unwrap } from '@/api/envelope' import { parseShopKeyPage, toShopKeyItem } from './shop-key-model.ts' import { normalizeKeyListParams, toKeyPageQuery, type ShopKeyItem, type ShopKeyListParams, type ShopKeyPageResult, } from './shop-dto.ts' import { toShopKeyCreateRequest, validateShopKeyForm, type ShopKeyFormValues, } from './shop-key-form-model.ts' export const SHOP_KEYS_ENDPOINT = '/api/admin/shop-keys' export async function fetchShopKeyList(params: Partial = {}): Promise { const normalized = normalizeKeyListParams(params) const { data } = await http.get(SHOP_KEYS_ENDPOINT, { params: toKeyPageQuery(normalized) }) return parseShopKeyPage(data) } /** 提交新增店铺密钥:先校验(失败抛首条错误不发请求),再 POST,解析返回的新记录。 */ export async function submitCreateShopKey(form: ShopKeyFormValues): Promise { const { valid, errors } = validateShopKeyForm(form) if (!valid) { throw new Error(Object.values(errors)[0] || '店铺密钥表单校验未通过') } const { data } = await http.post(SHOP_KEYS_ENDPOINT, toShopKeyCreateRequest(form)) const item = toShopKeyItem(unwrap(data)) if (!item) { throw new Error('新增店铺密钥响应异常:未返回有效记录') } return item } /** 提交更新店铺密钥:编辑沿用原令牌/账号,更新体字段与新增一致;PUT /api/admin/shop-keys/{id}。 */ export async function updateShopKey(id: number, form: ShopKeyFormValues): Promise { const { valid, errors } = validateShopKeyForm(form) if (!valid) { throw new Error(Object.values(errors)[0] || '店铺密钥表单校验未通过') } const { data } = await http.put(`${SHOP_KEYS_ENDPOINT}/${id}`, toShopKeyCreateRequest(form)) const item = toShopKeyItem(unwrap(data)) if (!item) { throw new Error('更新店铺密钥响应异常:未返回有效记录') } return item } /** 删除店铺密钥:DELETE /api/admin/shop-keys/{id};成功后由调用方按目标页刷新。 */ export async function deleteShopKey(id: number): Promise { await http.delete(`${SHOP_KEYS_ENDPOINT}/${id}`) }