# 问题/建议功能接口文档

## 功能概述
用户可以提交问题或建议，支持文字内容和图片上传。管理员可以查看、回复问题建议。

## 数据库表结构

### 问题建议表 (tbl_dzbc_feedback)
- id: 编号
- user_id: 用户ID
- user_name: 用户姓名
- user_phone: 用户电话
- content: 内容（必填）
- image_urls: 图片地址，多个用逗号分隔
- type: 类型（1-问题，2-建议）
- status: 状态（0-待处理，1-处理中，2-已完成）
- reply_content: 回复内容
- reply_user_id: 回复人ID
- reply_user_name: 回复人姓名
- reply_time: 回复时间
- remark: 备注
- ext1, ext2: 扩展字段

## 接口列表

### 1. 用户接口

#### 查询我的问题建议列表
```
GET /system/dzbc/feedback/my/list
```
说明：获取当前登录用户的所有问题建议记录

返回示例：
```json
{
  "code": 200,
  "data": [
    {
      "id": 1,
      "userId": 1,
      "userName": "张三",
      "userPhone": "13800138000",
      "content": "班车晚点了，希望能准时发车",
      "imageUrls": "http://xxx.com/image1.jpg,http://xxx.com/image2.jpg",
      "type": 1,
      "status": 2,
      "replyContent": "感谢您的反馈，我们会加强调度管理",
      "replyUserId": 10,
      "replyUserName": "管理员",
      "replyTime": "2024-02-20 10:00:00",
      "createTime": "2024-02-20 09:00:00"
    }
  ]
}
```

#### 提交问题/建议
```
POST /system/dzbc/feedback/submit
Content-Type: multipart/form-data
```

请求参数：
- content: 内容（必填）
- type: 类型（必填，1-问题，2-建议）
- images: 图片文件（可选，可上传多个）

**请求示例（使用 Postman）:**

方法：POST
URL: http://localhost:8080/system/dzbc/feedback/submit
Body 类型：form-data

| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| content | String | 是 | 问题/建议内容 |
| type | Integer | 是 | 类型：1-问题，2-建议 |
| images | File | 否 | 图片文件（可上传多个） |

**返回示例：**
```json
{
  "code": 200,
  "msg": "操作成功",
  "data": {
    "id": 1,
    "userId": 1,
    "userName": "张三",
    "userPhone": "13800138000",
    "content": "班车晚点了，希望能准时发车",
    "imageUrls": "http://xxx.com/image1.jpg,http://xxx.com/image2.jpg",
    "type": 1,
    "status": 0,
    "createTime": "2024-02-20 09:00:00"
  }
}
```

### 2. 管理员接口

#### 查询问题建议列表（分页）
```
GET /system/dzbc/feedback/list
```

查询参数：
- userId: 用户ID
- userName: 用户姓名（模糊查询）
- content: 内容（模糊查询）
- type: 类型（1-问题，2-建议）
- status: 状态（0-待处理，1-处理中，2-已完成）
- pageNum: 页码
- pageSize: 每页大小

返回示例：
```json
{
  "code": 200,
  "rows": [
    {
      "id": 1,
      "userId": 1,
      "userName": "张三",
      "userPhone": "13800138000",
      "content": "班车晚点了，希望能准时发车",
      "imageUrls": "http://xxx.com/image1.jpg,http://xxx.com/image2.jpg",
      "type": 1,
      "status": 0,
      "createTime": "2024-02-20 09:00:00"
    }
  ],
  "total": 1
}
```

#### 查询问题建议详情
```
GET /system/dzbc/feedback/{id}
```

返回示例：
```json
{
  "code": 200,
  "data": {
    "id": 1,
    "userId": 1,
    "userName": "张三",
    "userPhone": "13800138000",
    "content": "班车晚点了，希望能准时发车",
    "imageUrls": "http://xxx.com/image1.jpg,http://xxx.com/image2.jpg",
    "type": 1,
    "status": 2,
    "replyContent": "感谢您的反馈，我们会加强调度管理",
    "replyUserId": 10,
    "replyUserName": "管理员",
    "replyTime": "2024-02-20 10:00:00",
    "createTime": "2024-02-20 09:00:00"
  }
}
```

#### 回复问题建议
```
POST /system/dzbc/feedback/reply/{id}
```

请求参数：
- id: 问题建议ID（路径参数）
- replyContent: 回复内容（表单参数，必填）

**请求示例：**
```
POST /system/dzbc/feedback/reply/1
Content-Type: application/x-www-form-urlencoded

replyContent=感谢您的反馈，我们会加强调度管理
```

返回示例：
```json
{
  "code": 200,
  "msg": "操作成功"
}
```

#### 修改问题建议状态
```
PUT /system/dzbc/feedback
```

请求体：
```json
{
  "id": 1,
  "status": 1,
  "remark": "正在处理中"
}
```

#### 删除问题建议
```
DELETE /system/dzbc/feedback/{ids}
```

返回示例：
```json
{
  "code": 200,
  "msg": "操作成功"
}
```

#### 导出问题建议
```
POST /system/dzbc/feedback/export
```

## 使用示例

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

使用 cURL：
```bash
curl -X POST "http://localhost:8080/system/dzbc/feedback/submit" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -F "content=班车晚点了，希望能准时发车" \
  -F "type=1" \
  -F "images=@/path/to/image1.jpg" \
  -F "images=@/path/to/image2.jpg"
```

使用 Postman：
1. 方法：POST
2. URL: http://localhost:8080/system/dzbc/feedback/submit
3. Headers: Authorization: Bearer YOUR_TOKEN
4. Body: form-data
   - content (Text): 班车晚点了，希望能准时发车
   - type (Text): 1
   - images (File): 选择图片文件（可添加多个）

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

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

### 3. 用户查询我的问题

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

## 字段说明

### 类型 (type)
- 1: 问题
- 2: 建议

### 状态 (status)
- 0: 待处理
- 1: 处理中
- 2: 已完成（已回复）

## 注意事项

1. **图片上传**：支持同时上传多张图片，图片会自动上传到 OSS，返回的 URL 以逗号分隔存储在数据库中
2. **自动获取用户信息**：提交时自动获取当前登录用户的信息（姓名、电话）
3. **回复功能**：回复后自动将状态更新为"已完成"，并记录回复人和回复时间
4. **图片地址格式**：imageUrls 字段存储格式为：`url1,url2,url3`
5. **权限控制**：普通用户只能查看自己的记录，管理员可以查看所有记录

## 数据库初始化

执行以下 SQL 创建表：
```bash
mysql -u root -p khyznh < script/sql/feedback.sql
```

## 安全配置

该接口已在安全配置中放行，无需额外权限验证：
```yaml
security:
  excludes:
    - /system/dzbc/feedback/**
```
