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 调试工具
This commit is contained in:
2026-03-24 09:41:23 +08:00
parent 57e2991ccb
commit 4f17e7ea8a
40 changed files with 6073 additions and 50 deletions

164
test_fix.sh Executable file
View File

@@ -0,0 +1,164 @@
#!/bin/bash
# StackOverflowError 修复测试脚本
# 使用方法: ./test_fix.sh
echo "======================================"
echo " Monisuo StackOverflowError 修复测试"
echo "======================================"
echo ""
# 颜色定义
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 检查 Java 环境
echo "1⃣ 检查 Java 环境..."
if ! command -v java &> /dev/null; then
echo -e "${RED}❌ 未找到 Java 环境${NC}"
echo "请先安装 Java: https://www.java.com/download/"
exit 1
fi
JAVA_VERSION=$(java -version 2>&1 | head -n 1)
echo -e "${GREEN}✅ Java 环境: $JAVA_VERSION${NC}"
echo ""
# 编译项目
echo "2⃣ 编译项目..."
cd "$(dirname "$0")"
if [ ! -f "pom.xml" ]; then
echo -e "${RED}❌ 未找到 pom.xml${NC}"
exit 1
fi
mvn clean package -DskipTests
if [ $? -ne 0 ]; then
echo -e "${RED}❌ 编译失败${NC}"
exit 1
fi
echo -e "${GREEN}✅ 编译成功${NC}"
echo ""
# 检查是否有旧的进程在运行
echo "3⃣ 检查旧进程..."
OLD_PID=$(ps aux | grep 'monisuo-1.0.jar' | grep -v grep | awk '{print $2}')
if [ ! -z "$OLD_PID" ]; then
echo -e "${YELLOW}⚠️ 发现旧进程 (PID: $OLD_PID),正在停止...${NC}"
kill -9 $OLD_PID
sleep 2
fi
echo -e "${GREEN}✅ 没有旧进程${NC}"
echo ""
# 启动服务
echo "4⃣ 启动服务..."
nohup java -jar target/monisuo-1.0.jar > app.log 2>&1 &
APP_PID=$!
echo -e "${GREEN}✅ 服务已启动 (PID: $APP_PID)${NC}"
echo "⏳ 等待服务启动..."
sleep 10
echo ""
# 检查服务状态
echo "5⃣ 检查服务状态..."
if ps -p $APP_PID > /dev/null; then
echo -e "${GREEN}✅ 服务正在运行${NC}"
else
echo -e "${RED}❌ 服务启动失败${NC}"
echo "查看日志: tail -100 app.log"
exit 1
fi
echo ""
# 检查启动日志
echo "6⃣ 检查启动日志..."
if tail -50 app.log | grep -q "Started SpcCloudApplication"; then
echo -e "${GREEN}✅ 服务启动成功${NC}"
elif tail -50 app.log | grep -q "Error\|Exception"; then
echo -e "${RED}❌ 启动过程中发现错误${NC}"
echo "错误日志:"
tail -50 app.log | grep -A 5 "Error\|Exception"
exit 1
else
echo -e "${YELLOW}⚠️ 未找到启动成功标志,请手动检查${NC}"
fi
echo ""
# 测试接口
echo "7⃣ 测试核心接口(需要登录 Token..."
echo "注意: 以下测试需要有效的 Authorization Token"
echo ""
read -p "是否要测试接口?(y/n) " -n 1 -r
echo ""
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "跳过接口测试"
echo ""
echo "======================================"
echo -e "${GREEN}✅ 修复验证完成${NC}"
echo "服务正在运行PID: $APP_PID"
echo "日志文件: app.log"
echo "======================================"
exit 0
fi
read -p "请输入 Authorization Token: " TOKEN
if [ -z "$TOKEN" ]; then
echo -e "${YELLOW}⚠️ 未提供 Token跳过接口测试${NC}"
else
echo ""
echo "测试 /api/asset/overview..."
RESPONSE=$(curl -s -w "\n%{http_code}" -H "Authorization: Bearer $TOKEN" http://localhost:8080/api/asset/overview)
HTTP_CODE=$(echo "$RESPONSE" | tail -n 1)
BODY=$(echo "$RESPONSE" | head -n -1)
if [ "$HTTP_CODE" = "200" ]; then
echo -e "${GREEN}✅ /api/asset/overview - 成功${NC}"
echo "响应: $BODY"
else
echo -e "${RED}❌ /api/asset/overview - 失败 (HTTP $HTTP_CODE)${NC}"
echo "响应: $BODY"
fi
echo ""
echo "测试 /api/asset/trade..."
RESPONSE=$(curl -s -w "\n%{http_code}" -H "Authorization: Bearer $TOKEN" http://localhost:8080/api/asset/trade)
HTTP_CODE=$(echo "$RESPONSE" | tail -n 1)
BODY=$(echo "$RESPONSE" | head -n -1)
if [ "$HTTP_CODE" = "200" ]; then
echo -e "${GREEN}✅ /api/asset/trade - 成功${NC}"
echo "响应: $BODY"
else
echo -e "${RED}❌ /api/asset/trade - 失败 (HTTP $HTTP_CODE)${NC}"
echo "响应: $BODY"
fi
echo ""
echo "测试 /api/asset/fund..."
RESPONSE=$(curl -s -w "\n%{http_code}" -H "Authorization: Bearer $TOKEN" http://localhost:8080/api/asset/fund)
HTTP_CODE=$(echo "$RESPONSE" | tail -n 1)
BODY=$(echo "$RESPONSE" | head -n -1)
if [ "$HTTP_CODE" = "200" ]; then
echo -e "${GREEN}✅ /api/asset/fund - 成功${NC}"
echo "响应: $BODY"
else
echo -e "${RED}❌ /api/asset/fund - 失败 (HTTP $HTTP_CODE)${NC}"
echo "响应: $BODY"
fi
echo ""
fi
echo "======================================"
echo -e "${GREEN}✅ 所有测试完成${NC}"
echo "服务正在运行PID: $APP_PID"
echo "停止服务: kill $APP_PID"
echo "查看日志: tail -f app.log"
echo "======================================"