新功能(#113): 发布促销管理后台页面到main
This commit is contained in:
@@ -15,6 +15,7 @@ import * as log from "./log";
|
||||
import * as marketing from "./marketing";
|
||||
import * as order from "./order";
|
||||
import * as payment from "./payment";
|
||||
import * as promo from "./promo";
|
||||
import * as redemption from "./redemption";
|
||||
import * as server from "./server";
|
||||
import * as subscribe from "./subscribe";
|
||||
@@ -37,6 +38,7 @@ export default {
|
||||
marketing,
|
||||
order,
|
||||
payment,
|
||||
promo,
|
||||
redemption,
|
||||
server,
|
||||
subscribe,
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
/* eslint-disable */
|
||||
import request from "@workspace/ui/lib/request";
|
||||
|
||||
/** Create promo rule POST /v1/admin/promo/rule */
|
||||
export async function createPromoRule(
|
||||
body: API.CreatePromoRuleRequest,
|
||||
options?: Record<string, unknown>
|
||||
) {
|
||||
return request<API.Response & { data?: API.PromoRule }>(
|
||||
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/promo/rule`,
|
||||
{
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/** Get promo rule list GET /v1/admin/promo/rule/list */
|
||||
export async function getPromoRuleList(
|
||||
params: API.GetPromoRuleListParams,
|
||||
options?: Record<string, unknown>
|
||||
) {
|
||||
return request<API.Response & { data?: API.GetPromoRuleListResponse }>(
|
||||
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/promo/rule/list`,
|
||||
{
|
||||
method: "GET",
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/** Get promo rule detail GET /v1/admin/promo/rule/:id */
|
||||
export async function getPromoRuleDetail(
|
||||
params: API.GetPromoRuleDetailParams,
|
||||
options?: Record<string, unknown>
|
||||
) {
|
||||
return request<API.Response & { data?: API.PromoRule }>(
|
||||
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/promo/rule/${params.id}`,
|
||||
{
|
||||
method: "GET",
|
||||
...(options || {}),
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/** Update promo rule PUT /v1/admin/promo/rule/:id */
|
||||
export async function updatePromoRule(
|
||||
params: API.UpdatePromoRuleParams,
|
||||
body: API.UpdatePromoRuleRequest,
|
||||
options?: Record<string, unknown>
|
||||
) {
|
||||
return request<API.Response & { data?: API.PromoRule }>(
|
||||
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/promo/rule/${params.id}`,
|
||||
{
|
||||
method: "PUT",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/** Delete promo rule DELETE /v1/admin/promo/rule/:id */
|
||||
export async function deletePromoRule(
|
||||
params: API.DeletePromoRuleParams,
|
||||
options?: Record<string, unknown>
|
||||
) {
|
||||
return request<API.Response & { data?: unknown }>(
|
||||
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/promo/rule/${params.id}`,
|
||||
{
|
||||
method: "DELETE",
|
||||
...(options || {}),
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/** Create promo price POST /v1/admin/promo/price */
|
||||
export async function createPromoPrice(
|
||||
body: API.CreatePromoPriceRequest,
|
||||
options?: Record<string, unknown>
|
||||
) {
|
||||
return request<API.Response & { data?: API.PromoPrice }>(
|
||||
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/promo/price`,
|
||||
{
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/** Get promo price list GET /v1/admin/promo/price/list */
|
||||
export async function getPromoPriceList(
|
||||
params: API.GetPromoPriceListParams,
|
||||
options?: Record<string, unknown>
|
||||
) {
|
||||
return request<API.Response & { data?: API.GetPromoPriceListResponse }>(
|
||||
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/promo/price/list`,
|
||||
{
|
||||
method: "GET",
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/** Delete promo price DELETE /v1/admin/promo/price/:id */
|
||||
export async function deletePromoPrice(
|
||||
params: API.DeletePromoPriceParams,
|
||||
options?: Record<string, unknown>
|
||||
) {
|
||||
return request<API.Response & { data?: unknown }>(
|
||||
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/promo/price/${params.id}`,
|
||||
{
|
||||
method: "DELETE",
|
||||
...(options || {}),
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/** Get promo usage list GET /v1/admin/promo/usage/list */
|
||||
export async function getPromoUsageList(
|
||||
params: API.GetPromoUsageListParams,
|
||||
options?: Record<string, unknown>
|
||||
) {
|
||||
return request<API.Response & { data?: API.GetPromoUsageListResponse }>(
|
||||
`${import.meta.env.VITE_API_PREFIX || ""}/v1/admin/promo/usage/list`,
|
||||
{
|
||||
method: "GET",
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
}
|
||||
);
|
||||
}
|
||||
+118
@@ -272,6 +272,69 @@ declare namespace API {
|
||||
enabled: boolean;
|
||||
};
|
||||
|
||||
type PromoRuleType = "new_user" | "inactive_user" | "campaign";
|
||||
|
||||
type PromoRuleParams = {
|
||||
inactive_months?: number;
|
||||
window_hours?: number;
|
||||
[key: string]: unknown;
|
||||
};
|
||||
|
||||
type PromoRule = {
|
||||
id: number;
|
||||
name: string;
|
||||
type: PromoRuleType;
|
||||
params: PromoRuleParams;
|
||||
priority: number;
|
||||
enabled: boolean;
|
||||
start_time?: number;
|
||||
end_time?: number;
|
||||
created_at?: number;
|
||||
updated_at?: number;
|
||||
};
|
||||
|
||||
type CreatePromoRuleRequest = {
|
||||
name: string;
|
||||
type: PromoRuleType;
|
||||
params: PromoRuleParams;
|
||||
priority: number;
|
||||
enabled: boolean;
|
||||
start_time?: number;
|
||||
end_time?: number;
|
||||
};
|
||||
|
||||
type UpdatePromoRuleRequest = CreatePromoRuleRequest;
|
||||
|
||||
type PromoPrice = {
|
||||
id: number;
|
||||
rule_id: number;
|
||||
subscribe_id: number;
|
||||
subscribe_name?: string;
|
||||
unit_price: number;
|
||||
promo_price: number;
|
||||
created_at?: number;
|
||||
updated_at?: number;
|
||||
};
|
||||
|
||||
type CreatePromoPriceRequest = {
|
||||
rule_id: number;
|
||||
subscribe_id: number;
|
||||
promo_price: number;
|
||||
};
|
||||
|
||||
type PromoUsage = {
|
||||
id: number;
|
||||
rule_id: number;
|
||||
rule_name?: string;
|
||||
subscribe_id: number;
|
||||
subscribe_name?: string;
|
||||
user_id: number;
|
||||
order_no: string;
|
||||
unit_price: number;
|
||||
promo_price: number;
|
||||
used_at: number;
|
||||
};
|
||||
|
||||
type CreateOrderRequest = {
|
||||
user_id: number;
|
||||
type: number;
|
||||
@@ -929,6 +992,61 @@ declare namespace API {
|
||||
list: Coupon[];
|
||||
};
|
||||
|
||||
type GetPromoRuleListParams = {
|
||||
page: number;
|
||||
size: number;
|
||||
type?: PromoRuleType;
|
||||
enabled?: boolean;
|
||||
search?: string;
|
||||
};
|
||||
|
||||
type GetPromoRuleListResponse = {
|
||||
total: number;
|
||||
list: PromoRule[];
|
||||
};
|
||||
|
||||
type GetPromoRuleDetailParams = {
|
||||
id: number;
|
||||
};
|
||||
|
||||
type UpdatePromoRuleParams = {
|
||||
id: number;
|
||||
};
|
||||
|
||||
type DeletePromoRuleParams = {
|
||||
id: number;
|
||||
};
|
||||
|
||||
type GetPromoPriceListParams = {
|
||||
page: number;
|
||||
size: number;
|
||||
rule_id?: number;
|
||||
subscribe_id?: number;
|
||||
};
|
||||
|
||||
type GetPromoPriceListResponse = {
|
||||
total: number;
|
||||
list: PromoPrice[];
|
||||
};
|
||||
|
||||
type DeletePromoPriceParams = {
|
||||
id: number;
|
||||
};
|
||||
|
||||
type GetPromoUsageListParams = {
|
||||
page: number;
|
||||
size: number;
|
||||
rule_id?: number;
|
||||
subscribe_id?: number;
|
||||
user_id?: number;
|
||||
order_no?: string;
|
||||
};
|
||||
|
||||
type GetPromoUsageListResponse = {
|
||||
total: number;
|
||||
list: PromoUsage[];
|
||||
};
|
||||
|
||||
type GetDetailRequest = {
|
||||
id: number;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user