# 反馈系统功能分析(未实现) ## 一、需求概述 在左侧菜单回收站下方添加一个新的功能模块,包含三个子功能: - 反馈BUG - 申请管理 - 提出意见 **访问权限:** 仅登录用户可见和使用 **处理权限:** 仅ADMIN用户可处理 --- ## 二、用户角色权限矩阵 ### 普通用户(USER)能做什么 | 功能 | 权限 | 说明 | |------|------|------| | 查看反馈列表 | ✅ | 仅查看自己提交的反馈 | | 提交BUG反馈 | ✅ | 创建新的BUG反馈 | | 提交管理申请 | ✅ | 申请成为管理员 | | 提出意见建议 | ✅ | 提交产品意见 | | 编辑自己的反馈 | ✅ | 仅在未处理状态下可编辑 | | 删除自己的反馈 | ✅ | 仅在未处理状态下可删除 | | 查看反馈状态 | ✅ | 实时查看处理进度 | | 处理他人反馈 | ❌ | 无权限 | | 删除他人反馈 | ❌ | 无权限 | ### 管理员(ADMIN)能做什么 | 功能 | 权限 | 说明 | |------|------|------| | 查看所有反馈 | ✅ | 查看全部用户的反馈 | | 查看反馈详情 | ✅ | 包括用户信息、提交时间等 | | 处理反馈 | ✅ | 更新状态、添加处理备注 | | 批准/拒绝申请 | ✅ | 处理管理员申请 | | 删除反馈 | ✅ | 删除任何反馈 | | 导出反馈 | ✅ | 导出为CSV/Excel | | 统计分析 | ✅ | 查看反馈统计信息 | --- ## 三、数据表设计 ### 1. 反馈表(feedback) ```sql 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) ```sql 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 管理员申请特殊处理 当管理员批准申请时: 1. 更新 admin_request 表状态为 APPROVED 2. 更新 user 表的 role 字段为 ADMIN 3. 记录审核人和审核时间 4. 可选:发送通知给申请用户 --- ## 五、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 反馈中心页面 **普通用户视图:** - 反馈列表(仅显示自己的) - 提交新反馈表单 - 反馈详情和状态查看 - 编辑/删除按钮(仅未处理状态) **管理员视图:** - 所有反馈列表(可筛选、搜索) - 反馈统计仪表板 - 处理反馈表单(更新状态、添加备注) - 批量操作(删除、导出) --- ## 七、实现步骤 ### 第一阶段:数据库 1. 创建 feedback 表 2. 创建 admin_request 表 3. 添加索引优化查询 ### 第二阶段:后端 1. 创建 Feedback 和 AdminRequest 实体类 2. 创建 Mapper 和 Service 3. 创建 Controller 和 API 接口 4. 添加权限控制注解 ### 第三阶段:前端 1. 创建反馈中心菜单项 2. 创建反馈列表页面 3. 创建反馈提交表单 4. 创建管理员处理页面 5. 集成到 SidebarMenu ### 第四阶段:测试 1. 单元测试 2. 集成测试 3. 权限测试 --- ## 八、关键技术点 ### 权限控制 - 使用 @PreAuthorize 注解控制接口访问 - 在 Service 层验证用户权限 - 确保用户只能操作自己的反馈 ### 数据隔离 - 普通用户查询时自动过滤为自己的反馈 - 管理员可查看所有反馈 ### 状态管理 - 反馈状态流转:PENDING → PROCESSING → RESOLVED/REJECTED - 申请状态流转:PENDING → APPROVED/REJECTED ### 审计日志 - 记录处理人、处理时间、处理备注 - 支持软删除,保留历史记录 --- ## 九、扩展考虑 1. **通知系统** - 反馈被处理时通知用户 2. **评论功能** - 用户和管理员可在反馈下评论 3. **附件支持** - 反馈可上传截图或文件 4. **优先级排序** - BUG 按优先级排序 5. **导出功能** - 管理员可导出反馈报告 6. **统计分析** - 反馈类型、状态分布统计