Files
monisuo/diagnose_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

224 lines
7.3 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"
echo "=========================================="
echo "审批订单完整诊断"
echo "=========================================="
echo ""
# 检查后端服务是否运行
echo "1. 检查后端服务..."
if curl -s --connect-timeout 2 "${BASE_URL}/actuator/health" > /dev/null 2>&1; then
echo "✅ 后端服务正在运行"
else
echo "⚠️ 后端服务可能未运行或健康检查端点不可用"
echo " 尝试连接: ${BASE_URL}"
fi
echo ""
# 登录
echo "2. 管理员登录..."
LOGIN_RESPONSE=$(curl -s -X POST "${BASE_URL}/admin/login" \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}')
if echo "${LOGIN_RESPONSE}" | grep -q '"token"'; then
echo "✅ 登录成功"
TOKEN=$(echo ${LOGIN_RESPONSE} | grep -o '"token":"[^"]*"' | cut -d'"' -f4)
else
echo "❌ 登录失败"
echo "响应: ${LOGIN_RESPONSE}"
exit 1
fi
echo ""
# 查询待审批订单
echo "3. 查询待审批订单..."
PENDING=$(curl -s -X GET "${BASE_URL}/admin/order/pending?pageNum=1&pageSize=10" \
-H "Authorization: Bearer ${TOKEN}")
echo "响应预览: "
echo "${PENDING}" | python3 -m json.tool 2>/dev/null | head -30
echo ""
ORDER_COUNT=$(echo ${PENDING} | grep -o '"orderNo"' | wc -l | tr -d ' ')
echo "找到 ${ORDER_COUNT} 个待审批订单"
echo ""
if [ "$ORDER_COUNT" -eq 0 ]; then
echo "⚠️ 没有待审批订单,创建测试订单步骤:"
echo " 1. 用户登录小程序"
echo " 2. 创建充值订单"
echo " 3. 用户确认打款"
echo " 4. 重新运行此脚本"
exit 0
fi
# 选择第一个订单
ORDER_NO=$(echo ${PENDING} | grep -o '"orderNo":"[^"]*"' | head -1 | cut -d'"' -f4)
ORDER_TYPE=$(echo ${PENDING} | grep -A 10 "\"orderNo\":\"${ORDER_NO}\"" | grep -o '"type":[0-9]*' | head -1 | cut -d':' -f2)
ORDER_STATUS=$(echo ${PENDING} | grep -A 10 "\"orderNo\":\"${ORDER_NO}\"" | grep -o '"status":[0-9]*' | head -1 | cut -d':' -f2)
USER_ID=$(echo ${PENDING} | grep -A 10 "\"orderNo\":\"${ORDER_NO}\"" | grep -o '"userId":[0-9]*' | head -1 | cut -d':' -f2)
AMOUNT=$(echo ${PENDING} | grep -A 10 "\"orderNo\":\"${ORDER_NO}\"" | grep -o '"amount":[0-9.]*' | head -1 | cut -d':' -f2)
echo "选择测试订单:"
echo " 订单号: ${ORDER_NO}"
echo " 类型: ${ORDER_TYPE} (1=充值, 2=提现)"
echo " 当前状态: ${ORDER_STATUS}"
echo " 用户ID: ${USER_ID}"
echo " 金额: ${AMOUNT}"
echo ""
# 验证订单状态是否可审批
echo "4. 验证订单状态..."
if [ "$ORDER_TYPE" = "1" ]; then
if [ "$ORDER_STATUS" = "2" ]; then
echo "✅ 充值订单状态正确(待确认)"
else
echo "❌ 充值订单状态不正确需要状态2实际${ORDER_STATUS}"
exit 1
fi
else
if [ "$ORDER_STATUS" = "1" ]; then
echo "✅ 提现订单状态正确(待审批)"
else
echo "❌ 提现订单状态不正确需要状态1实际${ORDER_STATUS}"
exit 1
fi
fi
echo ""
# 查询用户资金账户(审批前)
echo "5. 查询用户资金账户(审批前)..."
USER_DETAIL=$(curl -s -X GET "${BASE_URL}/admin/user/detail?userId=${USER_ID}" \
-H "Authorization: Bearer ${TOKEN}")
BALANCE_BEFORE=$(echo ${USER_DETAIL} | grep -o '"balance":[0-9.]*' | head -1 | cut -d':' -f2)
FROZEN_BEFORE=$(echo ${USER_DETAIL} | grep -o '"frozen":[0-9.]*' | head -1 | cut -d':' -f2)
echo "审批前资金账户:"
echo " 余额: ${BALANCE_BEFORE}"
echo " 冻结: ${FROZEN_BEFORE}"
echo ""
# 执行审批
echo "=========================================="
echo "6. 执行审批操作(通过)"
echo "=========================================="
echo "重要:请观察后端控制台日志输出!"
echo ""
APPROVE_RESPONSE=$(curl -s -X POST "${BASE_URL}/admin/order/approve" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${TOKEN}" \
-d "{
\"orderNo\": \"${ORDER_NO}\",
\"status\": 2,
\"adminRemark\": \"诊断测试审批\"
}")
echo "审批响应:"
echo "${APPROVE_RESPONSE}" | python3 -m json.tool 2>/dev/null || echo "${APPROVE_RESPONSE}"
echo ""
if echo "${APPROVE_RESPONSE}" | grep -q '"code":"0"'; then
echo "✅ 审批接口返回成功"
else
echo "❌ 审批接口返回失败"
exit 1
fi
echo ""
# 等待并验证
echo "7. 等待2秒后验证结果..."
sleep 2
echo ""
# 查询订单状态(审批后)
echo "8. 查询订单状态(审批后)..."
ORDER_LIST=$(curl -s -X GET "${BASE_URL}/admin/order/list?pageNum=1&pageSize=10" \
-H "Authorization: Bearer ${TOKEN}")
NEW_STATUS=$(echo ${ORDER_LIST} | grep -A 20 "\"orderNo\":\"${ORDER_NO}\"" | grep -o '"status":[0-9]*' | head -1 | cut -d':' -f2)
echo "订单新状态: ${NEW_STATUS}"
if [ "$ORDER_TYPE" = "1" ]; then
EXPECTED_STATUS="3"
STATUS_TEXT="已完成"
else
EXPECTED_STATUS="2"
STATUS_TEXT="已完成"
fi
if [ "$NEW_STATUS" = "$EXPECTED_STATUS" ]; then
echo "✅✅✅ 订单状态更新成功!状态 = ${NEW_STATUS} (${STATUS_TEXT})"
else
echo "❌ 订单状态更新失败!期望 ${EXPECTED_STATUS},实际 ${NEW_STATUS}"
fi
echo ""
# 查询用户资金账户(审批后)
echo "9. 查询用户资金账户(审批后)..."
USER_DETAIL_AFTER=$(curl -s -X GET "${BASE_URL}/admin/user/detail?userId=${USER_ID}" \
-H "Authorization: Bearer ${TOKEN}")
BALANCE_AFTER=$(echo ${USER_DETAIL_AFTER} | grep -o '"balance":[0-9.]*' | head -1 | cut -d':' -f2)
FROZEN_AFTER=$(echo ${USER_DETAIL_AFTER} | grep -o '"frozen":[0-9.]*' | head -1 | cut -d':' -f2)
echo "审批后资金账户:"
echo " 余额: ${BALANCE_AFTER}"
echo " 冻结: ${FROZEN_AFTER}"
echo ""
# 验证余额变化
if [ "$ORDER_TYPE" = "1" ]; then
# 充值:余额应该增加
echo "验证充值订单余额变化:"
echo " 审批前余额: ${BALANCE_BEFORE}"
echo " 审批后余额: ${BALANCE_AFTER}"
echo " 充值金额: ${AMOUNT}"
# 使用 awk 进行浮点数计算
BALANCE_DIFF=$(awk "BEGIN {print ${BALANCE_AFTER} - ${BALANCE_BEFORE}}")
echo " 余额变化: ${BALANCE_DIFF}"
if [ "$(awk "BEGIN {print (${BALANCE_DIFF} == ${AMOUNT})}")" = "1" ]; then
echo "✅✅✅ 余额增加正确!"
else
echo "⚠️ 余额变化与充值金额不匹配"
fi
else
# 提现:冻结应该减少
echo "验证提现订单冻结变化:"
echo " 审批前冻结: ${FROZEN_BEFORE}"
echo " 审批后冻结: ${FROZEN_AFTER}"
echo " 提现金额: ${AMOUNT}"
FROZEN_DIFF=$(awk "BEGIN {print ${FROZEN_BEFORE} - ${FROZEN_AFTER}}")
echo " 冻结变化: ${FROZEN_DIFF}"
if [ "$(awk "BEGIN {print (${FROZEN_DIFF} == ${AMOUNT})}")" = "1" ]; then
echo "✅✅✅ 冻结减少正确!"
else
echo "⚠️ 冻结变化与提现金额不匹配"
fi
fi
echo ""
echo "=========================================="
echo "诊断完成"
echo "=========================================="
echo ""
echo "📋 检查清单:"
echo " 1. 后端控制台是否有详细日志输出?"
echo " 2. 订单状态是否正确更新?"
echo " 3. 用户资金账户是否正确变化?"
echo " 4. 是否有任何错误或异常?"
echo ""
echo "如果所有检查都通过,说明审批功能正常工作!"
echo "如果有任何失败,请查看后端控制台日志以获取详细信息。"