# 公告接口使用示例

## 接口概述

公告管理接口提供了完整的CRUD操作，包括创建、查询、更新和删除公告的功能。

**基础路径**: `/api/admin/announcement`

## 接口列表

### 1. 创建公告

**POST** `/api/admin/announcement`

**请求体**:
```json
{
    "title": "系统维护通知",
    "content": "系统将于今晚10点进行维护，预计维护时间2小时",
    "enabled": true,
    "jumpUrl": "https://example.com"
}
```

**响应**:
```json
{
    "success": true,
    "message": "公告创建成功",
    "id": 1
}
```

### 2. 获取公告列表（分页）

**GET** `/api/admin/announcement/list?page=1&size=20&enabled=true`

**参数**:
- `page`: 页码（默认1）
- `size`: 每页大小（默认20）
- `enabled`: 按启用状态筛选（可选）

**响应**:
```json
{
    "items": [
        {
            "id": 1,
            "title": "系统维护通知",
            "content": "系统将于今晚10点进行维护，预计维护时间2小时",
            "enabled": true,
            "jumpUrl": "https://example.com",
            "createdAt": "2023-12-01T10:00:00",
            "updatedAt": "2023-12-01T10:00:00"
        }
    ],
    "total": 1,
    "page": 1,
    "size": 20
}
```

### 3. 获取公告详情

**GET** `/api/admin/announcement/{id}`

**响应**:
```json
{
    "id": 1,
    "title": "系统维护通知",
    "content": "系统将于今晚10点进行维护，预计维护时间2小时",
    "enabled": true,
    "jumpUrl": "https://example.com",
    "createdAt": "2023-12-01T10:00:00",
    "updatedAt": "2023-12-01T10:00:00"
}
```

### 4. 更新公告

**PUT** `/api/admin/announcement/{id}`

**请求体**:
```json
{
    "title": "系统维护通知（更新）",
    "content": "系统维护已完成",
    "enabled": false,
    "jumpUrl": null
}
```

**响应**:
```json
{
    "success": true,
    "message": "公告更新成功"
}
```

### 5. 删除公告

**DELETE** `/api/admin/announcement/{id}`

**响应**:
```json
{
    "success": true,
    "message": "公告删除成功"
}
```

### 6. 更新公告启用状态

**PUT** `/api/admin/announcement/{id}/enabled?enabled=true`

**参数**:
- `enabled`: 启用状态（true/false）

**响应**:
```json
{
    "success": true,
    "message": "公告已启用"
}
```

### 7. 获取启用的公告

**GET** `/api/admin/announcement/enabled`

**响应**:
```json
[
    {
        "id": 1,
        "title": "系统维护通知",
        "content": "系统将于今晚10点进行维护，预计维护时间2小时",
        "enabled": true,
        "jumpUrl": "https://example.com",
        "createdAt": "2023-12-01T10:00:00",
        "updatedAt": "2023-12-01T10:00:00"
    }
]
```

## curl 示例

### 创建公告
```bash
curl -X POST http://localhost:8080/api/admin/announcement \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -d '{
    "title": "系统维护通知",
    "content": "系统将于今晚10点进行维护，预计维护时间2小时",
    "enabled": true,
    "jumpUrl": "https://example.com"
  }'
```

### 获取公告列表
```bash
curl -X GET "http://localhost:8080/api/admin/announcement/list?page=1&size=10&enabled=true" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
```

### 更新公告状态
```bash
curl -X PUT "http://localhost:8080/api/admin/announcement/1/enabled?enabled=false" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
```

## 错误处理

### 常见错误响应

**400 Bad Request** - 参数错误:
```json
{
    "success": false,
    "message": "公告标题不能为空"
}
```

**404 Not Found** - 公告不存在:
```json
{
    "timestamp": "2023-12-01T10:00:00.000+00:00",
    "status": 404,
    "error": "Not Found",
    "path": "/api/admin/announcement/999"
}
```

## 注意事项

1. 所有管理接口都需要JWT认证
2. 公告标题和内容不能为空
3. `enabled` 字段默认为 `false`
4. `jumpUrl` 字段可选，用于设置点击公告后的跳转链接
5. 获取启用公告的接口最多返回10条记录
6. 所有时间字段使用 ISO 8601 格式

## 数据库表结构

公告数据存储在 `announcement` 表中，包含以下字段：

- `id` - 主键，自增
- `title` - 公告标题
- `content` - 公告内容  
- `enabled` - 启用状态
- `jump_url` - 跳转链接
- `created_at` - 创建时间
- `updated_at` - 更新时间
