同步充电桩数据

This commit is contained in:
Guoqs
2025-12-31 16:38:27 +08:00
parent ee7a3425d0
commit 193470ffb4
5 changed files with 253 additions and 43 deletions

View File

@@ -26,10 +26,39 @@ Web 项目 (MySQL) → HTTP API → JCPP 项目 (PostgreSQL)
## 需要实现的功能
### 1. 充电桩同步接口
### 1. 认证接口
**接口路径**`POST /api/auth/login`
**请求格式**
```json
{
"username": "sanbing",
"password": "password123"
}
```
**响应格式**
```json
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": 1800
}
```
**说明**
- 用于 Web 项目获取访问令牌
- token 有效期 30 分钟
- Web 项目会将 token 缓存在 Redis 中
---
### 2. 充电桩同步接口
**接口路径**`POST /api/sync/piles`
**认证方式**Bearer Token在请求头中添加 `Authorization: Bearer {token}`
**重要说明**
- ✅ 所有充电桩的 `station_id` 统一使用固定值:`88bca8da-cdbf-6587-aecc-75784838c501`
- Web 项目的原始 station_id 保存在 `additionalInfo.webStationId` 中便于追溯
@@ -105,13 +134,17 @@ Web 项目 (MySQL) → HTTP API → JCPP 项目 (PostgreSQL)
- 使用事务保证数据一致性
- pile_code 必须唯一(已有唯一索引)
- 所有充电桩的 station_id 都使用固定值 `88bca8da-cdbf-6587-aecc-75784838c501`
- **需要验证 Authorization 请求头中的 token**
- token 无效时返回 401 Unauthorized
---
### 2. 充电枪同步接口
### 3. 充电枪同步接口
**接口路径**`POST /api/sync/guns`
**认证方式**Bearer Token在请求头中添加 `Authorization: Bearer {token}`
**重要说明**
- ✅ 所有充电枪的 `station_id` 统一使用固定值:`88bca8da-cdbf-6587-aecc-75784838c501`
@@ -173,6 +206,8 @@ Web 项目 (MySQL) → HTTP API → JCPP 项目 (PostgreSQL)
- gun_code 必须唯一(已有唯一索引)
- (pile_id, gun_no) 组合必须唯一(已有唯一索引)
- 所有充电枪的 station_id 都使用固定值 `88bca8da-cdbf-6587-aecc-75784838c501`
- **需要验证 Authorization 请求头中的 token**
- token 无效时返回 401 Unauthorized
---
@@ -189,11 +224,14 @@ Web 项目 (MySQL) → HTTP API → JCPP 项目 (PostgreSQL)
```
src/main/java/com/jcpp/
├── controller/
│ ├── AuthController.java # 认证接口 Controller
│ └── SyncController.java # 同步接口 Controller
├── service/
│ ├── AuthService.java # 认证服务接口
│ ├── PileSyncService.java # 充电桩同步服务接口
│ └── GunSyncService.java # 充电枪同步服务接口
├── service/impl/
│ ├── AuthServiceImpl.java
│ ├── PileSyncServiceImpl.java
│ └── GunSyncServiceImpl.java
├── entity/
@@ -202,11 +240,15 @@ src/main/java/com/jcpp/
├── repository/
│ ├── PileRepository.java
│ └── GunRepository.java
── dto/
├── PileSyncDTO.java # 充电桩同步 DTO
├── GunSyncDTO.java # 充电枪同步 DTO
├── SyncRequest.java # 同步请求
── SyncResponse.java # 同步响应
── dto/
├── LoginRequest.java # 登录请求
├── LoginResponse.java # 登录响应
├── PileSyncDTO.java # 充电桩同步 DTO
── GunSyncDTO.java # 充电枪同步 DTO
│ ├── SyncRequest.java # 同步请求
│ └── SyncResponse.java # 同步响应
└── security/
└── JwtTokenProvider.java # JWT Token 生成和验证
```
### 关键代码示例
@@ -319,9 +361,10 @@ public SyncResponse syncPiles(List<PileSyncDTO> piles) {
- 考虑使用缓存优化映射查询
5. **安全性**
- 添加接口鉴权
- 添加接口鉴权JWT Token
- 验证请求数据的合法性
- 防止 SQL 注入
- token 有效期 30 分钟
---