---
description: Controller/Service 规范（与 .cursor/rules/java-service-controller.mdc 同步）
globs: ["**/controller/**/*.java","**/service/**/*.java"]
alwaysApply: true
---

# Controller & Service 规范（RuoYi Cloud）

## Controller

- 继承 `BaseController`
- 返回 `AjaxResult` / `TableDataInfo`
- 分页：`startPage()` → Service 查询 → `getDataTable(list)`
- 权限：`@RequiresPermissions("busi:OBJECT:list")` 等
- 日志：增删改/导出 `@Log(title, businessType)`
- 只 `@Autowired` Service，禁止注入 Mapper

## Service

- 接口：`I{Entity}Service`，实现：`{Entity}ServiceImpl`
- 异常：`throw new ServiceException("...")`
- 审计：`entity.setCreateTime(DateUtils.getNowDate())`
- `@DataScope` 按需（system 模块列表常用）

## 禁止

- CommonResult、@PreAuthorize、@ApiAccessLog、@Idempotent
- SaveReqVO 作为默认入参（直接用 Domain，除非字段需隔离）
