- src/api/admin/product.ts、src/api/admin/notice.ts 对齐后端新接口 - ProductManagementView:列表/筛选/新建编辑/上下架/删除,新建默认下架有提示 - NoticeManagementView:列表/筛选/新建编辑/发布下架/删除 - 状态列一律用接口返回的 statusText,不在前端写死中文 - id 按字符串处理(雪花 id 超过 JS 安全整数范围,数字会被四舍五入)
86 lines
2.2 KiB
TypeScript
86 lines
2.2 KiB
TypeScript
// 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<PageResult<ProductItem>>({ url: '/admin/products/page', params })
|
|
}
|
|
|
|
export const getProductApi = (id: string | number) => {
|
|
return request.get<ProductItem>({ url: `/admin/products/${id}` })
|
|
}
|
|
|
|
export const createProductApi = (data: ProductSaveData) => {
|
|
return request.post<string>({ url: '/admin/products', data })
|
|
}
|
|
|
|
export const updateProductApi = (id: string | number, data: ProductSaveData) => {
|
|
return request.put<void>({ url: `/admin/products/${id}`, data })
|
|
}
|
|
|
|
export const updateProductStatusApi = (id: string | number, status: number) => {
|
|
return request.put<void>({ url: `/admin/products/${id}/status`, params: { status } })
|
|
}
|
|
|
|
export const deleteProductApi = (id: string | number) => {
|
|
return request.delete<void>({ url: `/admin/products/${id}` })
|
|
}
|