# API 接口文档模板

> 复制此文件，命名为 {module}-api.md，记录该模块对外暴露的 REST 接口。

---

## 模块信息
- **模块名**：{模块中文名} / {module}
- **Controller**：`{功能}RestController`
- **@eo.groupName**：`{一级模块}.{二级模块}`
- **@eo.path（base）**：`/{模块}/{资源}`
- **文件路径**：`other-adapter/src/.../adapter/app/{模块}/{功能}RestController.java`

---

## 接口列表

### 1. {接口名称}

```java
/**
 * {接口说明}.
 *
 * @eo.name {接口名称}
 * @eo.url {子路径，GET无子路径时留空}
 * @eo.method get
 * @eo.request-type formdata
 */
@GetMapping("/{sub-path}")
public {返回CO或DTO} {methodName}({QryCmd} cmd) {
    return {service}.{method}(cmd);
}
```

**请求参数（QryCmd 字段）**：
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| userId | Long | 否 | 目标用户ID（不传则取当前登录用户） |

**响应（CO 字段）**：
| 字段 | 类型 | 说明 |
|------|------|------|
| userId | Long | 用户ID |
| nickname | String | 昵称 |

---

### 2. {写操作接口名称}

```java
/**
 * {接口说明}.
 *
 * @eo.name {接口名称}
 * @eo.url /{sub-path}
 * @eo.method post
 * @eo.request-type json
 */
@PostMapping("/{sub-path}")
public {返回CO} {methodName}(@RequestBody @Validated {Cmd} cmd) {
    return {service}.{method}(cmd);
}
```

**请求体（Cmd 字段）**：
| 字段 | 类型 | 必填 | 校验 | 说明 |
|------|------|------|------|------|
| activityId | Long | 是 | @NotNull | 活动ID |
| drawCount | Integer | 否 | @Min(1) @Max(10) | 抽奖次数 |

**响应（CO 字段）**：
| 字段 | 类型 | 说明 |
|------|------|------|
| prizeId | Long | 奖品ID |
| prizeName | String | 奖品名称 |

---

## 枚举值说明

| 枚举类 | 值 | 说明 |
|-------|----|------|
| StatusEnum | 0 | 正常 |
| StatusEnum | 1 | 禁用 |

---

## 关联文件
- Service 接口：`other-client/src/.../app/service/{模块}/{功能}Service.java`
- Cmd：`other-client/src/.../app/dto/cmd/{模块}/`
- CO：`other-client/src/.../app/dto/clientobject/{模块}/`
- CmdExe：`other-application/src/.../app/command/{模块}/`
