Files
monisuo/test_approval.sh

111 lines
3.5 KiB
Bash
Raw Normal View History

#!/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 "================================"