From 8497b1159bc04d1fecabaf814f390c22b4e539a1 Mon Sep 17 00:00:00 2001 From: EUForest Date: Tue, 6 Jan 2026 21:49:46 +0800 Subject: [PATCH] feat: Redemption code --- packages/ui/src/services/admin/redemption.ts | 126 +++++++++++++++++++ packages/ui/src/services/admin/typings.d.ts | 80 ++++++++++++ 2 files changed, 206 insertions(+) create mode 100644 packages/ui/src/services/admin/redemption.ts diff --git a/packages/ui/src/services/admin/redemption.ts b/packages/ui/src/services/admin/redemption.ts new file mode 100644 index 0000000..8873daa --- /dev/null +++ b/packages/ui/src/services/admin/redemption.ts @@ -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( + `${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( + `${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( + `${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( + `${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( + `${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( + `${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( + `${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/redemption/record/list`, + { + method: "GET", + params: { + ...params, + }, + ...(options || {}), + } + ); +} diff --git a/packages/ui/src/services/admin/typings.d.ts b/packages/ui/src/services/admin/typings.d.ts index 4457357..4414245 100644 --- a/packages/ui/src/services/admin/typings.d.ts +++ b/packages/ui/src/services/admin/typings.d.ts @@ -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 = {