first commit

This commit is contained in:
2025-06-12 19:37:54 +08:00
parent bb2eb010f7
commit 1c6093fa9a
87 changed files with 18432 additions and 0 deletions

206
start-system.sh Normal file
View File

@@ -0,0 +1,206 @@
#!/bin/bash
# ===========================================
# 农业股票数据分析系统启动脚本
# ===========================================
echo "🌾 农业股票数据分析系统启动中..."
echo "=========================================="
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 检查必要的软件
check_requirements() {
echo -e "${BLUE}📋 检查系统环境...${NC}"
# 检查Java
if ! command -v java &> /dev/null; then
echo -e "${RED}❌ 未安装Java请先安装JDK 8+${NC}"
exit 1
fi
# 检查Maven
if ! command -v mvn &> /dev/null; then
echo -e "${RED}❌ 未安装Maven请先安装Maven${NC}"
exit 1
fi
# 检查Node.js
if ! command -v node &> /dev/null; then
echo -e "${RED}❌ 未安装Node.js请先安装Node.js 16+${NC}"
exit 1
fi
# 检查MySQL
if ! command -v mysql &> /dev/null; then
echo -e "${RED}❌ 未安装MySQL请先安装MySQL 8.0+${NC}"
exit 1
fi
echo -e "${GREEN}✅ 系统环境检查通过${NC}"
}
# 初始化数据库
init_database() {
echo -e "${BLUE}🗄️ 初始化数据库...${NC}"
# 检查数据库连接
mysql -u root -p -e "SELECT 1;" &> /dev/null
if [ $? -ne 0 ]; then
echo -e "${RED}❌ 无法连接到MySQL数据库${NC}"
exit 1
fi
# 创建数据库和表结构
echo -e "${YELLOW}📝 创建数据库表结构...${NC}"
mysql -u root -p agricultural_stock < spark-processor/database_tables.sql
echo -e "${GREEN}✅ 数据库初始化完成${NC}"
}
# 启动Spark数据处理器
start_spark_processor() {
echo -e "${BLUE}⚡ 启动Spark数据处理器...${NC}"
cd spark-processor
# 编译项目
echo -e "${YELLOW}🔨 编译Spark项目...${NC}"
mvn clean compile > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "${RED}❌ Spark项目编译失败${NC}"
exit 1
fi
# 运行数据处理
echo -e "${YELLOW}📊 执行数据分析...${NC}"
mvn exec:java -Dexec.mainClass="com.agricultural.spark.StockDataProcessor" > ../logs/spark.log 2>&1 &
SPARK_PID=$!
cd ..
echo -e "${GREEN}✅ Spark数据处理器已启动 (PID: $SPARK_PID)${NC}"
}
# 启动后端服务
start_backend() {
echo -e "${BLUE}🚀 启动后端服务...${NC}"
cd backend
# 编译项目
echo -e "${YELLOW}🔨 编译后端项目...${NC}"
mvn clean compile > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "${RED}❌ 后端项目编译失败${NC}"
exit 1
fi
# 启动Spring Boot应用
echo -e "${YELLOW}🌐 启动Spring Boot应用...${NC}"
mvn spring-boot:run > ../logs/backend.log 2>&1 &
BACKEND_PID=$!
cd ..
echo -e "${GREEN}✅ 后端服务已启动 (PID: $BACKEND_PID)${NC}"
echo -e "${GREEN} API地址: http://localhost:8080${NC}"
}
# 启动前端服务
start_frontend() {
echo -e "${BLUE}🎨 启动前端服务...${NC}"
cd frontend
# 安装依赖
if [ ! -d "node_modules" ]; then
echo -e "${YELLOW}📦 安装前端依赖...${NC}"
npm install > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "${RED}❌ 前端依赖安装失败${NC}"
exit 1
fi
fi
# 启动开发服务器
echo -e "${YELLOW}🌐 启动Vue开发服务器...${NC}"
npm run dev > ../logs/frontend.log 2>&1 &
FRONTEND_PID=$!
cd ..
echo -e "${GREEN}✅ 前端服务已启动 (PID: $FRONTEND_PID)${NC}"
echo -e "${GREEN} 访问地址: http://localhost:3000${NC}"
}
# 创建日志目录
create_log_dir() {
if [ ! -d "logs" ]; then
mkdir -p logs
fi
}
# 保存进程ID
save_pids() {
echo "$SPARK_PID" > logs/spark.pid
echo "$BACKEND_PID" > logs/backend.pid
echo "$FRONTEND_PID" > logs/frontend.pid
echo -e "${BLUE}📝 进程ID已保存到logs目录${NC}"
}
# 显示系统状态
show_status() {
echo ""
echo -e "${GREEN}🎉 农业股票数据分析系统启动完成!${NC}"
echo "=========================================="
echo -e "${BLUE}📊 Spark数据处理器:${NC} PID $SPARK_PID"
echo -e "${BLUE}🚀 后端API服务:${NC} http://localhost:8080"
echo -e "${BLUE}🎨 前端Web界面:${NC} http://localhost:3000"
echo ""
echo -e "${YELLOW}📋 系统功能:${NC}"
echo " • 实时股票数据分析"
echo " • 技术指标计算"
echo " • 市场趋势预测"
echo " • 数据可视化展示"
echo ""
echo -e "${YELLOW}📝 查看日志:${NC}"
echo " • Spark日志: tail -f logs/spark.log"
echo " • 后端日志: tail -f logs/backend.log"
echo " • 前端日志: tail -f logs/frontend.log"
echo ""
echo -e "${YELLOW}🛑 停止系统:${NC}"
echo " • 运行: ./stop-system.sh"
echo "=========================================="
}
# 主函数
main() {
check_requirements
create_log_dir
init_database
# 等待用户确认
echo -e "${YELLOW}准备启动系统按Enter继续...${NC}"
read
start_spark_processor
sleep 5 # 等待Spark处理完成
start_backend
sleep 10 # 等待后端启动
start_frontend
sleep 5 # 等待前端启动
save_pids
show_status
}
# 错误处理
trap 'echo -e "${RED}❌ 启动过程中发生错误,正在清理...${NC}"; kill $SPARK_PID $BACKEND_PID $FRONTEND_PID 2>/dev/null; exit 1' ERR
# 执行主函数
main