# 停车场和车型参数模块 - 部署和测试指南 ## 部署时间 2026-03-12 01:26 ## 一、数据库迁移 ### 方案 1:使用 MySQL 客户端(推荐) #### 1.1 安装 MySQL 客户端 ```bash brew install mysql-client ``` #### 1.2 执行 SQL 脚本 ```bash cd /Users/kkfluous/Projects/ai-coding/ln-oneos/oneos-backend mysql -h 47.103.115.36 -u root -pPassw0rd2026@ssl yudao_asset < sql/update-2026-03-12-停车场和车型参数模块.sql ``` #### 1.3 验证表结构 ```bash # 验证停车场表 mysql -h 47.103.115.36 -u root -pPassw0rd2026@ssl yudao_asset -e "DESC asset_parking;" # 验证车型参数表 mysql -h 47.103.115.36 -u root -pPassw0rd2026@ssl yudao_asset -e "DESC asset_vehicle_model;" # 验证车型维保项目关联表 mysql -h 47.103.115.36 -u root -pPassw0rd2026@ssl yudao_asset -e "DESC asset_vehicle_model_maintain_item;" ``` ### 方案 2:SSH 到服务器执行 #### 2.1 上传 SQL 文件 ```bash scp sql/update-2026-03-12-停车场和车型参数模块.sql root@47.103.115.36:/tmp/ ``` #### 2.2 SSH 登录并执行 ```bash ssh root@47.103.115.36 # 执行 SQL mysql -u root -pPassw0rd2026@ssl yudao_asset < /tmp/update-2026-03-12-停车场和车型参数模块.sql # 验证 mysql -u root -pPassw0rd2026@ssl yudao_asset -e "SHOW TABLES LIKE 'asset_%';" ``` ### 方案 3:使用数据库管理工具 使用 Navicat、DBeaver、MySQL Workbench 等工具: 1. 连接到数据库:47.103.115.36:3306 2. 选择数据库:yudao_asset 3. 打开 SQL 文件:`sql/update-2026-03-12-停车场和车型参数模块.sql` 4. 执行 SQL ## 二、启动应用服务 ### 2.1 打包应用 ```bash cd /Users/kkfluous/Projects/ai-coding/ln-oneos/oneos-backend # 清理并打包 mvn clean package -DskipTests # 查看打包结果 ls -lh yudao-server/target/*.jar ``` ### 2.2 启动服务 ```bash # 方式 1:使用 Maven 启动 cd yudao-server mvn spring-boot:run # 方式 2:使用 JAR 启动 java -jar yudao-server/target/yudao-server-*.jar # 方式 3:指定配置文件启动 java -jar yudao-server/target/yudao-server-*.jar --spring.profiles.active=local ``` ### 2.3 验证服务启动 ```bash # 检查服务是否启动 curl http://localhost:48080/actuator/health # 查看 Swagger 文档 open http://localhost:48080/doc.html ``` ## 三、API 测试用例 ### 3.1 停车场管理接口测试 #### 测试 1:创建停车场 ```bash curl -X POST http://localhost:48080/admin-api/asset/parking/create \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{ "name": "杭州停车场", "principal": "张三", "contactName": "李四", "contactPhone": "13800138000", "address": "浙江省杭州市西湖区", "longitude": "120.123456", "latitude": "30.123456", "capacity": 100, "parkedAmount": 0, "stockArea": 1, "unusualActionCity": 1, "remark": "测试停车场" }' ``` **预期结果**: ```json { "code": 0, "data": 1, "msg": "操作成功" } ``` #### 测试 2:获取停车场详情 ```bash curl -X GET "http://localhost:48080/admin-api/asset/parking/get?id=1" \ -H "Authorization: Bearer YOUR_TOKEN" ``` **预期结果**: ```json { "code": 0, "data": { "id": 1, "name": "杭州停车场", "principal": "张三", "contactName": "李四", "contactPhone": "13800138000", "address": "浙江省杭州市西湖区", "longitude": "120.123456", "latitude": "30.123456", "capacity": 100, "parkedAmount": 0, "stockArea": 1, "unusualActionCity": 1, "remark": "测试停车场", "createTime": "2026-03-12T01:30:00" } } ``` #### 测试 3:分页查询停车场 ```bash curl -X GET "http://localhost:48080/admin-api/asset/parking/page?pageNo=1&pageSize=10" \ -H "Authorization: Bearer YOUR_TOKEN" ``` #### 测试 4:更新停车场 ```bash curl -X PUT http://localhost:48080/admin-api/asset/parking/update \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{ "id": 1, "name": "杭州停车场(已更新)", "principal": "王五", "contactName": "李四", "contactPhone": "13800138000", "address": "浙江省杭州市西湖区", "longitude": "120.123456", "latitude": "30.123456", "capacity": 150, "parkedAmount": 10, "stockArea": 1, "unusualActionCity": 1, "remark": "测试停车场(已更新)" }' ``` #### 测试 5:删除停车场 ```bash curl -X DELETE "http://localhost:48080/admin-api/asset/parking/delete?id=1" \ -H "Authorization: Bearer YOUR_TOKEN" ``` ### 3.2 车型参数管理接口测试 #### 测试 1:创建车型参数(带保养项目) ```bash curl -X POST http://localhost:48080/admin-api/asset/vehicle-model/create \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{ "brand": 1, "model": 1, "modelCode": "HFC1043K1", "modelName": "江淮骏铃V6", "noticeModel": "HFC1043K1R8T", "hydrogenUnit": 1, "hydrogenCapacity": 165, "electricityMileage": 300, "reserveElectricity": 80.00, "hydrogenMileage": 400, "fuelType": 1, "tireSize": "225/70R19.5", "tireNumber": 6, "truckSize": "5995×2100×2850", "onlineSpreadEnterprise": "上海重塑", "batteryFactory": "宁德时代", "refrigeratorFactory": "开山", "maintainItems": [ { "maintainItem": "更换机油", "maintainContent": "更换机油、机滤", "materialsExpenses": 200.00, "hourFee": 100.00, "kilometerCycle": 5000, "timeCycle": 6 }, { "maintainItem": "更换空滤", "maintainContent": "更换空气滤芯", "materialsExpenses": 50.00, "hourFee": 50.00, "kilometerCycle": 10000, "timeCycle": 12 } ] }' ``` **预期结果**: ```json { "code": 0, "data": 1, "msg": "操作成功" } ``` #### 测试 2:获取车型参数详情(含保养项目) ```bash curl -X GET "http://localhost:48080/admin-api/asset/vehicle-model/get?id=1" \ -H "Authorization: Bearer YOUR_TOKEN" ``` **预期结果**: ```json { "code": 0, "data": { "id": 1, "brand": 1, "model": 1, "modelCode": "HFC1043K1", "modelName": "江淮骏铃V6", "noticeModel": "HFC1043K1R8T", "hydrogenUnit": 1, "hydrogenCapacity": 165, "electricityMileage": 300, "reserveElectricity": 80.00, "hydrogenMileage": 400, "fuelType": 1, "tireSize": "225/70R19.5", "tireNumber": 6, "truckSize": "5995×2100×2850", "onlineSpreadEnterprise": "上海重塑", "batteryFactory": "宁德时代", "refrigeratorFactory": "开山", "maintainItems": [ { "id": 1, "maintainItem": "更换机油", "maintainContent": "更换机油、机滤", "materialsExpenses": 200.00, "hourFee": 100.00, "kilometerCycle": 5000, "timeCycle": 6 }, { "id": 2, "maintainItem": "更换空滤", "maintainContent": "更换空气滤芯", "materialsExpenses": 50.00, "hourFee": 50.00, "kilometerCycle": 10000, "timeCycle": 12 } ], "createTime": "2026-03-12T01:30:00" } } ``` #### 测试 3:分页查询车型参数 ```bash curl -X GET "http://localhost:48080/admin-api/asset/vehicle-model/page?pageNo=1&pageSize=10" \ -H "Authorization: Bearer YOUR_TOKEN" ``` #### 测试 4:精简列表(用于下拉框) ```bash curl -X GET "http://localhost:48080/admin-api/asset/vehicle-model/simple-list" \ -H "Authorization: Bearer YOUR_TOKEN" ``` **预期结果**: ```json { "code": 0, "data": [ { "id": 1, "modelName": "江淮骏铃V6", "brand": 1, "model": 1 } ] } ``` #### 测试 5:根据品牌查询车型参数 ```bash curl -X GET "http://localhost:48080/admin-api/asset/vehicle-model/list-by-brand?brand=1" \ -H "Authorization: Bearer YOUR_TOKEN" ``` #### 测试 6:根据车型查询车型参数 ```bash curl -X GET "http://localhost:48080/admin-api/asset/vehicle-model/list-by-model?model=1" \ -H "Authorization: Bearer YOUR_TOKEN" ``` #### 测试 7:更新车型参数(更新保养项目) ```bash curl -X PUT http://localhost:48080/admin-api/asset/vehicle-model/update \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{ "id": 1, "brand": 1, "model": 1, "modelCode": "HFC1043K1", "modelName": "江淮骏铃V6(已更新)", "noticeModel": "HFC1043K1R8T", "hydrogenCapacity": 165, "reserveElectricity": 80.00, "fuelType": 1, "maintainItems": [ { "maintainItem": "更换机油", "maintainContent": "更换机油、机滤、空滤", "materialsExpenses": 250.00, "hourFee": 120.00, "kilometerCycle": 5000, "timeCycle": 6 } ] }' ``` #### 测试 8:删除车型参数 ```bash curl -X DELETE "http://localhost:48080/admin-api/asset/vehicle-model/delete?id=1" \ -H "Authorization: Bearer YOUR_TOKEN" ``` ## 四、使用 Postman 测试 ### 4.1 导入 Postman Collection 创建 Postman Collection,包含以下请求: **环境变量**: - `base_url`: http://localhost:48080 - `token`: YOUR_ACCESS_TOKEN **请求列表**: 1. 停车场 - 创建 2. 停车场 - 获取详情 3. 停车场 - 分页查询 4. 停车场 - 更新 5. 停车场 - 删除 6. 车型参数 - 创建(带保养项目) 7. 车型参数 - 获取详情 8. 车型参数 - 分页查询 9. 车型参数 - 精简列表 10. 车型参数 - 按品牌查询 11. 车型参数 - 按车型查询 12. 车型参数 - 更新 13. 车型参数 - 删除 ### 4.2 测试流程 1. **获取 Token** - 登录系统获取访问令牌 - 设置环境变量 `token` 2. **停车场测试** - 创建 → 获取详情 → 更新 → 分页查询 → 删除 3. **车型参数测试** - 创建(带保养项目)→ 获取详情(验证保养项目)→ 更新(修改保养项目)→ 删除 ## 五、验收标准 ### 5.1 数据库层面 - [ ] 停车场表包含所有新字段 - [ ] 车型参数表创建成功 - [ ] 车型维保项目关联表创建成功 - [ ] 索引创建正确 ### 5.2 功能层面 - [ ] 停车场 CRUD 功能正常 - [ ] 停车场新字段保存和查询正常 - [ ] 车型参数 CRUD 功能正常 - [ ] 保养项目随车型参数一起保存 - [ ] 保养项目随车型参数一起查询 - [ ] 保养项目随车型参数一起更新 - [ ] 保养项目随车型参数一起删除 ### 5.3 接口层面 - [ ] 所有接口返回正确 - [ ] 参数校验正常 - [ ] 错误提示友好 - [ ] Swagger 文档正常显示 ### 5.4 数据一致性 - [ ] 创建车型时保养项目正确保存 - [ ] 更新车型时保养项目正确更新 - [ ] 删除车型时保养项目级联删除 - [ ] 事务回滚正常 ## 六、常见问题 ### 6.1 数据库连接失败 **问题**: 无法连接到数据库 **解决**: - 检查数据库地址和端口 - 检查用户名和密码 - 检查防火墙设置 ### 6.2 表已存在错误 **问题**: `Table 'asset_vehicle_model' already exists` **解决**: - 检查表是否已创建 - 如需重新创建,先删除表:`DROP TABLE IF EXISTS asset_vehicle_model;` ### 6.3 字段已存在错误 **问题**: `Duplicate column name 'principal'` **解决**: - 检查字段是否已添加 - 跳过已存在的字段 ### 6.4 权限不足 **问题**: 接口返回 403 Forbidden **解决**: - 检查是否已登录 - 检查 Token 是否有效 - 检查用户是否有相应权限 ## 七、测试报告模板 ```markdown # 测试报告 ## 测试环境 - 数据库: 47.103.115.36:3306 - 应用服务: localhost:48080 - 测试时间: 2026-03-12 ## 测试结果 ### 停车场模块 - [ ] 创建停车场 - 通过/失败 - [ ] 获取停车场详情 - 通过/失败 - [ ] 分页查询停车场 - 通过/失败 - [ ] 更新停车场 - 通过/失败 - [ ] 删除停车场 - 通过/失败 ### 车型参数模块 - [ ] 创建车型参数 - 通过/失败 - [ ] 获取车型参数详情 - 通过/失败 - [ ] 分页查询车型参数 - 通过/失败 - [ ] 精简列表 - 通过/失败 - [ ] 按品牌查询 - 通过/失败 - [ ] 按车型查询 - 通过/失败 - [ ] 更新车型参数 - 通过/失败 - [ ] 删除车型参数 - 通过/失败 ### 保养项目功能 - [ ] 创建车型时保存保养项目 - 通过/失败 - [ ] 查询车型时返回保养项目 - 通过/失败 - [ ] 更新车型时更新保养项目 - 通过/失败 - [ ] 删除车型时删除保养项目 - 通过/失败 ## 问题记录 1. 问题描述 2. 重现步骤 3. 预期结果 4. 实际结果 5. 解决方案 ## 总结 - 测试通过率: X% - 发现问题数: X - 已解决问题数: X ``` --- **文档创建时间**: 2026-03-12 01:26 **状态**: 待执行部署和测试