feat: Add original price display option and enhance inventory messages in subscription components

This commit is contained in:
web@ppanel
2025-12-29 05:34:01 +00:00
parent 7279275532
commit 543a7b9eb9
25 changed files with 241 additions and 61 deletions
+8
View File
@@ -135,6 +135,14 @@ function handleError(response: {
"components:error.60005",
"Single subscription mode has exceeded user limit"
),
60006: t(
"components:error.60006",
"User quota limit has been reached, unable to continue."
),
60007: t(
"components:error.60007",
"Insufficient inventory, please try again later or contact the administrator."
),
70001: t(
"components:error.70001",
"Incorrect verification code, please re-enter."
-22
View File
@@ -55,28 +55,6 @@ export async function filterServerList(
);
}
/** Check if there is any server or node to migrate GET /v1/admin/server/migrate/has */
export async function hasMigrateSeverNode(options?: { [key: string]: any }) {
return request<API.Response & { data?: API.HasMigrateSeverNodeResponse }>(
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/server/migrate/has`,
{
method: "GET",
...(options || {}),
}
);
}
/** Migrate server and node data to new database POST /v1/admin/server/migrate/run */
export async function migrateServerNode(options?: { [key: string]: any }) {
return request<API.Response & { data?: API.MigrateServerNodeResponse }>(
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/server/migrate/run`,
{
method: "POST",
...(options || {}),
}
);
}
/** Create Node POST /v1/admin/server/node/create */
export async function createNode(
body: API.CreateNodeRequest,
+18 -1
View File
@@ -355,6 +355,7 @@ declare namespace API {
allow_deduction: boolean;
reset_cycle: number;
renewal_reset: boolean;
show_original_price: boolean;
};
type CreateTicketFollowRequest = {
@@ -1127,6 +1128,7 @@ declare namespace API {
size: number;
search?: string;
user_id?: number;
unscoped?: boolean;
subscribe_id?: number;
user_subscribe_id?: number;
};
@@ -1136,6 +1138,7 @@ declare namespace API {
size: number;
search?: string;
user_id?: number;
unscoped?: boolean;
subscribe_id?: number;
user_subscribe_id?: number;
};
@@ -1837,6 +1840,14 @@ declare namespace API {
order_no: string;
};
type ResetUserSubscribeTokenRequest = {
user_subscribe_id: number;
};
type ResetUserSubscribeTrafficRequest = {
user_subscribe_id: number;
};
type Response = {
/** 状态码 */
code?: number;
@@ -1993,6 +2004,10 @@ declare namespace API {
id: number;
};
type StopUserSubscribeRequest = {
user_subscribe_id: number;
};
type StripePayment = {
method: string;
client_secret: string;
@@ -2022,6 +2037,7 @@ declare namespace API {
allow_deduction: boolean;
reset_cycle: number;
renewal_reset: boolean;
show_original_price: boolean;
created_at: number;
updated_at: number;
};
@@ -2086,6 +2102,7 @@ declare namespace API {
allow_deduction?: boolean;
reset_cycle?: number;
renewal_reset?: boolean;
show_original_price?: boolean;
created_at?: number;
updated_at?: number;
sold: number;
@@ -2337,6 +2354,7 @@ declare namespace API {
allow_deduction: boolean;
reset_cycle: number;
renewal_reset: boolean;
show_original_price: boolean;
};
type UpdateTicketStatusRequest = {
@@ -2406,7 +2424,6 @@ declare namespace API {
created_at: number;
updated_at: number;
deleted_at?: number;
is_del?: boolean;
};
type UserAffiliate = {
+58
View File
@@ -425,6 +425,64 @@ export async function getUserSubscribeResetTrafficLogs(
);
}
/** Reset user subscribe token POST /v1/admin/user/subscribe/reset/token */
export async function resetUserSubscribeToken(
body: API.ResetUserSubscribeTokenRequest,
options?: { [key: string]: any }
) {
return request<API.Response & { data?: any }>(
`${
import.meta.env.VITE_API_PREFIX || ""
}/v1/admin/user/subscribe/reset/token`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
data: body,
...(options || {}),
}
);
}
/** Reset user subscribe traffic POST /v1/admin/user/subscribe/reset/traffic */
export async function resetUserSubscribeTraffic(
body: API.ResetUserSubscribeTrafficRequest,
options?: { [key: string]: any }
) {
return request<API.Response & { data?: any }>(
`${
import.meta.env.VITE_API_PREFIX || ""
}/v1/admin/user/subscribe/reset/traffic`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
data: body,
...(options || {}),
}
);
}
/** Stop user subscribe POST /v1/admin/user/subscribe/stop */
export async function stopUserSubscribe(
body: API.StopUserSubscribeRequest,
options?: { [key: string]: any }
) {
return request<API.Response & { data?: any }>(
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/user/subscribe/stop`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
data: body,
...(options || {}),
}
);
}
/** Get user subcribe traffic logs GET /v1/admin/user/subscribe/traffic_logs */
export async function getUserSubscribeTrafficLogs(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
+5 -1
View File
@@ -750,6 +750,10 @@ declare namespace API {
order_no: string;
};
type ResetUserSubscribeTokenRequest = {
user_subscribe_id: number;
};
type Response = {
/** 状态码 */
code?: number;
@@ -863,6 +867,7 @@ declare namespace API {
allow_deduction: boolean;
reset_cycle: number;
renewal_reset: boolean;
show_original_price: boolean;
created_at: number;
updated_at: number;
};
@@ -1023,7 +1028,6 @@ declare namespace API {
created_at: number;
updated_at: number;
deleted_at?: number;
is_del?: boolean;
};
type UserAffiliate = {
+1 -1
View File
@@ -985,6 +985,7 @@ declare namespace API {
allow_deduction: boolean;
reset_cycle: number;
renewal_reset: boolean;
show_original_price: boolean;
created_at: number;
updated_at: number;
};
@@ -1146,7 +1147,6 @@ declare namespace API {
created_at: number;
updated_at: number;
deleted_at?: number;
is_del?: boolean;
};
type UserAffiliate = {