# 问题/建议功能实现总结

## 已创建的文件

### 1. 实体类 (Domain)
- `TblDzbcFeedback.java` - 问题建议实体

### 2. 业务对象
- `TblDzbcFeedbackBo.java` - 问题建议业务对象
- `FeedbackSubmitBo.java` - 提交问题建议业务对象（支持文件上传）

### 3. 视图对象
- `TblDzbcFeedbackVo.java` - 问题建议视图对象

### 4. Mapper 接口
- `TblDzbcFeedbackMapper.java` - 问题建议 Mapper

### 5. Service 接口和实现
- `ITblDzbcFeedbackService.java` - 问题建议服务接口
- `TblDzbcFeedbackServiceImpl.java` - 问题建议服务实现

### 6. Controller
- `TblDzbcFeedbackController.java` - 问题建议控制器

### 7. Mapper XML
- `TblDzbcFeedbackMapper.xml` - 问题建议 SQL

### 8. SQL 脚本和文档
- `script/sql/feedback.sql` - 建表 SQL
- `script/sql/FEEDBACK_README.md` - 接口文档

## 主要功能

### 1. 用户功能
- **提交问题/建议**：支持文字内容和多图片上传
- **查询我的问题建议**：查看自己的历史记录

### 2. 管理员功能
- **查看所有问题建议**：分页查询，支持多条件筛选
- **查看详情**：查看完整的问题建议内容
- **回复问题建议**：管理员可以回复用户问题
- **修改状态**：更新问题处理状态
- **删除记录**：删除无效或重复的记录
- **导出数据**：导出问题建议列表到 Excel

## 技术特点

### 1. 图片上传
- 使用 OSS 服务存储图片
- 支持多图片同时上传
- 自动将图片 URL 以逗号分隔存储
- 依赖 `ruoyi-common-oss` 模块

### 2. 用户信息
- 自动获取当前登录用户信息
- 自动填充用户姓名和电话
- 登录用户只能查看自己的记录

### 3. 状态管理
- 0-待处理
- 1-处理中
- 2-已完成（回复后自动标记为已完成）

### 4. 类型区分
- 1-问题
- 2-建议

## 接口列表

### 用户接口
- `POST /system/dzbc/feedback/submit` - 提交问题/建议（支持图片）
- `GET /system/dzbc/feedback/my/list` - 查询我的问题建议列表

### 管理员接口
- `GET /system/dzbc/feedback/list` - 查询问题建议列表（分页）
- `GET /system/dzbc/feedback/{id}` - 查询问题建议详情
- `POST /system/dzbc/feedback/reply/{id}` - 回复问题建议
- `PUT /system/dzbc/feedback` - 修改问题建议
- `DELETE /system/dzbc/feedback/{ids}` - 删除问题建议
- `POST /system/dzbc/feedback/export` - 导出问题建议

## 数据库设计

### tbl_dzbc_feedback 表结构
- 主键：id
- 用户信息：user_id, user_name, user_phone
- 内容：content, image_urls
- 分类：type（1-问题，2-建议）
- 状态：status（0-待处理，1-处理中，2-已完成）
- 回复：reply_content, reply_user_id, reply_user_name, reply_time
- 备注：remark, ext1, ext2
- 审计字段：create_dept, create_by, create_time, update_by, update_time

### 索引
- idx_user_id：用户ID索引
- idx_type：类型索引
- idx_status：状态索引

## 使用示例

### 1. 提交问题（含图片）

**Postman 配置：**
- 方法：POST
- URL：`http://localhost:8080/system/dzbc/feedback/submit`
- Headers：
  - `Authorization: Bearer YOUR_TOKEN`
- Body（form-data）：
  - `content`: 班车晚点了，希望能准时发车
  - `type`: 1
  - `images`: 选择图片文件（可添加多个）

### 2. 查询我的问题

```bash
curl -X GET "http://localhost:8080/system/dzbc/feedback/my/list" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

### 3. 管理员回复问题

```bash
curl -X POST "http://localhost:8080/system/dzbc/feedback/reply/1" \
  -H "Authorization: Bearer ADMIN_TOKEN" \
  -d "replyContent=感谢您的反馈，我们会加强调度管理"
```

## 部署步骤

1. **执行建表 SQL**
   ```bash
   mysql -u root -p khyznh < script/sql/feedback.sql
   ```

2. **配置 OSS 服务**
   - 确保 `ruoyi-common-oss` 模块已正确配置
   - 检查 OSS 连接参数

3. **重启应用**
   - 重新编译并启动应用

4. **测试接口**
   - 使用 Postman 测试提交接口
   - 验证图片上传功能
   - 测试管理功能

## 注意事项

1. **文件上传限制**
   - 单文件大小限制：10MB（在 application.yml 中配置）
   - 总上传大小限制：20MB

2. **图片格式**
   - 支持常见图片格式（jpg, png, gif 等）
   - 建议上传前压缩图片

3. **权限控制**
   - 用户接口已放行，无需特殊权限
   - 管理员接口建议添加权限注解

4. **图片存储**
   - 图片上传到 OSS，返回 URL
   - 多个图片 URL 用逗号分隔存储
   - 前端需要根据逗号分割显示

5. **用户信息**
   - 必须先登录才能提交问题
   - 自动从登录用户获取信息
   - 确保用户表包含电话号码字段

## 扩展建议

1. **消息通知**
   - 提交问题后发送通知给管理员
   - 回复后发送通知给用户

2. **图片管理**
   - 删除问题时同时删除 OSS 中的图片
   - 提供图片预览功能

3. **评价功能**
   - 用户对回复进行评价
   - 统计问题解决率

4. **统计分析**
   - 问题类型统计
   - 处理时长统计
   - 问题趋势分析

详细接口文档请参考：`script/sql/FEEDBACK_README.md`
