feat(invitation): 新增返利统计汇总与时间筛选
This commit is contained in:
@@ -56,6 +56,9 @@ export interface AdminInvitationQuery {
|
||||
invitee_phone?: string
|
||||
order_no?: string
|
||||
trade_role?: string
|
||||
source?: string
|
||||
start_date?: string
|
||||
end_date?: string
|
||||
distribution_site_id?: number
|
||||
inviter_id?: number
|
||||
invitee_id?: number
|
||||
@@ -63,6 +66,43 @@ export interface AdminInvitationQuery {
|
||||
page_size?: number
|
||||
}
|
||||
|
||||
export interface AdminRebateDailyStat {
|
||||
date: string
|
||||
ledger_count: number
|
||||
rebate_amount_cent: number
|
||||
order_amount_cent: number
|
||||
pickup_amount_cent: number
|
||||
}
|
||||
|
||||
export interface AdminRebateInviterStat {
|
||||
inviter_id: number
|
||||
inviter_phone: string
|
||||
inviter_nickname: string
|
||||
ledger_count: number
|
||||
rebate_amount_cent: number
|
||||
}
|
||||
|
||||
export interface AdminRebateSummary {
|
||||
total_rebate_cent: number
|
||||
ledger_count: number
|
||||
inviter_count: number
|
||||
invitee_count: number
|
||||
avg_rebate_cent: number
|
||||
order_rebate_cent: number
|
||||
order_count: number
|
||||
pickup_rebate_cent: number
|
||||
pickup_count: number
|
||||
buyer_rebate_cent: number
|
||||
buyer_count: number
|
||||
seller_rebate_cent: number
|
||||
seller_count: number
|
||||
first_month_cent: number
|
||||
second_month_cent: number
|
||||
subsequent_cent: number
|
||||
daily: AdminRebateDailyStat[]
|
||||
top_inviters: AdminRebateInviterStat[]
|
||||
}
|
||||
|
||||
export async function fetchAdminInvitations(query: AdminInvitationQuery = {}) {
|
||||
const { data } = await apiClient.get<ApiResponse<PaginatedResult<AdminInvitationRow>>>(
|
||||
'/admin/invitations',
|
||||
@@ -86,3 +126,31 @@ export async function fetchAdminRebates(query: AdminInvitationQuery = {}) {
|
||||
total: Number(result?.total ?? 0),
|
||||
}
|
||||
}
|
||||
|
||||
export async function fetchAdminRebateSummary(query: AdminInvitationQuery = {}) {
|
||||
const { data } = await apiClient.get<ApiResponse<AdminRebateSummary>>(
|
||||
'/admin/invitations/rebates/summary',
|
||||
{ params: query }
|
||||
)
|
||||
const result = data.data
|
||||
return {
|
||||
total_rebate_cent: Number(result?.total_rebate_cent ?? 0),
|
||||
ledger_count: Number(result?.ledger_count ?? 0),
|
||||
inviter_count: Number(result?.inviter_count ?? 0),
|
||||
invitee_count: Number(result?.invitee_count ?? 0),
|
||||
avg_rebate_cent: Number(result?.avg_rebate_cent ?? 0),
|
||||
order_rebate_cent: Number(result?.order_rebate_cent ?? 0),
|
||||
order_count: Number(result?.order_count ?? 0),
|
||||
pickup_rebate_cent: Number(result?.pickup_rebate_cent ?? 0),
|
||||
pickup_count: Number(result?.pickup_count ?? 0),
|
||||
buyer_rebate_cent: Number(result?.buyer_rebate_cent ?? 0),
|
||||
buyer_count: Number(result?.buyer_count ?? 0),
|
||||
seller_rebate_cent: Number(result?.seller_rebate_cent ?? 0),
|
||||
seller_count: Number(result?.seller_count ?? 0),
|
||||
first_month_cent: Number(result?.first_month_cent ?? 0),
|
||||
second_month_cent: Number(result?.second_month_cent ?? 0),
|
||||
subsequent_cent: Number(result?.subsequent_cent ?? 0),
|
||||
daily: Array.isArray(result?.daily) ? result.daily : [],
|
||||
top_inviters: Array.isArray(result?.top_inviters) ? result.top_inviters : [],
|
||||
} satisfies AdminRebateSummary
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user