You need to sign in before continuing.
兼容旧接口路径的桥接实现方案.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)接口,委托到现有服务或新路径,实现等价分页/列表能力。

实施方案

  1. 新增桥接控制器(不改现有业务控制器):
    • 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(...)
  2. 系统用户桥接:
    • urbanops-module-system 新增 controller/admin/user/UserBridgeController@RequestMapping("/system/user")
      • @PostMapping("/listForPage") → 将请求体(或表单)转换为 UserPageReqVO,委托 AdminUserService.getUserPage(...) 返回分页。
  3. 统一返回结构:
    • 所有桥接接口返回 CommonResult<PageResult<...>>,与现有新接口保持一致;如旧前端要求表格结构,按需封装字段但不改核心分页数据。
  4. 权限与审计:
    • 复用现有权限标识:@PreAuthorize 与对应 garden:*system:* 权限,不新增冗余权限点。
  5. 兼容性细节:
    • 旧接口使用 list 命名且可能 GET;桥接按旧签名支持 GET 并允许 query 传参;必要时支持 POST(根据旧前端调用方式)。
    • 字段名差异通过桥接层 VO 做轻量映射(如旧字段为 pageNum/pageSize)。

测试与验证

  • 为每个桥接接口补充最小的集成测试:校验分页入参映射、权限与返回数据结构。
  • 本地编译与启动后,用现有新接口的数据源验证桥接输出一致性。

变更范围控制

  • 不改现有业务控制器和服务实现;新增仅限桥接控制器与必要的请求 VO(轻量)。
  • 不改数据库结构与 Mapper。

请确认以上桥接方案;确认后我将按上述路径添加兼容接口并进行编译与验证。