Skip to content

Controller ​

职责 ​

Controller(api 包)是 HTTP 请求的入口适配层,负责:

  • 接收并解析请求参数(Query、Path、Body)
  • 调用鉴权注解(@AdminAuth、@FrontAuth 等)
  • 委托 service 完成业务,封装统一响应(ApiResult、@DingoResponse)
  • 记录操作日志(@ShopLog 等,管理端常见)

Controller 不应包含复杂 SQL、跨表事务编排、或可复用的领域规则;这些属于 service 及以下层级。

放置位置 ​

ecshopx-<domain>/src/main/java/cn/shopex/ecshopx/<domain>/api/
├── admin/v1/     # 管理后台 API
└── front/v1/     # 商城 / 小程序 / H5 前台 API

开放 API 的 HTTP 控制器集中在 ecshopx-openapi 模块(openapi.thirdapi.v1 / v2),业务 Bundle 通过 openapi 包提供 Port 实现,详见 路由与 API 分组。

真实类路径示例 ​

管理端 — 商品

cn.shopex.ecshopx.goods.api.admin.v1.ItemsController
  • 源文件:ecshopx-goods/src/main/java/cn/shopex/ecshopx/goods/api/admin/v1/ItemsController.java
  • 路由前缀:@RequestMapping("/api/v1/goods")

前台 — 商品

cn.shopex.ecshopx.goods.api.front.v1.ItemsController
  • 源文件:ecshopx-goods/src/main/java/cn/shopex/ecshopx/goods/api/front/v1/ItemsController.java
  • 路由前缀:@RequestMapping("/api/v1/h5app/wxapp/goods")

订单 — 前台支付

cn.shopex.ecshopx.orders.api.front.v1.PaymentController
  • 源文件:ecshopx-orders/src/main/java/cn/shopex/ecshopx/orders/api/front/v1/PaymentController.java
  • 路由前缀:@RequestMapping("/api/v1/h5app/wxapp/trade")

禁止事项 ​

禁止说明
在 Controller 写复杂 SQL 或直接注入 Mapper数据访问应经 service → repository / mapper
跨模块直接注入对方 Bundle 的 Mapper / Repository应通过 Port 或 dispatch 事件
在 Controller 内编排长事务、多步补偿逻辑下沉至 service 或专用 Orchestrator
绕过统一响应与异常约定使用项目既有 @DingoResponse、全局异常处理
前台与后台共用同一 Controller 类按 admin / front 分包,鉴权与路径分离

相关章节 ​