sync: 以本地为准同步全量变更至 GitHub
含四端需求文档、前端/后端/超管/触客宝迭代及部署脚本更新;未拉取远程。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
96
SuperAdmin/lib/power-billing-api.ts
Normal file
96
SuperAdmin/lib/power-billing-api.ts
Normal file
@@ -0,0 +1,96 @@
|
||||
import { apiRequest, ApiResponse } from "./api-utils";
|
||||
|
||||
export interface PowerSettings {
|
||||
tokensPerYuan: number;
|
||||
range: { min: number; max: number };
|
||||
note: string;
|
||||
updatedBy?: string;
|
||||
updateTime?: string;
|
||||
}
|
||||
|
||||
export interface CatalogItem {
|
||||
action: number;
|
||||
slug: string;
|
||||
displayName: string;
|
||||
adminName: string;
|
||||
cost: number;
|
||||
unit: string;
|
||||
unitLabel: string;
|
||||
scenePack: string;
|
||||
group: string;
|
||||
status: number;
|
||||
}
|
||||
|
||||
export interface ScenePackGroup {
|
||||
id: string;
|
||||
name: string;
|
||||
desc: string;
|
||||
items: CatalogItem[];
|
||||
}
|
||||
|
||||
export interface CatalogResponse {
|
||||
tokensPerYuan: number;
|
||||
scenePacks: ScenePackGroup[];
|
||||
catalog: CatalogItem[];
|
||||
}
|
||||
|
||||
export interface TokenPackage {
|
||||
id: number;
|
||||
packageCode: string;
|
||||
name: string;
|
||||
subtitle: string;
|
||||
badge: string;
|
||||
price: number;
|
||||
originalPrice: number;
|
||||
tokens: number;
|
||||
sort: number;
|
||||
status: number;
|
||||
}
|
||||
|
||||
export interface PowerInsights {
|
||||
tokensPerYuan: number;
|
||||
todaySpend: number;
|
||||
monthSpend: number;
|
||||
monthYuan: number;
|
||||
scenePackStats: { id: string; name: string; tokens: number }[];
|
||||
topProjects: { companyId: number; projectName: string; tokens: number }[];
|
||||
}
|
||||
|
||||
export function getPowerSettings(): Promise<ApiResponse<PowerSettings>> {
|
||||
return apiRequest("/power-billing/settings");
|
||||
}
|
||||
|
||||
export function updatePowerSettings(tokensPerYuan: number): Promise<ApiResponse<PowerSettings>> {
|
||||
return apiRequest("/power-billing/settings", "PUT", { tokensPerYuan });
|
||||
}
|
||||
|
||||
export function getPowerCatalog(): Promise<ApiResponse<CatalogResponse>> {
|
||||
return apiRequest("/power-billing/catalog");
|
||||
}
|
||||
|
||||
export function updateCatalogItem(
|
||||
slug: string,
|
||||
patch: Partial<Pick<CatalogItem, "cost" | "displayName" | "adminName" | "status" | "unit">>,
|
||||
): Promise<ApiResponse<CatalogItem>> {
|
||||
return apiRequest(`/power-billing/catalog/${encodeURIComponent(slug)}`, "PUT", patch);
|
||||
}
|
||||
|
||||
export function resetCatalogItem(slug: string): Promise<ApiResponse<CatalogItem>> {
|
||||
return apiRequest(`/power-billing/catalog/reset/${encodeURIComponent(slug)}`, "POST");
|
||||
}
|
||||
|
||||
export function getPowerPackages(): Promise<ApiResponse<{ tokensPerYuan: number; list: TokenPackage[] }>> {
|
||||
return apiRequest("/power-billing/packages");
|
||||
}
|
||||
|
||||
export function savePowerPackage(payload: Partial<TokenPackage>): Promise<ApiResponse<{ id: number }>> {
|
||||
return apiRequest("/power-billing/packages", "POST", payload);
|
||||
}
|
||||
|
||||
export function recalcPowerPackages(): Promise<ApiResponse<{ updated: number }>> {
|
||||
return apiRequest("/power-billing/packages/recalc", "POST");
|
||||
}
|
||||
|
||||
export function getPowerInsights(): Promise<ApiResponse<PowerInsights>> {
|
||||
return apiRequest("/power-billing/insights");
|
||||
}
|
||||
Reference in New Issue
Block a user