兼容旧接口路径的桥接实现方案.md
3.66 KB
现状排查结论
material/out/listForPage:已迁移并存在,路径不变(POST)。位置:controller/admin/material/MaterialOutController.java:39- 费用类接口已迁移到 garden 模块,但基础路径统一为
garden/*,查询接口统一使用GET /page:- 旧
/costfee/departmentcost/list→ 新GET /garden/department-cost/page(部门费用)位置:controller/admin/departmentcost/DepartmentCostController.java:83 - 旧
/costfee/mechanicalcost/list→ 新GET /garden/mechanical-cost/page(自有机械费用)位置:controller/admin/mechanicalcost/MechanicalCostController.java:107 - 旧
/costfee/rentalmechanicalcost/list→ 新GET /garden/rental-mechanical-cost/page(租赁机械费用)位置:controller/admin/rentalmechanicalcost/RentalMechanicalCostController.java:99 - 旧
/costfee/gardenwasterecord/list→ 新GET /garden/waste-record/page(园林废弃物)位置:controller/admin/wasterecord/WasteRecordController.java:83
- 旧
- 系统用户分页:旧
/system/user/listForPage不存在;新为GET /system/user/page,位置:urbanops-module-system/controller/admin/user/UserController.java:99
目标
- 在不改动前端的情况下,兼容旧路径:为上述旧路径添加桥接(alias)接口,委托到现有服务或新路径,实现等价分页/列表能力。
实施方案
- 新增桥接控制器(不改现有业务控制器):
controller/admin/costfee/DepartmentCostBridgeController:@RequestMapping("/costfee/departmentcost")@GetMapping("/list")→ 适配分页 VO,内部调用departmentCostService.getDepartmentCostPage(...)
controller/admin/costfee/MechanicalCostBridgeController:@RequestMapping("/costfee/mechanicalcost")@GetMapping("/list")→ 委托mechanicalCostService.getMechanicalCostPage(...)
controller/admin/costfee/RentalMechanicalCostBridgeController:@RequestMapping("/costfee/rentalmechanicalcost")@GetMapping("/list")→ 委托rentalMechanicalCostService.getRentalMechanicalCostPage(...)
controller/admin/costfee/GardenWasteRecordBridgeController:@RequestMapping("/costfee/gardenwasterecord")@GetMapping("/list")→ 委托wasteRecordService.getWasteRecordPage(...)
- 系统用户桥接:
- 在
urbanops-module-system新增controller/admin/user/UserBridgeController:@RequestMapping("/system/user")@PostMapping("/listForPage")→ 将请求体(或表单)转换为UserPageReqVO,委托AdminUserService.getUserPage(...)返回分页。
- 在
- 统一返回结构:
- 所有桥接接口返回
CommonResult<PageResult<...>>,与现有新接口保持一致;如旧前端要求表格结构,按需封装字段但不改核心分页数据。
- 所有桥接接口返回
- 权限与审计:
- 复用现有权限标识:
@PreAuthorize与对应garden:*或system:*权限,不新增冗余权限点。
- 复用现有权限标识:
- 兼容性细节:
- 旧接口使用
list命名且可能 GET;桥接按旧签名支持 GET 并允许 query 传参;必要时支持 POST(根据旧前端调用方式)。 - 字段名差异通过桥接层 VO 做轻量映射(如旧字段为
pageNum/pageSize)。
- 旧接口使用
测试与验证
- 为每个桥接接口补充最小的集成测试:校验分页入参映射、权限与返回数据结构。
- 本地编译与启动后,用现有新接口的数据源验证桥接输出一致性。
变更范围控制
- 不改现有业务控制器和服务实现;新增仅限桥接控制器与必要的请求 VO(轻量)。
- 不改数据库结构与 Mapper。
请确认以上桥接方案;确认后我将按上述路径添加兼容接口并进行编译与验证。