修改签到和更新逻辑
All checks were successful
构建并部署 Spring Boot 应用 / build-and-deploy (push) Successful in 8m53s
All checks were successful
构建并部署 Spring Boot 应用 / build-and-deploy (push) Successful in 8m53s
This commit is contained in:
77
README.md
77
README.md
@@ -91,7 +91,7 @@ src
|
||||
系统通过WebSocket实现实时位置同步,端点为:`/ws/location`。
|
||||
|
||||
##### 连接建立
|
||||
客户端通过WebSocket连接到`/ws/location`端点建立连接。
|
||||
客户端通过WebSocket连接到`/ws/location?userId={userId}`端点建立连接,需要在查询参数中提供用户ID。
|
||||
|
||||
##### 消息格式
|
||||
所有消息都使用JSON格式。
|
||||
@@ -127,33 +127,40 @@ src
|
||||
{
|
||||
"userId": 123,
|
||||
"name": "张三",
|
||||
"role": "DELIVERY_PERSON"
|
||||
},
|
||||
{
|
||||
"userId": 456,
|
||||
"name": "李四",
|
||||
"role": "ADMIN"
|
||||
"role": "DELIVERY_PERSON",
|
||||
"userStatus": true,
|
||||
"lastUpdateTime": 1634567890000,
|
||||
"locationData": {
|
||||
"latitude": 25.0342,
|
||||
"longitude": 102.7057,
|
||||
"timestamp": 1634567890000
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
3. **updateLocation(位置更新)** - 服务器向所有已签到用户广播位置更新
|
||||
3. **userLocationList(用户位置列表)** - 服务器每30秒发送所有在线用户的位置列表
|
||||
```json
|
||||
{
|
||||
"type": "updateLocation",
|
||||
"userId": 123,
|
||||
"userRole": "DELIVERY_PERSON",
|
||||
"latitude": 25.0342,
|
||||
"longitude": 102.7057,
|
||||
"timestamp": 1634567890000
|
||||
"type": "userLocationList",
|
||||
"users": [
|
||||
{
|
||||
"userId": 123,
|
||||
"locationData": {
|
||||
"latitude": 25.0342,
|
||||
"longitude": 102.7057,
|
||||
"timestamp": 1634567890000
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
##### 交互流程
|
||||
|
||||
```
|
||||
用户签到] --> B{签到成功?}
|
||||
[用户签到] --> B{签到成功?}
|
||||
B -->|是| C[建立WebSocket连接]
|
||||
B -->|否| D[签到失败]
|
||||
C --> E[自动订阅位置更新]
|
||||
@@ -161,8 +168,7 @@ src
|
||||
F --> G[接收在线用户列表]
|
||||
G --> H[开始位置更新循环]
|
||||
H --> I[发送位置更新]
|
||||
I --> J[接收位置广播]
|
||||
J --> H
|
||||
I --> J[每30秒接收一次位置列表]
|
||||
K[用户签退] --> L{签退成功?}
|
||||
L -->|是| M[自动取消订阅并关闭WebSocket连接]
|
||||
L -->|否| N[签退失败]
|
||||
@@ -331,6 +337,7 @@ deploy.bat
|
||||
- `GET /user/info` - 获取用户信息
|
||||
- `POST /user/logout` - 用户登出
|
||||
- `POST /user/signin` - 用户签到
|
||||
- `POST /user/signout` - 用户签退
|
||||
- `POST /user/register` - 注册为配送员
|
||||
|
||||
### 订单相关
|
||||
@@ -341,7 +348,7 @@ deploy.bat
|
||||
### 配送员相关
|
||||
- `GET /delivery-persons` - 获取配送员列表
|
||||
- `GET /delivery-persons/{id}` - 获取配送员详情
|
||||
- `PUT /delivery-persons/{id}/location` - 更新配送员位置
|
||||
- `GET /delivery-persons/{id}/orders` - 获取配送员订单
|
||||
|
||||
### 员工管理相关(仅限管理员访问)
|
||||
- `GET /employees` - 获取员工列表
|
||||
@@ -388,26 +395,33 @@ deploy.bat
|
||||
{
|
||||
"userId": 123,
|
||||
"name": "张三",
|
||||
"role": "DELIVERY_PERSON"
|
||||
},
|
||||
{
|
||||
"userId": 456,
|
||||
"name": "李四",
|
||||
"role": "ADMIN"
|
||||
"role": "DELIVERY_PERSON",
|
||||
"userStatus": true,
|
||||
"lastUpdateTime": 1634567890000,
|
||||
"locationData": {
|
||||
"latitude": 25.0342,
|
||||
"longitude": 102.7057,
|
||||
"timestamp": 1634567890000
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
3. **updateLocation(位置更新)** - 服务器向所有已签到用户广播位置更新
|
||||
3. **userLocationList(用户位置列表)** - 服务器每30秒发送所有在线用户的位置列表
|
||||
```json
|
||||
{
|
||||
"type": "updateLocation",
|
||||
"userId": 123,
|
||||
"userRole": "DELIVERY_PERSON",
|
||||
"latitude": 25.0342,
|
||||
"longitude": 102.7057,
|
||||
"timestamp": 1634567890000
|
||||
"type": "userLocationList",
|
||||
"users": [
|
||||
{
|
||||
"userId": 123,
|
||||
"locationData": {
|
||||
"latitude": 25.0342,
|
||||
"longitude": 102.7057,
|
||||
"timestamp": 1634567890000
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
@@ -420,6 +434,7 @@ deploy.bat
|
||||
- 用户需要先通过REST API签到,然后才能建立WebSocket连接并接收位置更新
|
||||
- 用户签退时,服务器会自动取消订阅并关闭WebSocket连接
|
||||
- 客户端不再需要发送subscribe/unsubscribe消息,这些操作由服务器自动处理
|
||||
- 服务器现在每30秒批量发送一次所有在线用户的位置信息,而不是实时发送单个用户位置更新
|
||||
|
||||
### WebSocket位置同步增强(新增)
|
||||
为了支持管理员和配送员都能接收位置更新信息,我们对WebSocket位置同步功能进行了增强:
|
||||
|
Reference in New Issue
Block a user