111 lines
3.5 KiB
Bash
111 lines
3.5 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
# 订单审批功能测试脚本
|
|||
|
|
# 用于诊断审批后订单状态不更新的问题
|
|||
|
|
|
|||
|
|
BASE_URL="http://localhost:5010"
|
|||
|
|
ADMIN_TOKEN=""
|
|||
|
|
|
|||
|
|
echo "================================"
|
|||
|
|
echo "订单审批功能诊断测试"
|
|||
|
|
echo "================================"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 1. 管理员登录
|
|||
|
|
echo "步骤1: 管理员登录..."
|
|||
|
|
LOGIN_RESPONSE=$(curl -s -X POST "$BASE_URL/admin/login" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{"username":"admin","password":"admin123"}')
|
|||
|
|
|
|||
|
|
echo "登录响应: $LOGIN_RESPONSE"
|
|||
|
|
ADMIN_TOKEN=$(echo $LOGIN_RESPONSE | grep -o '"token":"[^"]*' | cut -d'"' -f4)
|
|||
|
|
echo "Token: ${ADMIN_TOKEN:0:20}..."
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 2. 获取待审批订单列表
|
|||
|
|
echo "步骤2: 获取待审批订单..."
|
|||
|
|
PENDING_RESPONSE=$(curl -s "$BASE_URL/admin/order/pending" \
|
|||
|
|
-H "Authorization: Bearer $ADMIN_TOKEN")
|
|||
|
|
|
|||
|
|
echo "待审批订单响应:"
|
|||
|
|
echo "$PENDING_RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$PENDING_RESPONSE"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 提取第一个订单号
|
|||
|
|
ORDER_NO=$(echo $PENDING_RESPONSE | grep -o '"orderNo":"[^"]*' | head -1 | cut -d'"' -f4)
|
|||
|
|
if [ -z "$ORDER_NO" ]; then
|
|||
|
|
echo "❌ 没有待审批的订单"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "选择的订单号: $ORDER_NO"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 3. 查询订单详情(审批前)
|
|||
|
|
echo "步骤3: 查询订单详情(审批前)..."
|
|||
|
|
DETAIL_RESPONSE=$(curl -s "$BASE_URL/admin/order/list?orderNo=$ORDER_NO" \
|
|||
|
|
-H "Authorization: Bearer $ADMIN_TOKEN")
|
|||
|
|
|
|||
|
|
echo "订单详情(审批前):"
|
|||
|
|
echo "$DETAIL_RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$DETAIL_RESPONSE"
|
|||
|
|
|
|||
|
|
BEFORE_STATUS=$(echo $DETAIL_RESPONSE | grep -o '"status":[0-9]*' | head -1 | cut -d':' -f2)
|
|||
|
|
echo "审批前状态: $BEFORE_STATUS"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 4. 执行审批(通过)
|
|||
|
|
echo "步骤4: 执行审批(通过)..."
|
|||
|
|
APPROVE_RESPONSE=$(curl -s -X POST "$BASE_URL/admin/order/approve" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-H "Authorization: Bearer $ADMIN_TOKEN" \
|
|||
|
|
-d "{\"orderNo\":\"$ORDER_NO\",\"status\":2,\"adminRemark\":\"测试审批通过\"}")
|
|||
|
|
|
|||
|
|
echo "审批响应:"
|
|||
|
|
echo "$APPROVE_RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$APPROVE_RESPONSE"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 5. 等待2秒,确保事务提交
|
|||
|
|
echo "步骤5: 等待事务提交..."
|
|||
|
|
sleep 2
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 6. 再次查询订单详情(审批后)
|
|||
|
|
echo "步骤6: 查询订单详情(审批后)..."
|
|||
|
|
DETAIL_RESPONSE_AFTER=$(curl -s "$BASE_URL/admin/order/list?orderNo=$ORDER_NO" \
|
|||
|
|
-H "Authorization: Bearer $ADMIN_TOKEN")
|
|||
|
|
|
|||
|
|
echo "订单详情(审批后):"
|
|||
|
|
echo "$DETAIL_RESPONSE_AFTER" | python3 -m json.tool 2>/dev/null || echo "$DETAIL_RESPONSE_AFTER"
|
|||
|
|
|
|||
|
|
AFTER_STATUS=$(echo $DETAIL_RESPONSE_AFTER | grep -o '"status":[0-9]*' | head -1 | cut -d':' -f2)
|
|||
|
|
echo "审批后状态: $AFTER_STATUS"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 7. 验证状态是否改变
|
|||
|
|
echo "================================"
|
|||
|
|
echo "验证结果:"
|
|||
|
|
echo "================================"
|
|||
|
|
echo "审批前状态: $BEFORE_STATUS"
|
|||
|
|
echo "审批后状态: $AFTER_STATUS"
|
|||
|
|
|
|||
|
|
if [ "$BEFORE_STATUS" != "$AFTER_STATUS" ]; then
|
|||
|
|
echo "✅ 状态已改变!"
|
|||
|
|
else
|
|||
|
|
echo "❌ 状态未改变!"
|
|||
|
|
echo ""
|
|||
|
|
echo "可能的原因:"
|
|||
|
|
echo "1. 事务回滚了"
|
|||
|
|
echo "2. 数据库更新失败"
|
|||
|
|
echo "3. 查询到了缓存数据"
|
|||
|
|
echo ""
|
|||
|
|
echo "建议检查:"
|
|||
|
|
echo "1. 查看后端日志,搜索 '[FundService.approve]'"
|
|||
|
|
echo "2. 直接查询数据库验证:"
|
|||
|
|
echo " SELECT id, order_no, status, approve_admin_id, approve_time FROM order_fund WHERE order_no='$ORDER_NO';"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "================================"
|
|||
|
|
echo "测试完成"
|
|||
|
|
echo "================================"
|