Files
oneos-backend/test-api.sh
k kfluous a2e2d5c27e refactor(asset): 优化保养项目设计,使用折中方案
变更内容:
1. 删除 maintainItemId 字段(冗余,无实际作用)
2. 保留 maintainItem 字段(直接存储项目名称)
3. 新增接口:获取已使用的保养项目列表(去重)
4. 前端可使用该接口提供下拉提示,提升用户体验
5. 添加 maintainItem 字段的非空校验

设计思路:
- 不引入保养项目字典表(避免过度设计)
- 通过 DISTINCT 查询提供已使用项目列表
- 用户可以输入新项目,也可以从已有项目中选择
- 后续如需规范化,可平滑升级到字典表方案
2026-03-12 09:54:00 +08:00

257 lines
7.3 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# =============================================
# 停车场和车型参数模块 - API 测试脚本
# 创建时间: 2026-03-12
# =============================================
# 配置
BASE_URL="http://localhost:48080/admin-api"
TOKEN="YOUR_TOKEN_HERE" # 需要替换为实际的 token
# 颜色输出
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 测试计数
TOTAL_TESTS=0
PASSED_TESTS=0
FAILED_TESTS=0
# 测试函数
test_api() {
local test_name=$1
local method=$2
local url=$3
local data=$4
TOTAL_TESTS=$((TOTAL_TESTS + 1))
echo ""
echo "=========================================="
echo "测试 ${TOTAL_TESTS}: ${test_name}"
echo "=========================================="
if [ -z "$data" ]; then
response=$(curl -s -X ${method} "${BASE_URL}${url}" \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json")
else
response=$(curl -s -X ${method} "${BASE_URL}${url}" \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" \
-d "${data}")
fi
echo "响应: ${response}"
# 检查响应是否包含 "code":0
if echo "$response" | grep -q '"code":0'; then
echo -e "${GREEN}✅ 测试通过${NC}"
PASSED_TESTS=$((PASSED_TESTS + 1))
return 0
else
echo -e "${RED}❌ 测试失败${NC}"
FAILED_TESTS=$((FAILED_TESTS + 1))
return 1
fi
}
# 开始测试
echo "=========================================="
echo "开始 API 测试"
echo "=========================================="
echo "基础 URL: ${BASE_URL}"
echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo ""
# ==========================================
# 停车场管理接口测试
# ==========================================
echo ""
echo "=========================================="
echo "一、停车场管理接口测试"
echo "=========================================="
# 测试 1创建停车场
test_api "创建停车场" "POST" "/asset/parking/create" '{
"name": "杭州停车场",
"principal": "张三",
"contactName": "李四",
"contactPhone": "13800138000",
"address": "浙江省杭州市西湖区",
"longitude": "120.123456",
"latitude": "30.123456",
"capacity": 100,
"parkedAmount": 0,
"stockArea": 1,
"unusualActionCity": 1,
"remark": "测试停车场"
}'
# 保存停车场 ID假设返回的 ID 为 1
PARKING_ID=1
# 测试 2获取停车场详情
test_api "获取停车场详情" "GET" "/asset/parking/get?id=${PARKING_ID}"
# 测试 3分页查询停车场
test_api "分页查询停车场" "GET" "/asset/parking/page?pageNo=1&pageSize=10"
# 测试 4获取停车场精简列表
test_api "获取停车场精简列表" "GET" "/asset/parking/simple-list"
# 测试 5更新停车场
test_api "更新停车场" "PUT" "/asset/parking/update" '{
"id": '${PARKING_ID}',
"name": "杭州停车场(已更新)",
"principal": "王五",
"contactName": "李四",
"contactPhone": "13800138000",
"address": "浙江省杭州市西湖区",
"longitude": "120.123456",
"latitude": "30.123456",
"capacity": 150,
"parkedAmount": 10,
"stockArea": 1,
"unusualActionCity": 1,
"remark": "测试停车场(已更新)"
}'
# ==========================================
# 车型参数管理接口测试
# ==========================================
echo ""
echo "=========================================="
echo "二、车型参数管理接口测试"
echo "=========================================="
# 测试 6创建车型参数带保养项目
test_api "创建车型参数(带保养项目)" "POST" "/asset/vehicle-model/create" '{
"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
}
]
}'
# 保存车型参数 ID假设返回的 ID 为 1
VEHICLE_MODEL_ID=1
# 测试 7获取车型参数详情含保养项目
test_api "获取车型参数详情(含保养项目)" "GET" "/asset/vehicle-model/get?id=${VEHICLE_MODEL_ID}"
# 测试 8分页查询车型参数
test_api "分页查询车型参数" "GET" "/asset/vehicle-model/page?pageNo=1&pageSize=10"
# 测试 9获取车型参数精简列表
test_api "获取车型参数精简列表" "GET" "/asset/vehicle-model/simple-list"
# 测试 10根据品牌查询车型参数
test_api "根据品牌查询车型参数" "GET" "/asset/vehicle-model/list-by-brand?brand=1"
# 测试 11根据车型查询车型参数
test_api "根据车型查询车型参数" "GET" "/asset/vehicle-model/list-by-model?model=1"
# 测试 12更新车型参数更新保养项目
test_api "更新车型参数(更新保养项目)" "PUT" "/asset/vehicle-model/update" '{
"id": '${VEHICLE_MODEL_ID}',
"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": 250.00,
"hourFee": 120.00,
"kilometerCycle": 5000,
"timeCycle": 6
}
]
}'
# ==========================================
# 清理测试数据(可选)
# ==========================================
echo ""
echo "=========================================="
echo "三、清理测试数据(可选)"
echo "=========================================="
# 测试 13删除车型参数
# test_api "删除车型参数" "DELETE" "/asset/vehicle-model/delete?id=${VEHICLE_MODEL_ID}"
# 测试 14删除停车场
# test_api "删除停车场" "DELETE" "/asset/parking/delete?id=${PARKING_ID}"
# ==========================================
# 测试总结
# ==========================================
echo ""
echo "=========================================="
echo "测试总结"
echo "=========================================="
echo "总测试数: ${TOTAL_TESTS}"
echo -e "${GREEN}通过: ${PASSED_TESTS}${NC}"
echo -e "${RED}失败: ${FAILED_TESTS}${NC}"
echo ""
if [ ${FAILED_TESTS} -eq 0 ]; then
echo -e "${GREEN}✅ 所有测试通过!${NC}"
exit 0
else
echo -e "${RED}❌ 有 ${FAILED_TESTS} 个测试失败${NC}"
exit 1
fi