Files
monisuo/test_approval.sh
sion 4f17e7ea8a fix: 修复订单审批状态不更新的问题
主要修复:
1. 添加 MetaObjectHandler 自动填充时间字段
2. 启用 @EnableTransactionManagement 显式事务管理
3. 使用 LambdaUpdateWrapper 强制更新订单状态
4. 完善 MyBatis Plus 配置和字段更新策略
5. 添加详细的调试日志配置
6. 前端集成 vconsole 调试工具

关键修改文件:
- SpcCloudApplication.java: 添加 @EnableTransactionManagement
- FundService.java: 使用 LambdaUpdateWrapper 显式更新
- MyBatisPlusMetaObjectHandler.java: 自动填充时间字段
- application-dev.yml: 完善配置和日志
- monisuo-admin: 添加 vconsole 调试工具
2026-03-24 09:41:23 +08:00

111 lines
3.5 KiB
Bash
Executable File
Raw 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
# 订单审批功能测试脚本
# 用于诊断审批后订单状态不更新的问题
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 "================================"