feat: Redemption code

This commit is contained in:
EUForest 2026-01-06 21:49:46 +08:00
parent ef6044cfef
commit 8497b1159b
2 changed files with 206 additions and 0 deletions

View File

@ -0,0 +1,126 @@
/* eslint-disable */
import request from "@workspace/ui/lib/request";
/** Toggle redemption code status PUT /v1/admin/redemption/code/status */
export async function toggleRedemptionCodeStatus(
body: API.ToggleRedemptionCodeStatusRequest,
options?: { [key: string]: any }
) {
return request<API.Response & { data?: any }>(
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/redemption/code/status`,
{
method: "PUT",
headers: {
"Content-Type": "application/json",
},
data: body,
...(options || {}),
}
);
}
/** Update redemption code PUT /v1/admin/redemption/code */
export async function updateRedemptionCode(
body: API.UpdateRedemptionCodeRequest,
options?: { [key: string]: any }
) {
return request<API.Response & { data?: any }>(
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/redemption/code`,
{
method: "PUT",
headers: {
"Content-Type": "application/json",
},
data: body,
...(options || {}),
}
);
}
/** Create redemption code POST /v1/admin/redemption/code */
export async function createRedemptionCode(
body: API.CreateRedemptionCodeRequest,
options?: { [key: string]: any }
) {
return request<API.Response & { data?: any }>(
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/redemption/code`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
data: body,
...(options || {}),
}
);
}
/** Delete redemption code DELETE /v1/admin/redemption/code */
export async function deleteRedemptionCode(
body: API.DeleteRedemptionCodeRequest,
options?: { [key: string]: any }
) {
return request<API.Response & { data?: any }>(
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/redemption/code`,
{
method: "DELETE",
headers: {
"Content-Type": "application/json",
},
data: body,
...(options || {}),
}
);
}
/** Batch delete redemption code DELETE /v1/admin/redemption/code/batch */
export async function batchDeleteRedemptionCode(
body: API.BatchDeleteRedemptionCodeRequest,
options?: { [key: string]: any }
) {
return request<API.Response & { data?: any }>(
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/redemption/code/batch`,
{
method: "DELETE",
headers: {
"Content-Type": "application/json",
},
data: body,
...(options || {}),
}
);
}
/** Get redemption code list GET /v1/admin/redemption/code/list */
export async function getRedemptionCodeList(
params: API.GetRedemptionCodeListRequest,
options?: { [key: string]: any }
) {
return request<API.Response & { data?: API.GetRedemptionCodeListResponse }>(
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/redemption/code/list`,
{
method: "GET",
params: {
...params,
},
...(options || {}),
}
);
}
/** Get redemption record list GET /v1/admin/redemption/record/list */
export async function getRedemptionRecordList(
params: API.GetRedemptionRecordListRequest,
options?: { [key: string]: any }
) {
return request<API.Response & { data?: API.GetRedemptionRecordListResponse }>(
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/redemption/record/list`,
{
method: "GET",
params: {
...params,
},
...(options || {}),
}
);
}

View File

@ -250,6 +250,85 @@ declare namespace API {
enable?: boolean;
};
type CreateRedemptionCodeRequest = {
total_count: number;
subscribe_plan: number;
unit_time: string;
quantity: number;
batch_count: number;
};
type UpdateRedemptionCodeRequest = {
id: number;
total_count?: number;
subscribe_plan?: number;
unit_time?: string;
quantity?: number;
status?: number;
};
type ToggleRedemptionCodeStatusRequest = {
id: number;
status: number;
};
type DeleteRedemptionCodeRequest = {
id: number;
};
type BatchDeleteRedemptionCodeRequest = {
ids: number[];
};
type GetRedemptionCodeListRequest = {
page: number;
size: number;
subscribe_plan?: number;
unit_time?: string;
code?: string;
};
type GetRedemptionCodeListResponse = {
total: number;
list: RedemptionCode[];
};
type GetRedemptionRecordListRequest = {
page: number;
size: number;
user_id?: number;
code_id?: number;
};
type GetRedemptionRecordListResponse = {
total: number;
list: RedemptionRecord[];
};
type RedemptionCode = {
id: number;
code: string;
total_count: number;
used_count: number;
subscribe_plan: number;
unit_time: string;
quantity: number;
status: number;
created_at: number;
updated_at: number;
};
type RedemptionRecord = {
id: number;
redemption_code_id: number;
user_id: number;
subscribe_id: number;
unit_time: string;
quantity: number;
redeemed_at: number;
created_at: number;
};
type CreateDocumentRequest = {
title: string;
content: string;
@ -1785,6 +1864,7 @@ declare namespace API {
enable_ip_register_limit: boolean;
ip_register_limit: number;
ip_register_limit_duration: number;
device_limit: number;
};
type RegisterLog = {