From 8490b7a2c641e8ecb319f81ba4b59c397a6bdcdc Mon Sep 17 00:00:00 2001 From: zhangjf Date: Sun, 22 Feb 2026 23:06:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=85=A8=E9=9D=A2=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=BD=91=E5=85=B3=E8=B7=AF=E7=94=B1=E4=B8=8E=E5=89=8D=E7=AB=AF?= =?UTF-8?q?API=E8=B7=AF=E5=BE=84=E4=B8=80=E8=87=B4=E6=80=A7=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题分析: 1. 后端Controller路径不一致: - fund-cust: /api/v1/customer (不是/api/v1/cust/customer) - fund-proj: /api/v1/project (不是/api/v1/proj/project) - fund-sys: /api/v1/auth 和 /api/v1/sys/* 两种路径 2. 之前的错误修改导致路径不匹配 解决方案: - 网关: StripPrefix=1 + PrefixPath=/api/v1 - 前端: baseURL=/fund,路径直接对应后端路径 网关路由配置: - fund-sys: /fund/auth/**,/fund/sys/** -> /api/v1/auth/*,/api/v1/sys/* - fund-cust: /fund/customer/** -> /api/v1/customer/* - fund-proj: /fund/project/**,/fund/requirement/** -> /api/v1/project/*,/api/v1/requirement/* - fund-exp: /fund/exp/** -> /api/v1/exp/* - fund-receipt: /fund/receipt/** -> /api/v1/receipt/* - fund-report: /fund/report/** -> /api/v1/report/* - fund-file: /fund/file/** -> /api/v1/file/* 前端API路径规范: - 认证: /auth/login -> /api/v1/auth/login - 用户: /sys/user/page -> /api/v1/sys/user/page - 客户: /customer/page -> /api/v1/customer/page - 项目: /project/page -> /api/v1/project/page - 支出: /exp/expense/page -> /api/v1/exp/expense/page - 收款: /receipt/receivable/page -> /api/v1/receipt/receivable/page - 报表: /report/stats -> /api/v1/report/stats - 文件: /file/upload -> /api/v1/file/upload 修改文件: - fund-gateway/application.yml: 路由配置调整 - TenantGatewayFilter.java: 白名单路径修正 - TokenAuthFilter.java: 白名单路径修正 - fund-admin/src/api/*.ts: 所有API路径修正 - fund-mobile/src/api/index.ts: 所有API路径修正 - FileUpload组件: 上传路径修正 --- fund-admin/src/api/auth.ts | 8 ++--- fund-admin/src/api/config.ts | 18 +++++------ fund-admin/src/api/customer.ts | 20 ++++++------ fund-admin/src/api/dept.ts | 12 +++---- fund-admin/src/api/expense.ts | 32 +++++++++---------- fund-admin/src/api/file.ts | 12 +++---- fund-admin/src/api/menu.ts | 14 ++++---- fund-admin/src/api/project.ts | 20 ++++++------ fund-admin/src/api/receivable.ts | 26 +++++++-------- fund-admin/src/api/report.ts | 12 +++---- fund-admin/src/api/role.ts | 14 ++++---- fund-admin/src/api/tenant.ts | 12 +++---- fund-admin/src/api/user.ts | 18 +++++------ .../src/components/FileUpload/index.vue | 2 +- .../gateway/filter/TenantGatewayFilter.java | 25 +++++++-------- .../gateway/filter/TokenAuthFilter.java | 21 ++++++------ .../src/main/resources/application.yml | 29 ++++++++++------- fund-mobile/src/api/index.ts | 30 ++++++++--------- 18 files changed, 164 insertions(+), 161 deletions(-) diff --git a/fund-admin/src/api/auth.ts b/fund-admin/src/api/auth.ts index 3691946..c657f24 100644 --- a/fund-admin/src/api/auth.ts +++ b/fund-admin/src/api/auth.ts @@ -2,20 +2,20 @@ import { request } from './request' // 登录 export function login(data: { username: string; password: string }) { - return request.post('/sys/auth/login', data) + return request.post('/auth/login', data) } // 登出 export function logout() { - return request.post('/sys/auth/logout') + return request.post('/auth/logout') } // 获取当前用户信息 export function getUserInfo() { - return request.get('/sys/auth/info') + return request.get('/auth/info') } // 刷新Token export function refreshToken() { - return request.post('/sys/auth/refresh') + return request.post('/auth/refresh') } diff --git a/fund-admin/src/api/config.ts b/fund-admin/src/api/config.ts index 7559326..a464454 100644 --- a/fund-admin/src/api/config.ts +++ b/fund-admin/src/api/config.ts @@ -2,12 +2,12 @@ import { request } from './request' // 获取参数分组列表 export function getConfigGroups() { - return request.get('/sys/sys/config/groups') + return request.get('/sys/config/groups') } // 获取参数列表 export function getConfigList(groupCode?: string) { - return request.get('/sys/sys/config/list', { + return request.get('/sys/config/list', { params: { groupCode } }) } @@ -19,17 +19,17 @@ export function getConfigPage(params: { configKey?: string groupCode?: string }) { - return request.get('/sys/sys/config/page', { params }) + return request.get('/sys/config/page', { params }) } // 获取参数详情 export function getConfigById(id: number) { - return request.get(`/sys/sys/config/${id}`) + return request.get(`/sys/config/${id}`) } // 根据key获取参数值 export function getConfigByKey(configKey: string) { - return request.get(`/sys/sys/config/key/${configKey}`) + return request.get(`/sys/config/key/${configKey}`) } // 创建参数 @@ -42,7 +42,7 @@ export function createConfig(data: { groupName?: string sortOrder?: number }) { - return request.post('/sys/sys/config', data) + return request.post('/sys/config', data) } // 更新参数 @@ -53,7 +53,7 @@ export function updateConfig(data: { status?: number sortOrder?: number }) { - return request.put('/sys/sys/config', data) + return request.put('/sys/config', data) } // 批量更新参数值 @@ -61,10 +61,10 @@ export function batchUpdateConfig(configs: Array<{ id: number configValue: string }>) { - return request.put('/sys/sys/config/batch', configs) + return request.put('/sys/config/batch', configs) } // 删除参数 export function deleteConfig(id: number) { - return request.delete(`/sys/sys/config/${id}`) + return request.delete(`/sys/config/${id}`) } diff --git a/fund-admin/src/api/customer.ts b/fund-admin/src/api/customer.ts index fbba065..c228078 100644 --- a/fund-admin/src/api/customer.ts +++ b/fund-admin/src/api/customer.ts @@ -1,42 +1,42 @@ import { request } from './request' export function getCustomerList(params: { pageNum: number; pageSize: number; customerName?: string; status?: number }) { - return request.get('/cust/cust/customer/page', { params }) + return request.get('/customer/page', { params }) } export function getCustomerById(id: number) { - return request.get(`/cust/cust/customer/${id}`) + return request.get(`/customer/${id}`) } export function createCustomer(data: any) { - return request.post('/cust/cust/customer', data) + return request.post('/customer', data) } export function updateCustomer(id: number, data: any) { - return request.put(`/cust/cust/customer/${id}`, data) + return request.put(`/customer/${id}`, data) } export function deleteCustomer(id: number) { - return request.delete(`/cust/cust/customer/${id}`) + return request.delete(`/customer/${id}`) } // 联系人相关 export function getContactList(params: { pageNum: number; pageSize: number; customerId: number }) { - return request.get('/cust/cust/contact/page', { params }) + return request.get('/customer/contact/page', { params }) } export function createContact(data: any) { - return request.post('/cust/cust/contact', data) + return request.post('/customer/contact', data) } export function updateContact(id: number, data: any) { - return request.put(`/cust/cust/contact/${id}`, data) + return request.put(`/customer/contact/${id}`, data) } export function deleteContact(id: number) { - return request.delete(`/cust/cust/contact/${id}`) + return request.delete(`/customer/contact/${id}`) } export function setPrimaryContact(customerId: number, contactId: number) { - return request.put(`/cust/cust/customer/${customerId}/contact/${contactId}/primary`) + return request.put(`/customer/${customerId}/contact/${contactId}/primary`) } diff --git a/fund-admin/src/api/dept.ts b/fund-admin/src/api/dept.ts index 5d09ab1..2086bf9 100644 --- a/fund-admin/src/api/dept.ts +++ b/fund-admin/src/api/dept.ts @@ -1,25 +1,25 @@ import { request } from './request' export function getDeptList(params?: { deptName?: string; status?: number }) { - return request.get('/sys/sys/dept/list', { params }) + return request.get('/sys/dept/list', { params }) } export function getDeptTree() { - return request.get('/sys/sys/dept/tree') + return request.get('/sys/dept/tree') } export function getDeptById(id: number) { - return request.get(`/sys/sys/dept/${id}`) + return request.get(`/sys/dept/${id}`) } export function createDept(data: any) { - return request.post('/sys/sys/dept', data) + return request.post('/sys/dept', data) } export function updateDept(data: any) { - return request.put('/sys/sys/dept', data) + return request.put('/sys/dept', data) } export function deleteDept(id: number) { - return request.delete(`/sys/sys/dept/${id}`) + return request.delete(`/sys/dept/${id}`) } diff --git a/fund-admin/src/api/expense.ts b/fund-admin/src/api/expense.ts index 6c0043d..72061b7 100644 --- a/fund-admin/src/api/expense.ts +++ b/fund-admin/src/api/expense.ts @@ -2,65 +2,65 @@ import { request } from './request' // 支出类型 export function getExpenseTypeList(params: { pageNum: number; pageSize: number; typeName?: string; status?: string }) { - return request.get('/exp/exp/expense-type/page', { params }) + return request.get('/exp/expense-type/page', { params }) } export function getExpenseTypeTree() { - return request.get('/exp/exp/expense-type/tree') + return request.get('/exp/expense-type/tree') } export function createExpenseType(data: any) { - return request.post('/exp/exp/expense-type', data) + return request.post('/exp/expense-type', data) } export function updateExpenseType(id: number, data: any) { - return request.put(`/exp/exp/expense-type/${id}`, data) + return request.put(`/exp/expense-type/${id}`, data) } export function deleteExpenseType(id: number) { - return request.delete(`/exp/exp/expense-type/${id}`) + return request.delete(`/exp/expense-type/${id}`) } // 支出管理 export function getExpenseList(params: { pageNum: number; pageSize: number; title?: string; expenseType?: number; approvalStatus?: number; payStatus?: number }) { - return request.get('/exp/exp/expense/page', { params }) + return request.get('/exp/expense/page', { params }) } export function getExpenseById(id: number) { - return request.get(`/exp/exp/expense/${id}`) + return request.get(`/exp/expense/${id}`) } export function createExpense(data: any) { - return request.post('/exp/exp/expense', data) + return request.post('/exp/expense', data) } export function updateExpense(id: number, data: any) { - return request.put(`/exp/exp/expense/${id}`, data) + return request.put(`/exp/expense/${id}`, data) } export function deleteExpense(id: number) { - return request.delete(`/exp/exp/expense/${id}`) + return request.delete(`/exp/expense/${id}`) } // 审批流程 export function submitExpense(id: number) { - return request.post(`/exp/exp/expense/${id}/submit`) + return request.post(`/exp/expense/${id}/submit`) } export function withdrawExpense(id: number) { - return request.post(`/exp/exp/expense/${id}/withdraw`) + return request.post(`/exp/expense/${id}/withdraw`) } export function approveExpense(id: number, comment: string) { - return request.put(`/exp/exp/expense/${id}/approve?comment=${encodeURIComponent(comment)}`) + return request.put(`/exp/expense/${id}/approve?comment=${encodeURIComponent(comment)}`) } export function rejectExpense(id: number, comment: string) { - return request.put(`/exp/exp/expense/${id}/reject?comment=${encodeURIComponent(comment)}`) + return request.put(`/exp/expense/${id}/reject?comment=${encodeURIComponent(comment)}`) } export function confirmPayExpense(id: number, payChannel: string, payVoucher?: string) { - return request.put(`/exp/exp/expense/${id}/confirm-pay?payChannel=${payChannel}&payVoucher=${payVoucher || ''}`) + return request.put(`/exp/expense/${id}/confirm-pay?payChannel=${payChannel}&payVoucher=${payVoucher || ''}`) } // 导出支出明细 @@ -76,7 +76,7 @@ export function exportExpense(params?: { title?: string; expenseType?: number; a if (params?.payStatus !== undefined) queryParams.append('payStatus', String(params.payStatus)) const queryString = queryParams.toString() - const url = `${baseUrl}/exp/exp/expense/export${queryString ? '?' + queryString : ''}` + const url = `${baseUrl}/exp/expense/export${queryString ? '?' + queryString : ''}` return fetch(url, { headers: { diff --git a/fund-admin/src/api/file.ts b/fund-admin/src/api/file.ts index 4756661..4692408 100644 --- a/fund-admin/src/api/file.ts +++ b/fund-admin/src/api/file.ts @@ -8,7 +8,7 @@ export function uploadFile(file: File, businessType?: string, businessId?: numbe if (businessId) formData.append('businessId', String(businessId)) if (description) formData.append('description', description) - return request.post('/file/file/upload', formData, { + return request.post('/file/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' } @@ -17,25 +17,25 @@ export function uploadFile(file: File, businessType?: string, businessId?: numbe // 获取文件列表 export function getFileList(params: { pageNum: number; pageSize: number; businessType?: string; businessId?: number; fileType?: string }) { - return request.get('/file/file/page', { params }) + return request.get('/file/page', { params }) } // 根据业务查询文件 export function getFilesByBusiness(businessType: string, businessId: number) { - return request.get('/file/file/list', { params: { businessType, businessId } }) + return request.get('/file/list', { params: { businessType, businessId } }) } // 获取文件详情 export function getFileById(id: number) { - return request.get(`/file/file/${id}`) + return request.get(`/file/${id}`) } // 删除文件 export function deleteFile(id: number) { - return request.delete(`/file/file/${id}`) + return request.delete(`/file/${id}`) } // 获取文件下载URL export function getFileDownloadUrl(filePath: string) { - return `/file/file/download/${filePath}` + return `/file/download/${filePath}` } diff --git a/fund-admin/src/api/menu.ts b/fund-admin/src/api/menu.ts index 6a14399..8b99609 100644 --- a/fund-admin/src/api/menu.ts +++ b/fund-admin/src/api/menu.ts @@ -1,30 +1,30 @@ import { request } from './request' export function getMenuList(params?: { menuName?: string; status?: number }) { - return request.get('/sys/sys/menu/tree', { params }) + return request.get('/sys/menu/tree', { params }) } export function getMenuTree() { - return request.get('/sys/sys/menu/tree') + return request.get('/sys/menu/tree') } export function getMenuById(id: number) { - return request.get(`/sys/sys/menu/${id}`) + return request.get(`/sys/menu/${id}`) } export function createMenu(data: any) { - return request.post('/sys/sys/menu', data) + return request.post('/sys/menu', data) } export function updateMenu(data: any) { - return request.put('/sys/sys/menu', data) + return request.put('/sys/menu', data) } export function deleteMenu(id: number) { - return request.delete(`/sys/sys/menu/${id}`) + return request.delete(`/sys/menu/${id}`) } export function getUserMenus(userId?: number) { const id = userId || JSON.parse(localStorage.getItem('userInfo') || '{}').id - return request.get(`/sys/sys/menu/user/${id}`) + return request.get(`/sys/menu/user/${id}`) } diff --git a/fund-admin/src/api/project.ts b/fund-admin/src/api/project.ts index c12c601..73f0e15 100644 --- a/fund-admin/src/api/project.ts +++ b/fund-admin/src/api/project.ts @@ -1,42 +1,42 @@ import { request } from './request' export function getProjectList(params: { pageNum: number; pageSize: number; projectName?: string; status?: string }) { - return request.get('/proj/proj/project/page', { params }) + return request.get('/project/page', { params }) } export function getProjectById(id: number) { - return request.get(`/proj/proj/project/${id}`) + return request.get(`/project/${id}`) } export function createProject(data: any) { - return request.post('/proj/proj/project', data) + return request.post('/project', data) } export function updateProject(id: number, data: any) { - return request.put(`/proj/proj/project/${id}`, data) + return request.put(`/project/${id}`, data) } export function deleteProject(id: number) { - return request.delete(`/proj/proj/project/${id}`) + return request.delete(`/project/${id}`) } // 需求工单 export function getRequirementList(params: { pageNum: number; pageSize: number; requirementName?: string; status?: string }) { - return request.get('/proj/proj/requirement/page', { params }) + return request.get('/requirement/page', { params }) } export function getRequirementById(id: number) { - return request.get(`/proj/proj/requirement/${id}`) + return request.get(`/requirement/${id}`) } export function createRequirement(data: any) { - return request.post('/proj/proj/requirement', data) + return request.post('/requirement', data) } export function updateRequirement(id: number, data: any) { - return request.put(`/proj/proj/requirement/${id}`, data) + return request.put(`/requirement/${id}`, data) } export function deleteRequirement(id: number) { - return request.delete(`/proj/proj/requirement/${id}`) + return request.delete(`/requirement/${id}`) } diff --git a/fund-admin/src/api/receivable.ts b/fund-admin/src/api/receivable.ts index 0451503..cb08ba3 100644 --- a/fund-admin/src/api/receivable.ts +++ b/fund-admin/src/api/receivable.ts @@ -2,52 +2,52 @@ import { request } from './request' // 应收款管理 export function getReceivableList(params: { pageNum: number; pageSize: number; projectId?: number; customerId?: number; status?: string; confirmStatus?: number }) { - return request.get('/receipt/receipt/receivable/page', { params }) + return request.get('/receipt/receivable/page', { params }) } export function getReceivableById(id: number) { - return request.get(`/receipt/receipt/receivable/${id}`) + return request.get(`/receipt/receivable/${id}`) } export function createReceivable(data: any) { - return request.post('/receipt/receipt/receivable', data) + return request.post('/receipt/receivable', data) } export function updateReceivable(id: number, data: any) { - return request.put(`/receipt/receipt/receivable/${id}`, data) + return request.put(`/receipt/receivable/${id}`, data) } export function deleteReceivable(id: number) { - return request.delete(`/receipt/receipt/receivable/${id}`) + return request.delete(`/receipt/receivable/${id}`) } export function confirmReceivable(id: number) { - return request.put(`/receipt/receipt/receivable/${id}/confirm`) + return request.put(`/receipt/receivable/${id}/confirm`) } export function cancelConfirmReceivable(id: number) { - return request.put(`/receipt/receipt/receivable/${id}/cancel-confirm`) + return request.put(`/receipt/receivable/${id}/cancel-confirm`) } export function recordReceipt(id: number, data: any) { - return request.post(`/receipt/receipt/receivable/${id}/receipt`, data) + return request.post(`/receipt/receivable/${id}/receipt`, data) } export function getReceiptRecords(receivableId: number) { - return request.get(`/receipt/receipt/receivable/${receivableId}/receipts`) + return request.get(`/receipt/receivable/${receivableId}/receipts`) } // 收款记录 export function getReceiptList(params: { pageNum: number; pageSize: number; receivableId?: number }) { - return request.get('/receipt/receipt/receipt/page', { params }) + return request.get('/receipt/receipt/page', { params }) } export function getReceiptById(id: number) { - return request.get(`/receipt/receipt/receipt/${id}`) + return request.get(`/receipt/receipt/${id}`) } export function createReceipt(data: any) { - return request.post('/receipt/receipt/receipt', data) + return request.post('/receipt/receipt', data) } // 导出应收款明细 @@ -63,7 +63,7 @@ export function exportReceivable(params?: { projectId?: number; customerId?: num if (params?.confirmStatus !== undefined) queryParams.append('confirmStatus', String(params.confirmStatus)) const queryString = queryParams.toString() - const url = `${baseUrl}/receipt/receipt/receivable/export${queryString ? '?' + queryString : ''}` + const url = `${baseUrl}/receipt/receivable/export${queryString ? '?' + queryString : ''}` return fetch(url, { headers: { diff --git a/fund-admin/src/api/report.ts b/fund-admin/src/api/report.ts index ac76439..89e4c0d 100644 --- a/fund-admin/src/api/report.ts +++ b/fund-admin/src/api/report.ts @@ -41,27 +41,27 @@ export interface ProjectFinance { // 获取仪表盘统计数据 export function getDashboardStats() { - return request.get('/report/report/dashboard/stats') + return request.get('/report/dashboard/stats') } // 获取收支趋势 export function getTrend(period: 'week' | 'month' | 'quarter' = 'week') { - return request.get('/report/report/trend', { params: { period } }) + return request.get('/report/trend', { params: { period } }) } // 获取项目状态分布 export function getProjectStatusDistribution() { - return request.get('/report/report/project/status-distribution') + return request.get('/report/project/status-distribution') } // 获取支出类型分布 export function getExpenseTypeDistribution() { - return request.get('/report/report/expense/type-distribution') + return request.get('/report/expense/type-distribution') } // 获取项目收支分析 export function getProjectFinance(params?: { status?: string; customerId?: number }) { - return request.get('/report/report/project/finance', { params }) + return request.get('/report/project/finance', { params }) } // 导出项目收支分析Excel @@ -76,7 +76,7 @@ export function exportProjectFinance(params?: { status?: string; customerId?: nu if (params?.customerId) queryParams.append('customerId', String(params.customerId)) const queryString = queryParams.toString() - const url = `${baseUrl}/report/report/project/finance/export${queryString ? '?' + queryString : ''}` + const url = `${baseUrl}/report/project/finance/export${queryString ? '?' + queryString : ''}` // 使用fetch下载 return fetch(url, { diff --git a/fund-admin/src/api/role.ts b/fund-admin/src/api/role.ts index 6a31927..a590a38 100644 --- a/fund-admin/src/api/role.ts +++ b/fund-admin/src/api/role.ts @@ -1,29 +1,29 @@ import { request } from './request' export function getRoleList(params: { pageNum: number; pageSize: number; roleName?: string }) { - return request.get('/sys/sys/role/page', { params }) + return request.get('/sys/role/page', { params }) } export function getRoleById(id: number) { - return request.get(`/sys/sys/role/${id}`) + return request.get(`/sys/role/${id}`) } export function createRole(data: any) { - return request.post('/sys/sys/role', data) + return request.post('/sys/role', data) } export function updateRole(data: any) { - return request.put('/sys/sys/role', data) + return request.put('/sys/role', data) } export function deleteRole(id: number) { - return request.delete(`/sys/sys/role/${id}`) + return request.delete(`/sys/role/${id}`) } export function getRoleMenus(id: number) { - return request.get(`/sys/sys/role/${id}/menus`) + return request.get(`/sys/role/${id}/menus`) } export function assignMenus(id: number, menuIds: number[]) { - return request.put(`/sys/sys/role/${id}/menus`, menuIds) + return request.put(`/sys/role/${id}/menus`, menuIds) } diff --git a/fund-admin/src/api/tenant.ts b/fund-admin/src/api/tenant.ts index dd94f82..a904220 100644 --- a/fund-admin/src/api/tenant.ts +++ b/fund-admin/src/api/tenant.ts @@ -32,34 +32,34 @@ export interface TenantDTO { // 分页查询租户 export function pageTenants(pageNum: number, pageSize: number, keyword?: string) { - return request.get<{ records: Tenant[], total: number }>(`/sys/sys/tenant/page`, { + return request.get<{ records: Tenant[], total: number }>(`/sys/tenant/page`, { params: { pageNum, pageSize, keyword } }) } // 获取租户详情 export function getTenantById(id: number) { - return request.get(`/sys/sys/tenant/${id}`) + return request.get(`/sys/tenant/${id}`) } // 创建租户 export function createTenant(data: TenantDTO) { - return request.post('/sys/sys/tenant', data) + return request.post('/sys/tenant', data) } // 更新租户 export function updateTenant(data: TenantDTO) { - return request.put('/sys/sys/tenant', data) + return request.put('/sys/tenant', data) } // 删除租户 export function deleteTenant(id: number) { - return request.delete(`/sys/sys/tenant/${id}`) + return request.delete(`/sys/tenant/${id}`) } // 更新租户状态 export function updateTenantStatus(id: number, status: number) { - return request.put(`/sys/sys/tenant/${id}/status`, null, { + return request.put(`/sys/tenant/${id}/status`, null, { params: { status } }) } diff --git a/fund-admin/src/api/user.ts b/fund-admin/src/api/user.ts index ccd0bf3..22873fb 100644 --- a/fund-admin/src/api/user.ts +++ b/fund-admin/src/api/user.ts @@ -2,45 +2,45 @@ import { request } from './request' // 用户列表 export function getUserList(params: { pageNum: number; pageSize: number; username?: string; status?: number }) { - return request.get('/sys/sys/user/page', { params }) + return request.get('/sys/user/page', { params }) } // 获取用户详情 export function getUserById(id: number) { - return request.get(`/sys/sys/user/${id}`) + return request.get(`/sys/user/${id}`) } // 创建用户 export function createUser(data: any) { - return request.post('/sys/sys/user', data) + return request.post('/sys/user', data) } // 更新用户 export function updateUser(data: any) { - return request.put('/sys/sys/user', data) + return request.put('/sys/user', data) } // 删除用户 export function deleteUser(id: number) { - return request.delete(`/sys/sys/user/${id}`) + return request.delete(`/sys/user/${id}`) } // 更新用户状态 export function updateUserStatus(id: number, status: number) { - return request.put(`/sys/sys/user/${id}/status?status=${status}`) + return request.put(`/sys/user/${id}/status?status=${status}`) } // 获取个人信息 export function getProfile() { - return request.get('/sys/sys/profile') + return request.get('/sys/profile') } // 更新个人信息 export function updateProfile(data: { realName: string; phone?: string; email?: string; avatar?: string }) { - return request.put('/sys/sys/profile', data) + return request.put('/sys/profile', data) } // 修改密码 export function updatePassword(data: { oldPassword: string; newPassword: string; confirmPassword: string }) { - return request.put('/sys/sys/profile/password', data) + return request.put('/sys/profile/password', data) } diff --git a/fund-admin/src/components/FileUpload/index.vue b/fund-admin/src/components/FileUpload/index.vue index 9050a8c..aa8d713 100644 --- a/fund-admin/src/components/FileUpload/index.vue +++ b/fund-admin/src/components/FileUpload/index.vue @@ -90,7 +90,7 @@ const fileList = ref([]) const uploadUrl = computed(() => { const baseUrl = import.meta.env.VITE_API_URL || '' - return `${baseUrl}/fund/file/file/upload` + return `${baseUrl}/fund/file/upload` }) const headers = computed(() => { diff --git a/fund-gateway/src/main/java/com/fundplatform/gateway/filter/TenantGatewayFilter.java b/fund-gateway/src/main/java/com/fundplatform/gateway/filter/TenantGatewayFilter.java index 00ac7f3..032e57f 100644 --- a/fund-gateway/src/main/java/com/fundplatform/gateway/filter/TenantGatewayFilter.java +++ b/fund-gateway/src/main/java/com/fundplatform/gateway/filter/TenantGatewayFilter.java @@ -38,20 +38,19 @@ public class TenantGatewayFilter implements GlobalFilter, Ordered { public static final String HEADER_USERNAME = "X-Username"; // 白名单路径(不需要X-Tenant-Id) - // 注意:路径是网关接收的原始请求路径(含/fund前缀) - // 健康检查路径需要包含模块名两次(一次用于路由,一次用于服务路径) + // 路径格式:前端请求路径(baseURL=/fund已添加,这里只需相对路径) private static final List TENANT_ID_WHITE_LIST = Arrays.asList( - "/fund/sys/auth/login", // 登录接口 - "/fund/sys/auth/logout", // 登出接口 - "/actuator/health", // 网关健康检查(无/fund前缀) - "/fund/sys/sys/health", // 系统服务健康检查 (/api/v1/sys/health) - "/fund/cust/cust/health", // 客户服务健康检查 (/api/v1/cust/health) - "/fund/proj/proj/health", // 项目服务健康检查 (/api/v1/proj/health) - "/fund/exp/exp/health", // 支出服务健康检查 (/api/v1/exp/health) - "/fund/receipt/receipt/health", // 收款服务健康检查 (/api/v1/receipt/health) - "/fund/report/report/health", // 报表服务健康检查 (/api/v1/report/health) - "/fund/req/req/health", // 请求服务健康检查 (/api/v1/req/health) - "/fund/file/file/health" // 文件服务健康检查 (/api/v1/file/health) + "/fund/auth/login", // 登录接口 + "/fund/auth/logout", // 登出接口 + "/actuator/health", // 网关健康检查 + "/fund/sys/health", // 系统服务健康检查 + "/fund/cust/health", // 客户服务健康检查 + "/fund/proj/health", // 项目服务健康检查 + "/fund/exp/health", // 支出服务健康检查 + "/fund/receipt/health", // 收款服务健康检查 + "/fund/report/health", // 报表服务健康检查 + "/fund/req/health", // 请求服务健康检查 + "/fund/file/health" // 文件服务健康检查 ); private final ObjectMapper objectMapper = new ObjectMapper(); diff --git a/fund-gateway/src/main/java/com/fundplatform/gateway/filter/TokenAuthFilter.java b/fund-gateway/src/main/java/com/fundplatform/gateway/filter/TokenAuthFilter.java index 541e208..9bda7ab 100644 --- a/fund-gateway/src/main/java/com/fundplatform/gateway/filter/TokenAuthFilter.java +++ b/fund-gateway/src/main/java/com/fundplatform/gateway/filter/TokenAuthFilter.java @@ -39,18 +39,17 @@ public class TokenAuthFilter implements GlobalFilter, Ordered { private static final String TENANT_ID_HEADER = "X-Tenant-Id"; // 白名单路径(不需要token验证) - // 注意:路径是网关接收的原始请求路径(含/fund前缀) - // 健康检查路径需要包含模块名两次(一次用于路由,一次用于服务路径) + // 路径格式:前端请求路径(baseURL=/fund已添加) private static final List WHITE_LIST = Arrays.asList( - "/fund/sys/auth/login", - "/fund/sys/sys/health", - "/fund/cust/cust/health", - "/fund/proj/proj/health", - "/fund/exp/exp/health", - "/fund/receipt/receipt/health", - "/fund/report/report/health", - "/fund/req/req/health", - "/fund/file/file/health" + "/fund/auth/login", + "/fund/sys/health", + "/fund/cust/health", + "/fund/proj/health", + "/fund/exp/health", + "/fund/receipt/health", + "/fund/report/health", + "/fund/req/health", + "/fund/file/health" ); private final ReactiveTokenService reactiveTokenService; diff --git a/fund-gateway/src/main/resources/application.yml b/fund-gateway/src/main/resources/application.yml index c2af680..e428f8e 100644 --- a/fund-gateway/src/main/resources/application.yml +++ b/fund-gateway/src/main/resources/application.yml @@ -59,31 +59,36 @@ spring: maxAge: 3600 routes: - # 系统管理服务 (使用负载均衡) + # 系统管理服务 + # 路径规则: /fund/auth/* -> /api/v1/auth/* + # /fund/sys/* -> /api/v1/sys/* - id: fund-sys uri: lb://fund-sys predicates: - - Path=/fund/sys/** + - Path=/fund/auth/**,/fund/sys/** filters: - - StripPrefix=2 + - StripPrefix=1 - PrefixPath=/api/v1 # 客户管理服务 + # 路径规则: /fund/customer/* -> /api/v1/customer/* - id: fund-cust uri: lb://fund-cust predicates: - - Path=/fund/cust/** + - Path=/fund/customer/**,/fund/cust/health filters: - - StripPrefix=2 + - StripPrefix=1 - PrefixPath=/api/v1 # 项目管理服务 + # 路径规则: /fund/project/* -> /api/v1/project/* + # /fund/requirement/* -> /api/v1/requirement/* - id: fund-proj uri: lb://fund-proj predicates: - - Path=/fund/proj/** + - Path=/fund/project/**,/fund/requirement/**,/fund/proj/health filters: - - StripPrefix=2 + - StripPrefix=1 - PrefixPath=/api/v1 # 用款申请服务 @@ -92,7 +97,7 @@ spring: predicates: - Path=/fund/req/** filters: - - StripPrefix=2 + - StripPrefix=1 - PrefixPath=/api/v1 # 支出管理服务 @@ -101,7 +106,7 @@ spring: predicates: - Path=/fund/exp/** filters: - - StripPrefix=2 + - StripPrefix=1 - PrefixPath=/api/v1 # 收款管理服务 @@ -110,7 +115,7 @@ spring: predicates: - Path=/fund/receipt/** filters: - - StripPrefix=2 + - StripPrefix=1 - PrefixPath=/api/v1 # 报表服务 @@ -119,7 +124,7 @@ spring: predicates: - Path=/fund/report/** filters: - - StripPrefix=2 + - StripPrefix=1 - PrefixPath=/api/v1 # 文件服务 @@ -128,7 +133,7 @@ spring: predicates: - Path=/fund/file/** filters: - - StripPrefix=2 + - StripPrefix=1 - PrefixPath=/api/v1 # 多租户路由配置 diff --git a/fund-mobile/src/api/index.ts b/fund-mobile/src/api/index.ts index 2e5fc34..9d8d2bb 100644 --- a/fund-mobile/src/api/index.ts +++ b/fund-mobile/src/api/index.ts @@ -2,67 +2,67 @@ import request from './request' // 用户认证 export function login(data: { username: string; password: string }) { - return request.post('/sys/auth/login', data) + return request.post('/auth/login', data) } export function getUserInfo() { - return request.get('/sys/auth/info') + return request.get('/auth/info') } export function logout() { - return request.post('/sys/auth/logout') + return request.post('/auth/logout') } // 项目管理 export function getProjectList(params?: { pageNum: number; pageSize: number; projectName?: string }) { - return request.get('/proj/proj/project/page', { params }) + return request.get('/project/page', { params }) } export function getProjectById(id: number) { - return request.get(`/proj/proj/project/${id}`) + return request.get(`/project/${id}`) } // 客户管理 export function getCustomerList(params?: { pageNum: number; pageSize: number; customerName?: string }) { - return request.get('/cust/cust/customer/page', { params }) + return request.get('/customer/page', { params }) } // 支出管理 export function createExpense(data: any) { - return request.post('/exp/exp/expense', data) + return request.post('/exp/expense', data) } export function getExpenseList(params: { pageNum: number; pageSize: number }) { - return request.get('/exp/exp/expense/page', { params }) + return request.get('/exp/expense/page', { params }) } // 应收款管理 export function getReceivableList(params: { pageNum: number; pageSize: number; status?: string }) { - return request.get('/receipt/receipt/receivable/page', { params }) + return request.get('/receipt/receivable/page', { params }) } export function getUpcomingDueList(daysWithin: number = 7) { - return request.get(`/receipt/receipt/receivable/upcoming-due?daysWithin=${daysWithin}`) + return request.get(`/receipt/receivable/upcoming-due?daysWithin=${daysWithin}`) } // 统计数据 export function getTodayIncome() { - return request.get('/receipt/receipt/receivable/stats/today-income') + return request.get('/receipt/receivable/stats/today-income') } export function getTodayExpense() { - return request.get('/exp/exp/expense/stats/today-expense') + return request.get('/exp/expense/stats/today-expense') } export function getUnpaidAmount() { - return request.get('/receipt/receipt/receivable/stats/unpaid-amount') + return request.get('/receipt/receivable/stats/unpaid-amount') } export function getOverdueCount() { - return request.get('/receipt/receipt/receivable/stats/overdue-count') + return request.get('/receipt/receivable/stats/overdue-count') } // 支出类型 export function getExpenseTypeTree() { - return request.get('/exp/exp/expense-type/tree') + return request.get('/exp/expense-type/tree') }