Files
order_site/apps/frontend/src/services/worker.ts
T
yml2213 51d72cc283 接单平台新增 VIP 等级体系与邀请绑定
- 等级按累计验收通过工单数自动升级(阈值后台可配),VIP1-5 默认配置 10/30/50/100
- 存量打手统一归 VIP1,原 regular 等级停用
- 注册支持邀请码绑定邀请人,每人生成唯一邀请码
- 新增 worker_level_logs 升级流水表
- 个人中心展示邀请码与升级进度,管理端等级表单支持升级阈值配置
2026-08-01 14:50:08 +08:00

135 lines
3.3 KiB
TypeScript

import { apiGet, apiPost } from '@/lib/http'
import type {
CollectLookupResponse,
UploadedFile,
WorkOrder,
WorkerFinanceRequest,
WorkerListResponse,
WorkerLoginResponse,
WorkerProfileResponse,
WorkerUser,
WorkerWalletLedger,
} from '@/types/worker-platform'
export function registerWorker(payload: {
username: string
password: string
displayName?: string
phone?: string
inviteCode?: string
}) {
return apiPost<{ worker: WorkerUser; reviewRequired: boolean }>(
'/api/v1/worker/auth/register',
payload,
)
}
export function loginWorker(payload: { username: string; password: string }) {
return apiPost<WorkerLoginResponse>('/api/v1/worker/auth/login', payload)
}
export function fetchWorkerSession() {
return apiGet<{
authenticated: boolean
expiresAt: string
worker: WorkerUser
}>('/api/v1/worker/auth/session')
}
export function logoutWorker() {
return apiPost<{ success: boolean }>('/api/v1/worker/auth/logout')
}
export function fetchWorkerProfile() {
return apiGet<WorkerProfileResponse>('/api/v1/worker/profile')
}
export function fetchWorkerWalletLedgers(params?: Record<string, unknown>) {
return apiGet<WorkerListResponse<WorkerWalletLedger>>(
'/api/v1/worker/profile/wallet-ledgers',
params,
)
}
export function fetchWorkerFinanceRequests(params?: Record<string, unknown>) {
return apiGet<WorkerListResponse<WorkerFinanceRequest>>(
'/api/v1/worker/profile/finance-requests',
params,
)
}
export function createWorkerRechargeRequest(payload: {
amount?: number
note?: string
}) {
return apiPost<{ request: WorkerFinanceRequest }>(
'/api/v1/worker/profile/recharge-requests',
payload,
)
}
export function createWorkerWithdrawRequest(payload: {
amount?: number
accountChannel?: string
accountName?: string
accountNo?: string
note?: string
}) {
return apiPost<{ request: WorkerFinanceRequest }>(
'/api/v1/worker/profile/withdraw-requests',
payload,
)
}
export function changeWorkerPassword(payload: {
currentPassword: string
newPassword: string
}) {
return apiPost<{ worker: WorkerUser; reloginRequired: boolean }>(
'/api/v1/worker/profile/change-password',
payload,
)
}
export function fetchWorkerHallOrders(params?: Record<string, unknown>) {
return apiGet<WorkerListResponse<WorkOrder>>(
'/api/v1/worker/hall/orders',
params,
)
}
export function grabWorkerOrder(workOrderId: number) {
return apiPost<{ order: WorkOrder }>(
`/api/v1/worker/hall/orders/${workOrderId}/grab`,
)
}
export function fetchWorkerMyOrders(params?: Record<string, unknown>) {
return apiGet<WorkerListResponse<WorkOrder>>('/api/v1/worker/orders', params)
}
export function submitWorkerAcceptance(
workOrderId: number,
payload: { note?: string; imageUrls?: string[]; files?: UploadedFile[] },
) {
return apiPost<{ order: WorkOrder }>(
`/api/v1/worker/orders/${workOrderId}/submit-acceptance`,
payload,
)
}
export function lookupCollectOrder(orderNo: string) {
return apiPost<CollectLookupResponse>('/api/v1/collect/lookup', { orderNo })
}
export function submitCollectOrder(payload: {
orderNo: string
workOrderId?: number
fields: Record<string, string>
}) {
return apiPost<{ complete: boolean; order: Record<string, unknown> }>(
'/api/v1/collect/submit',
payload,
)
}