# 多站点路线管理接口文档

## 功能概述
多站点路线管理功能支持创建包含多个站点的路线，并为每两个站点设置独立的价格，形成路线站点的梯度价格图。

## 数据库表结构

### 1. 多站点路线表 (tbl_dzbc_multi_site_path)
- id: 编号
- name: 路线名称
- status: 状态 (0-禁用, 1-启用)
- remark: 备注
- ext1, ext2: 扩展字段

### 2. 路线站点关联表 (tbl_dzbc_path_site)
- id: 编号
- path_id: 路线ID
- site_id: 站点ID（复用 tbl_dzbc_site 表）
- site_order: 站点顺序
- remark: 备注
- ext1, ext2: 扩展字段

### 3. 站点价格表 (tbl_dzbc_site_price)
- id: 编号
- path_id: 路线ID
- from_site_id: 出发站点ID
- to_site_id: 到达站点ID
- price: 价格（单位：分）
- remark: 备注
- ext1, ext2: 扩展字段

## 接口列表

### 1. 多站点路线管理

#### 查询路线列表
```
GET /system/dzbc/multiSitePath/list
```
参数：
- name: 路线名称（模糊查询）
- status: 状态
- pageNum: 页码
- pageSize: 每页大小

#### 查询路线详情（包含站点和价格）
```
GET /system/dzbc/multiSitePath/{id}
```
返回数据包含：
- 路线基本信息
- sites: 路线站点列表（按站点顺序排列）
- prices: 站点价格列表

#### 新增路线
```
POST /system/dzbc/multiSitePath
```
请求体：
```json
{
  "name": "福州市区环线",
  "status": 1,
  "remark": "福州市区环线路线"
}
```

#### 修改路线
```
PUT /system/dzbc/multiSitePath
```

#### 删除路线
```
DELETE /system/dzbc/multiSitePath/{ids}
```

### 2. 路线站点管理

#### 查询路线站点列表
```
GET /system/dzbc/pathSite/list
```

#### 根据路线ID查询站点
```
GET /system/dzbc/pathSite/path/{pathId}
```
返回数据包含：
- siteId: 站点ID
- siteName: 站点名称
- siteAddr: 站点地址
- siteOrder: 站点顺序

#### 新增路线站点
```
POST /system/dzbc/pathSite
```
请求体：
```json
{
  "pathId": 1,
  "siteId": 1,
  "siteOrder": 1,
  "remark": "第一站"
}
```

#### 修改路线站点
```
PUT /system/dzbc/pathSite
```

#### 删除路线站点
```
DELETE /system/dzbc/pathSite/{ids}
```

### 3. 站点价格管理

#### 查询站点价格列表
```
GET /system/dzbc/sitePrice/list
```

#### 根据路线ID查询所有价格
```
GET /system/dzbc/sitePrice/path/{pathId}
```
返回数据包含：
- fromSiteId: 出发站点ID
- fromSiteName: 出发站点名称
- toSiteId: 到达站点ID
- toSiteName: 到达站点名称
- price: 价格（单位：分）

#### 新增站点价格
```
POST /system/dzbc/sitePrice
```
请求体：
```json
{
  "pathId": 1,
  "fromSiteId": 1,
  "toSiteId": 2,
  "price": 500,
  "remark": "站点1到站点2"
}
```

#### 修改站点价格
```
PUT /system/dzbc/sitePrice
```

#### 删除站点价格
```
DELETE /system/dzbc/sitePrice/{ids}
```

## 使用流程

### 1. 创建多站点路线

步骤1：创建路线
```bash
POST /system/dzbc/multiSitePath
{
  "name": "福州市区环线",
  "status": 1
}
```

步骤2：添加路线站点
```bash
POST /system/dzbc/pathSite
{
  "pathId": 1,
  "siteId": 1,
  "siteOrder": 1
}
```

步骤3：设置站点价格
```bash
POST /system/dzbc/sitePrice
{
  "pathId": 1,
  "fromSiteId": 1,
  "toSiteId": 2,
  "price": 500
}
```

### 2. 用户查询路线和票价

查询路线详情：
```bash
GET /system/dzbc/multiSitePath/1
```

返回示例：
```json
{
  "code": 200,
  "data": {
    "id": 1,
    "name": "福州市区环线",
    "status": 1,
    "sites": [
      {
        "siteId": 1,
        "siteName": "火车站",
        "siteAddr": "福州市晋安区火车站",
        "siteOrder": 1
      },
      {
        "siteId": 2,
        "siteName": "市政府",
        "siteAddr": "福州市鼓楼市政府",
        "siteOrder": 2
      },
      {
        "siteId": 3,
        "siteName": "仓山万达",
        "siteAddr": "福州市仓山区万达广场",
        "siteOrder": 3
      }
    ],
    "prices": [
      {
        "fromSiteId": 1,
        "fromSiteName": "火车站",
        "toSiteId": 2,
        "toSiteName": "市政府",
        "price": 500
      },
      {
        "fromSiteId": 2,
        "fromSiteName": "市政府",
        "toSiteId": 3,
        "toSiteName": "仓山万达",
        "price": 600
      },
      {
        "fromSiteId": 1,
        "fromSiteName": "火车站",
        "toSiteId": 3,
        "toSiteName": "仓山万达",
        "price": 1100
      }
    ]
  }
}
```

### 3. 用户购票

用户根据站点价格表选择出发站点和到达站点，获取对应的价格进行购票。

## 注意事项

1. **站点顺序**：site_order 字段定义了路线的站点顺序，从小到大排列。
2. **价格设置**：可以为任意两个站点设置价格，包括相邻站点和跨站点。
3. **价格单位**：价格单位为分，例如 500 代表 5 元。
4. **站点复用**：站点使用已有的 tbl_dzbc_site 表中的数据。
5. **删除路线**：删除路线时，建议同时删除关联的站点和价格数据（可手动处理）。

## 数据库初始化

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

（可选）执行示例数据：
```bash
mysql -u root -p khyznh < script/sql/multi_site_path_data.sql
```
注意：示例数据中的站点ID需要替换为实际的站点ID。
