import { request } from '@umijs/max'; import type { ApiResponse, CurrentUser, LoginParams, LoginResult, PaginatedData, PaginationParams, Product, StockSummary, StockGroup, StockCheck, StockAdjust, User, Role, Menu, OperationLog, SystemConfig, Relation, RelationHistory, } from '@/types/api'; // ── Auth ────────────────────────────────────────── export const login = (data: LoginParams) => request>('/api/v1/auth/login', { method: 'POST', data }); export const logout = () => request('/api/v1/auth/logout', { method: 'POST' }); export const getUserInfo = () => request>('/api/v1/auth/info', { method: 'GET' }); export const changePassword = (data: { oldPassword: string; newPassword: string }) => request('/api/v1/auth/password', { method: 'PUT', data }); // ── Users ───────────────────────────────────────── export const listUsers = (params: PaginationParams & { username?: string; realName?: string }) => request>>('/api/v1/system/users', { method: 'GET', params }); export const getUser = (id: string) => request>(`/api/v1/system/users/${id}`, { method: 'GET' }); export const createUser = (data: Partial & { password?: string }) => request('/api/v1/system/users', { method: 'POST', data }); export const updateUser = (id: string, data: Partial) => request(`/api/v1/system/users/${id}`, { method: 'PUT', data }); export const deleteUser = (id: string) => request(`/api/v1/system/users/${id}`, { method: 'DELETE' }); export const updateUserStatus = (id: string, status: number) => request(`/api/v1/system/users/${id}/status`, { method: 'PUT', data: { status } }); // ── Roles ───────────────────────────────────────── export const listRoles = (params?: PaginationParams & { roleName?: string }) => request>>('/api/v1/system/roles', { method: 'GET', params }); export const createRole = (data: Partial) => request('/api/v1/system/roles', { method: 'POST', data }); export const updateRole = (id: string, data: Partial) => request(`/api/v1/system/roles/${id}`, { method: 'PUT', data }); export const deleteRole = (id: string) => request(`/api/v1/system/roles/${id}`, { method: 'DELETE' }); export const setRolePermissions = (id: string, menuIds: string[]) => request(`/api/v1/system/roles/${id}/permissions`, { method: 'PUT', data: { menuIds } }); // ── Menus ───────────────────────────────────────── export const listMenus = () => request>>('/api/v1/system/menus', { method: 'GET' }); export const createMenu = (data: Partial) => request('/api/v1/system/menus', { method: 'POST', data }); export const updateMenu = (id: string, data: Partial) => request(`/api/v1/system/menus/${id}`, { method: 'PUT', data }); export const deleteMenu = (id: string) => request(`/api/v1/system/menus/${id}`, { method: 'DELETE' }); // ── Logs ────────────────────────────────────────── export const listLogs = (params: PaginationParams & { username?: string; module?: string; operation?: string }) => request>>('/api/v1/system/logs', { method: 'GET', params }); // ── Configs ─────────────────────────────────────── export const listConfigs = () => request>>('/api/v1/system/configs', { method: 'GET' }); export const updateConfig = (key: string, value: string) => request(`/api/v1/system/configs/${key}`, { method: 'PUT', data: { configValue: value } }); // ── Products ────────────────────────────────────── export const listProducts = (params: PaginationParams & { productName?: string; spec?: string; color?: string; location?: string }) => request>>('/api/v1/inventory/products', { method: 'GET', params }); export const getProduct = (id: string) => request>(`/api/v1/inventory/products/${id}`, { method: 'GET' }); export const createProduct = (data: Partial) => request('/api/v1/inventory/products', { method: 'POST', data }); export const updateProduct = (id: string, data: Partial) => request(`/api/v1/inventory/products/${id}`, { method: 'PUT', data }); export const deleteProduct = (id: string) => request(`/api/v1/inventory/products/${id}`, { method: 'DELETE' }); export const exportProducts = () => request('/api/v1/inventory/products/export', { method: 'GET', responseType: 'blob' }); // ── Stocks ──────────────────────────────────────── export const getStockSummary = () => request>('/api/v1/inventory/stocks/summary', { method: 'GET' }); export const getStockByColor = () => request>>('/api/v1/inventory/stocks/by-color', { method: 'GET' }); export const getStockByLocation = () => request>>('/api/v1/inventory/stocks/by-location', { method: 'GET' }); // ── Stock Checks ────────────────────────────────── export const listStockChecks = (params: PaginationParams) => request>>('/api/v1/inventory/checks', { method: 'GET', params }); export const getStockCheck = (id: string) => request>(`/api/v1/inventory/checks/${id}`, { method: 'GET' }); export const createStockCheck = (data: Partial) => request('/api/v1/inventory/checks', { method: 'POST', data }); export const confirmStockCheck = (id: string) => request(`/api/v1/inventory/checks/${id}/confirm`, { method: 'POST' }); // ── Stock Adjusts ───────────────────────────────── export const listStockAdjusts = (params: PaginationParams) => request>>('/api/v1/inventory/adjusts', { method: 'GET', params }); export const getStockAdjust = (id: string) => request>(`/api/v1/inventory/adjusts/${id}`, { method: 'GET' }); export const createStockAdjust = (data: Partial) => request('/api/v1/inventory/adjusts', { method: 'POST', data }); export const approveStockAdjust = (id: string, action: number) => request(`/api/v1/inventory/adjusts/${id}/approve`, { method: 'POST', data: { action } }); // ── CRM Relations ───────────────────────────────── export const listUpstream = (depth = 1) => request>>('/api/v1/crm/graph/upstream', { method: 'GET', params: { depth } }); export const listDownstream = (depth = 1) => request>>('/api/v1/crm/graph/downstream', { method: 'GET', params: { depth } }); export const createRelation = (data: { fromTenantId: string; toTenantId: string; relationType: string; validFrom?: string; validTo?: string; }) => request('/api/v1/crm/relationships', { method: 'POST', data }); export const updateRelation = (id: string, data: { status: number; validFrom?: string; validTo?: string }) => request(`/api/v1/crm/relationships/${id}`, { method: 'PUT', data }); export const listRelationHistory = (params?: PaginationParams) => request>>('/api/v1/crm/relationships/history', { method: 'GET', params });