/** * 佣金管理相关 API */ import { BaseService } from '../BaseService' import type { BaseResponse } from '@/types/api' import type { WithdrawalRequestQueryParams, WithdrawalRequestPageResult, ApproveWithdrawalParams, RejectWithdrawalParams, WithdrawalSettingListResult, WithdrawalSettingItem, CreateWithdrawalSettingParams, CommissionRecordQueryParams, SubmitWithdrawalParams, ShopCommissionRecordPageResult, ShopCommissionRecordDetail, ShopCommissionRecordSource, ShopFundSummaryQueryParams, ShopFundSummaryPageResult, ShopCommissionStatsQueryParams, CommissionStatsResponse, DailyCommissionStatsQueryParams, DailyCommissionStatsItem, ResolveCommissionParams, MainWalletTransactionQueryParams, MainWalletTransactionPageResult, WithdrawalQualificationSubmitParams, WithdrawalQualificationQueryParams, WithdrawalQualificationPageResult, VoidWithdrawalQualificationParams, ResubmitWithdrawalRequestParams, WithdrawalRequestDetail, } from '@/types/api/commission' export class CommissionService extends BaseService { // ==================== 提现资料资格相关 ==================== /** * 提交/替换提现资料资格 * POST /api/admin/shops/{shop_id}/withdrawal-qualifications */ static submitWithdrawalQualification( shopId: number, data: WithdrawalQualificationSubmitParams ): Promise> { return this.post>( `/api/admin/shops/${shopId}/withdrawal-qualifications`, data ) } /** * 查询提现资料资格 * GET /api/admin/shops/{shop_id}/withdrawal-qualifications */ static getWithdrawalQualifications( shopId: number, params?: WithdrawalQualificationQueryParams ): Promise> { return this.get>( `/api/admin/shops/${shopId}/withdrawal-qualifications`, params ) } /** * 作废提现资料资格(超管) * POST /api/admin/withdrawal-qualifications/{id}/void */ static voidWithdrawalQualification( id: number, data: VoidWithdrawalQualificationParams ): Promise { return this.post(`/api/admin/withdrawal-qualifications/${id}/void`, data) } /** * 重提被驳回的提现 * PUT /api/admin/shops/{shop_id}/withdrawal-requests/{id} */ static resubmitWithdrawalRequest( shopId: number, id: number, data: ResubmitWithdrawalRequestParams ): Promise> { return this.put>( `/api/admin/shops/${shopId}/withdrawal-requests/${id}`, data ) } /** * 提现申请详情 * GET /api/admin/shops/{shop_id}/withdrawal-requests/{id} */ static getWithdrawalRequestDetail( shopId: number, id: number ): Promise> { return this.get>( `/api/admin/shops/${shopId}/withdrawal-requests/${id}` ) } // ==================== 提现申请管理 ==================== /** * 获取提现申请列表 * GET /api/admin/commission/withdrawal-requests */ static getWithdrawalRequests( params?: WithdrawalRequestQueryParams ): Promise> { return this.get>( '/api/admin/commission/withdrawal-requests', params ) } /** * 审批通过提现申请 * POST /api/admin/commission/withdrawal-requests/{id}/approve */ static approveWithdrawal(id: number, params?: ApproveWithdrawalParams): Promise { return this.post( `/api/admin/commission/withdrawal-requests/${id}/approve`, params ) } /** * 拒绝提现申请 * POST /api/admin/commission/withdrawal-requests/{id}/reject */ static rejectWithdrawal(id: number, params: RejectWithdrawalParams): Promise { return this.post(`/api/admin/commission/withdrawal-requests/${id}/reject`, params) } // ==================== 提现配置管理 ==================== /** * 获取提现配置列表 * GET /api/admin/commission/withdrawal-settings */ static getWithdrawalSettings(): Promise> { return this.get>( '/api/admin/commission/withdrawal-settings' ) } /** * 新增提现配置 * POST /api/admin/commission/withdrawal-settings */ static createWithdrawalSetting(params: CreateWithdrawalSettingParams): Promise { return this.post('/api/admin/commission/withdrawal-settings', params) } /** * 获取当前生效的提现配置 * GET /api/admin/commission/withdrawal-settings/current */ static getCurrentWithdrawalSetting(): Promise> { return this.get>( '/api/admin/commission/withdrawal-settings/current' ) } // ==================== 代理商资金概况 ==================== /** * 获取代理商资金明细 * GET /api/admin/shops/{shop_id}/commission-records */ static getShopCommissionRecords( shopId: number, params?: CommissionRecordQueryParams ): Promise> { return this.get>( `/api/admin/shops/${shopId}/commission-records`, params ) } /** * 获取佣金明细详情 * GET /api/admin/shops/{shop_id}/commission-records/{id} * source 省略时按原佣金处理;越权与不存在返回同一结果(佣金明细不存在) */ static getShopCommissionRecordDetail( shopId: number, id: number, source?: ShopCommissionRecordSource ): Promise> { return this.get>( `/api/admin/shops/${shopId}/commission-records/${id}`, source ? { source } : undefined ) } /** * 获取代理商提现记录 * GET /api/admin/shops/{shop_id}/withdrawal-requests */ static getShopWithdrawalRequests( shopId: number, params?: WithdrawalRequestQueryParams ): Promise> { return this.get>( `/api/admin/shops/${shopId}/withdrawal-requests`, params ) } /** * 获取代理商资金汇总列表(含预充值余额 + 佣金) * GET /api/admin/shops/fund-summary */ static getShopFundSummary( params?: ShopFundSummaryQueryParams ): Promise> { return this.get>( '/api/admin/shops/fund-summary', params ) } /** * 获取代理商资金统计 * GET /api/admin/shops/{shop_id}/commission-stats */ static getShopCommissionStats( shopId: number, params?: ShopCommissionStatsQueryParams ): Promise> { return this.get>( `/api/admin/shops/${shopId}/commission-stats`, params ) } /** * 获取代理商每日佣金统计 * GET /api/admin/shops/{shop_id}/commission-daily-stats */ static getShopDailyCommissionStats( shopId: number, params?: DailyCommissionStatsQueryParams ): Promise> { return this.get>( `/api/admin/shops/${shopId}/commission-daily-stats`, params ) } /** * 发起代理商提现申请 * POST /api/admin/shops/{shop_id}/withdrawal-requests */ static submitShopWithdrawalRequest( shopId: number, params: SubmitWithdrawalParams ): Promise { return this.post(`/api/admin/shops/${shopId}/withdrawal-requests`, params) } /** * 获取预充值钱包流水 * GET /api/admin/shops/{shop_id}/main-wallet/transactions */ static getMainWalletTransactions( shopId: number, params?: MainWalletTransactionQueryParams ): Promise> { return this.get>( `/api/admin/shops/${shopId}/main-wallet/transactions`, params ) } // ==================== 佣金记录修正 ==================== /** * 修正待审佣金记录 * POST /api/admin/commission-records/{id}/resolve */ static resolveCommissionRecord( id: number, params: ResolveCommissionParams ): Promise { return this.post(`/api/admin/commission-records/${id}/resolve`, params) } }