7.5 KiB
7.5 KiB
反馈系统功能分析(未实现)
一、需求概述
在左侧菜单回收站下方添加一个新的功能模块,包含三个子功能:
- 反馈BUG
- 申请管理
- 提出意见
访问权限: 仅登录用户可见和使用 处理权限: 仅ADMIN用户可处理
二、用户角色权限矩阵
普通用户(USER)能做什么
| 功能 | 权限 | 说明 |
|---|---|---|
| 查看反馈列表 | ✅ | 仅查看自己提交的反馈 |
| 提交BUG反馈 | ✅ | 创建新的BUG反馈 |
| 提交管理申请 | ✅ | 申请成为管理员 |
| 提出意见建议 | ✅ | 提交产品意见 |
| 编辑自己的反馈 | ✅ | 仅在未处理状态下可编辑 |
| 删除自己的反馈 | ✅ | 仅在未处理状态下可删除 |
| 查看反馈状态 | ✅ | 实时查看处理进度 |
| 处理他人反馈 | ❌ | 无权限 |
| 删除他人反馈 | ❌ | 无权限 |
管理员(ADMIN)能做什么
| 功能 | 权限 | 说明 |
|---|---|---|
| 查看所有反馈 | ✅ | 查看全部用户的反馈 |
| 查看反馈详情 | ✅ | 包括用户信息、提交时间等 |
| 处理反馈 | ✅ | 更新状态、添加处理备注 |
| 批准/拒绝申请 | ✅ | 处理管理员申请 |
| 删除反馈 | ✅ | 删除任何反馈 |
| 导出反馈 | ✅ | 导出为CSV/Excel |
| 统计分析 | ✅ | 查看反馈统计信息 |
三、数据表设计
1. 反馈表(feedback)
CREATE TABLE feedback (
id BIGINT PRIMARY KEY COMMENT '反馈ID',
user_id BIGINT NOT NULL COMMENT '提交用户ID',
type VARCHAR(20) NOT NULL COMMENT '反馈类型: BUG, ADMIN_REQUEST, SUGGESTION',
title VARCHAR(255) NOT NULL COMMENT '反馈标题',
content LONGTEXT NOT NULL COMMENT '反馈内容',
status VARCHAR(20) DEFAULT 'PENDING' COMMENT '状态: PENDING(待处理), PROCESSING(处理中), RESOLVED(已解决), REJECTED(已拒绝)',
priority VARCHAR(20) DEFAULT 'NORMAL' COMMENT '优先级: LOW, NORMAL, HIGH, URGENT',
-- 处理信息
handler_id BIGINT COMMENT '处理人ID',
handler_remark VARCHAR(500) COMMENT '处理备注',
handled_at DATETIME COMMENT '处理时间',
-- 时间戳
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
-- 软删除
is_deleted TINYINT DEFAULT 0 COMMENT '是否删除',
deleted_at DATETIME COMMENT '删除时间',
deleted_by BIGINT COMMENT '删除人ID',
INDEX idx_user_id (user_id),
INDEX idx_type (type),
INDEX idx_status (status),
INDEX idx_created_at (created_at)
) COMMENT='用户反馈表';
2. 管理员申请表(admin_request)
CREATE TABLE admin_request (
id BIGINT PRIMARY KEY COMMENT '申请ID',
user_id BIGINT NOT NULL COMMENT '申请用户ID',
reason VARCHAR(500) NOT NULL COMMENT '申请理由',
status VARCHAR(20) DEFAULT 'PENDING' COMMENT '状态: PENDING(待审核), APPROVED(已批准), REJECTED(已拒绝)',
-- 审核信息
reviewer_id BIGINT COMMENT '审核人ID',
review_remark VARCHAR(500) COMMENT '审核备注',
reviewed_at DATETIME COMMENT '审核时间',
-- 时间戳
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
-- 软删除
is_deleted TINYINT DEFAULT 0 COMMENT '是否删除',
deleted_at DATETIME COMMENT '删除时间',
deleted_by BIGINT COMMENT '删除人ID',
INDEX idx_user_id (user_id),
INDEX idx_status (status),
INDEX idx_created_at (created_at)
) COMMENT='管理员申请表';
四、业务逻辑设计
4.1 反馈流程
普通用户提交反馈
↓
反馈进入待处理队列 (PENDING)
↓
管理员查看反馈
↓
管理员处理反馈 (更新状态、添加备注)
↓
用户查看处理结果
4.2 反馈类型处理
| 类型 | 流程 | 特殊处理 |
|---|---|---|
| BUG | 提交 → 待处理 → 处理中 → 已解决/已拒绝 | 可设置优先级 |
| ADMIN_REQUEST | 提交 → 待审核 → 已批准/已拒绝 | 批准后自动升级用户角色 |
| SUGGESTION | 提交 → 待处理 → 已解决/已拒绝 | 仅供参考 |
4.3 管理员申请特殊处理
当管理员批准申请时:
- 更新 admin_request 表状态为 APPROVED
- 更新 user 表的 role 字段为 ADMIN
- 记录审核人和审核时间
- 可选:发送通知给申请用户
五、API 接口设计
5.1 普通用户接口
POST /api/feedback - 提交反馈
GET /api/feedback/my - 查看自己的反馈列表
GET /api/feedback/{id} - 查看反馈详情
PUT /api/feedback/{id} - 编辑反馈(仅未处理状态)
DELETE /api/feedback/{id} - 删除反馈(仅未处理状态)
POST /api/admin-request - 提交管理员申请
GET /api/admin-request/my - 查看自己的申请
GET /api/admin-request/{id} - 查看申请详情
5.2 管理员接口
GET /api/feedback - 查看所有反馈(分页)
GET /api/feedback/stats - 反馈统计
PUT /api/feedback/{id}/status - 更新反馈状态
PUT /api/feedback/{id}/handle - 处理反馈(添加备注)
DELETE /api/feedback/{id} - 删除反馈
GET /api/admin-request - 查看所有申请(分页)
PUT /api/admin-request/{id}/approve - 批准申请
PUT /api/admin-request/{id}/reject - 拒绝申请
六、前端UI设计
6.1 菜单结构
左侧菜单
├── 分类列表
├── 回收站
├── 反馈中心 (新增)
│ ├── 反馈BUG
│ ├── 申请管理
│ └── 提出意见
└── 系统管理 (仅ADMIN)
6.2 反馈中心页面
普通用户视图:
- 反馈列表(仅显示自己的)
- 提交新反馈表单
- 反馈详情和状态查看
- 编辑/删除按钮(仅未处理状态)
管理员视图:
- 所有反馈列表(可筛选、搜索)
- 反馈统计仪表板
- 处理反馈表单(更新状态、添加备注)
- 批量操作(删除、导出)
七、实现步骤
第一阶段:数据库
- 创建 feedback 表
- 创建 admin_request 表
- 添加索引优化查询
第二阶段:后端
- 创建 Feedback 和 AdminRequest 实体类
- 创建 Mapper 和 Service
- 创建 Controller 和 API 接口
- 添加权限控制注解
第三阶段:前端
- 创建反馈中心菜单项
- 创建反馈列表页面
- 创建反馈提交表单
- 创建管理员处理页面
- 集成到 SidebarMenu
第四阶段:测试
- 单元测试
- 集成测试
- 权限测试
八、关键技术点
权限控制
- 使用 @PreAuthorize 注解控制接口访问
- 在 Service 层验证用户权限
- 确保用户只能操作自己的反馈
数据隔离
- 普通用户查询时自动过滤为自己的反馈
- 管理员可查看所有反馈
状态管理
- 反馈状态流转:PENDING → PROCESSING → RESOLVED/REJECTED
- 申请状态流转:PENDING → APPROVED/REJECTED
审计日志
- 记录处理人、处理时间、处理备注
- 支持软删除,保留历史记录
九、扩展考虑
- 通知系统 - 反馈被处理时通知用户
- 评论功能 - 用户和管理员可在反馈下评论
- 附件支持 - 反馈可上传截图或文件
- 优先级排序 - BUG 按优先级排序
- 导出功能 - 管理员可导出反馈报告
- 统计分析 - 反馈类型、状态分布统计