新增公告中心功能

## 功能概述
在钱包旁边新增公告中心,用户可以查看平台通知、教程、规则和常见问题。

## 主要变更

### 后端
- 新增 announcement 模块(handler/service/repository)
- 新增 announcements 数据库表
- 添加公告相关 API 端点(用户端和管理端)
- 扩展 response 包,新增 NotFound 和 InternalServerError 方法

### 前端
- 新增公告功能模块(/features/announcement)
- 实现公告列表页和详情页
- 在顶部导航添加公告入口(钱包旁边)
- 支持按分类筛选(通知、教程、规则、FAQ)
- 支持置顶和重要标记显示

### 数据库
- 迁移文件:000005_add_announcements.sql
- 示例数据:000006_insert_sample_announcements.sql
- 包含6条示例公告

## 技术特点
- 遵循项目现有架构模式
- 响应式设计,支持移动端
- 自动统计浏览次数
- 支持富文本内容展示

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
yml
2026-06-05 20:40:20 +08:00
co-authored by Claude Opus 4.6
parent 46c5df86ac
commit 28b6e326e8
16 changed files with 1560 additions and 0 deletions
+101
View File
@@ -0,0 +1,101 @@
# 公告系统功能说明
## 功能概述
在钱包旁边新增了公告中心功能,用户可以查看平台通知、使用教程、规则说明和常见问题解答。
## 主要特性
### 前台功能(用户端)
- **公告列表页** (`/announcements`)
- 支持按分类筛选(全部、通知公告、使用教程、规则说明、常见问题)
- 显示置顶和重要标记
- 分页浏览
- 点击查看详情
- **公告详情页** (`/announcements/:id`)
- 查看完整公告内容
- 支持富文本显示
- 自动统计浏览次数
### 后台功能(管理端)
- 公告管理 CRUD(创建、编辑、删除)
- 发布/归档公告
- 设置优先级、置顶、重要标记
- 按状态和分类筛选
## 数据库表结构
```sql
CREATE TABLE announcements (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
category VARCHAR(32) NOT NULL DEFAULT 'notice',
priority INT NOT NULL DEFAULT 0,
is_pinned TINYINT(1) NOT NULL DEFAULT 0,
is_important TINYINT(1) NOT NULL DEFAULT 0,
view_count INT NOT NULL DEFAULT 0,
status VARCHAR(32) NOT NULL DEFAULT 'draft',
published_at DATETIME NULL,
created_by BIGINT UNSIGNED NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
```
## API 端点
### 用户端
- `GET /api/announcements` - 获取公告列表
- `GET /api/announcements/:id` - 获取公告详情
### 管理端
- `GET /api/admin/announcements` - 管理员获取公告列表
- `GET /api/admin/announcements/:id` - 管理员获取公告详情
- `POST /api/admin/announcements` - 创建公告
- `PUT /api/admin/announcements/:id` - 更新公告
- `POST /api/admin/announcements/:id/publish` - 发布公告
- `POST /api/admin/announcements/:id/archive` - 归档公告
- `DELETE /api/admin/announcements/:id` - 删除公告
## 权限要求
管理端需要以下权限:
- `announcement:view` - 查看公告
- `announcement:manage` - 管理公告(创建、编辑、发布、归档、删除)
## 前端路由
- `/announcements` - 公告列表
- `/announcements/:id` - 公告详情
## 导航入口
在顶部导航栏"钱包"旁边添加了"公告"入口,用户可以方便地访问公告中心。
## 数据迁移
1. 运行 `000005_add_announcements.sql` 创建表结构
2. 运行 `000006_insert_sample_announcements.sql` 插入示例数据
## 技术实现
### 后端
- 使用 Go + Gin 框架
- GORM 作为 ORM
- 遵循模块化设计(handler -> service -> repository
### 前端
- Vue 3 + TypeScript
- Element Plus UI 组件库
- 响应式设计,支持移动端
## 未来扩展
可以考虑添加:
- 公告搜索功能
- 用户收藏公告
- 评论功能
- 富文本编辑器(管理端)
- 公告推送通知