feat: membership benefits refinement - permissions and quotas linked to plans

This commit is contained in:
qyyfw committed 2026-07-07 15:39:01 +08:00
1 parent 0886c26157
commit 839be8f97f
4 files changed
+1188 -426

No files matched your search

+19 -4
View File
@@ -360,13 +360,28 @@ export const adminAPI = {
updateCustomRequest: (id: string, data: any) => put<any>(`/admin/services/custom-requests/${id}`, data),
getAvailableAgents: () => get<any[]>('/admin/services/agents'),
assignAgentToService: (id: string, agentId: string) => put<any>(`/admin/services/${id}/agent?agent_id=${agentId}`),
// 会员管理
// 会员管理(增强版)
getPlans: () => get<any[]>('/admin/membership/plans'),
addPlan: (data: any) => post<any>('/admin/membership/plans', data),
updatePlan: (id: string, data: any) => put<any>(`/admin/membership/plans/${id}`, data),
addPlan: (params: string) => post<any>(`/admin/membership/plans${params}`),
updatePlan: (id: string, params: string) => put<any>(`/admin/membership/plans/${id}${params}`),
deletePlan: (id: string) => del<any>(`/admin/membership/plans/${id}`),
getSubscriptions: () => get<any[]>('/admin/membership/subscriptions'),
getSubscriptions: (page?: number) => get<any>(`/admin/membership/subscriptions${page ? `?page=${page}` : ''}`),
getAutomationRules: () => get<any>('/admin/membership/automation-rules'),
getBenefitsComparison: () => get<any>('/admin/membership/benefits-comparison'),
getMembershipConfigs: () => get<any[]>('/admin/membership/global-configs'),
updateMembershipConfig: (key: string, params: string) => put<any>(`/admin/membership/global-configs/${key}${params}`),
getUserMemberships: (page?: number, planId?: string, status?: string) => {
const p = new URLSearchParams();
if (page) p.append('page', String(page));
if (planId) p.append('plan_id', planId);
if (status) p.append('status', status);
const qs = p.toString();
return get<any>(`/admin/membership/user-memberships${qs ? `?${qs}` : ''}`);
},
assignPlan: (userId: string, planId: string, days: number) => put<any>(`/admin/membership/users/${userId}/assign-plan?plan_id=${planId}&duration_days=${days}`),
revokeMembership: (userId: string) => put<any>(`/admin/membership/users/${userId}/revoke`),
getUserUsage: (userId: string) => get<any>(`/admin/membership/users/${userId}/usage`),
getMembershipStats: () => get<any>('/admin/membership/stats'),
// 广告管理
getAds: () => get<any[]>('/admin/ads/'),
addAd: (data: any) => post<any>('/admin/ads/', data),
File diff suppressed because it is too large. Load diff