Files
one-pipe-system/src/api/modules/shopSeriesGrant.ts
luo f2614d8efb
All checks were successful
构建并部署前端到测试环境 / deploy (push) Successful in 54s
fix: some
2026-10-28 15:18:44 +08:00

124 lines
3.6 KiB
TypeScript

/**
* 代理系列授权 API 服务
*/
import { BaseService } from '../BaseService'
import { ensurePackageSilenceOverrides } from './packageSilenceValidation'
import type {
ShopSeriesGrantResponse,
ShopSeriesGrantQueryParams,
CreateShopSeriesGrantRequest,
UpdateShopSeriesGrantRequest,
ManageGrantPackagesRequest,
ShopSeriesGrantPackageOptionsResponse,
BaseResponse,
PaginationResponse
} from '@/types/api'
export class ShopSeriesGrantService extends BaseService {
/**
* 获取代理系列授权分页列表
* GET /api/admin/shop-series-grants
* @param params 查询参数
*/
static getShopSeriesGrants(
params?: ShopSeriesGrantQueryParams
): Promise<PaginationResponse<ShopSeriesGrantResponse>> {
return this.getPage<ShopSeriesGrantResponse>('/api/admin/shop-series-grants', params)
}
/**
* 创建代理系列授权
* POST /api/admin/shop-series-grants
* @param data 授权数据
*/
static async createShopSeriesGrant(
data: CreateShopSeriesGrantRequest
): Promise<BaseResponse<ShopSeriesGrantResponse>> {
await ensurePackageSilenceOverrides(
data.packages
.filter((item) => !item.remove)
.map((item) => ({
packageId: item.package_id,
override:
item.expiry_base_override === undefined
? data.expiry_base_override
: item.expiry_base_override
}))
)
return this.create<ShopSeriesGrantResponse>('/api/admin/shop-series-grants', data)
}
/**
* 获取代理系列授权详情
* GET /api/admin/shop-series-grants/{id}
* @param id 授权ID
*/
static getShopSeriesGrantDetail(id: number): Promise<BaseResponse<ShopSeriesGrantResponse>> {
return this.getOne<ShopSeriesGrantResponse>(`/api/admin/shop-series-grants/${id}`)
}
/**
* 获取代理系列授权可选套餐
* GET /api/admin/shop-series-grants/package-options
*/
static getPackageOptions(
shopId: number,
seriesId: number
): Promise<BaseResponse<ShopSeriesGrantPackageOptionsResponse>> {
return this.getOne<ShopSeriesGrantPackageOptionsResponse>(
'/api/admin/shop-series-grants/package-options',
{ shop_id: shopId, series_id: seriesId }
)
}
/**
* 更新代理系列授权
* PUT /api/admin/shop-series-grants/{id}
* @param id 授权ID
* @param data 授权数据
*/
static updateShopSeriesGrant(
id: number,
data: UpdateShopSeriesGrantRequest
): Promise<BaseResponse<ShopSeriesGrantResponse>> {
return this.update<ShopSeriesGrantResponse>(`/api/admin/shop-series-grants/${id}`, data)
}
/**
* 删除代理系列授权
* DELETE /api/admin/shop-series-grants/{id}
* @param id 授权ID
*/
static deleteShopSeriesGrant(id: number): Promise<BaseResponse> {
return this.remove(`/api/admin/shop-series-grants/${id}`)
}
/**
* 管理代理系列授权的套餐
* PUT /api/admin/shop-series-grants/{id}/packages
* @param id 授权ID
* @param data 套餐管理数据
*/
static async manageGrantPackages(
id: number,
data: ManageGrantPackagesRequest
): Promise<BaseResponse<ShopSeriesGrantResponse>> {
await ensurePackageSilenceOverrides(
data.packages
.filter((item) => !item.remove)
.map((item) => ({
packageId: item.package_id,
override:
item.expiry_base_override === undefined
? data.expiry_base_override
: item.expiry_base_override
}))
)
return this.put<BaseResponse<ShopSeriesGrantResponse>>(
`/api/admin/shop-series-grants/${id}/packages`,
data
)
}
}