// Author: fruit.com.cn import request from '@/axios' import type { PageResult } from './types' /** 商品(金币包):字段与 /admin/products 的响应一一对应 */ export interface ProductItem { /** 雪花 id,后端以字符串下发(超过 JS 安全整数范围),原样回传即可 */ id: string code: string name: string /** COIN_PACK / VIP */ type: string typeText: string /** ALL / GOOGLE / APPLE */ platform: string storeProductId: string coinAmount: number bonusCoin: number /** coinAmount + bonusCoin,服务端算好,前端不再自己加 */ totalCoin: number priceAmount: number currency: string displayPrice: string regionCodes: string vipDays: number sort: number /** 1 已上架 / 0 已下架 */ status: number statusText: string effectiveAt?: string expireAt?: string createdAt?: string } export interface ProductPageParams { pageIndex?: number pageSize?: number type?: string status?: number platform?: string keyword?: string } export interface ProductSaveData { code: string name: string type: string platform: string storeProductId: string coinAmount: number bonusCoin: number priceAmount: number currency: string displayPrice: string regionCodes: string vipDays: number sort: number effectiveAt?: string | null expireAt?: string | null } export const pageProductsApi = (params: ProductPageParams) => { return request.get>({ url: '/admin/products/page', params }) } export const getProductApi = (id: string | number) => { return request.get({ url: `/admin/products/${id}` }) } export const createProductApi = (data: ProductSaveData) => { return request.post({ url: '/admin/products', data }) } export const updateProductApi = (id: string | number, data: ProductSaveData) => { return request.put({ url: `/admin/products/${id}`, data }) } export const updateProductStatusApi = (id: string | number, status: number) => { return request.put({ url: `/admin/products/${id}/status`, params: { status } }) } export const deleteProductApi = (id: string | number) => { return request.delete({ url: `/admin/products/${id}` }) }