Files
gpf_pet_hospital/backend/build-with-idea.sh
wangziqi 77eb648b38 完善统计功能并优化前端界面
后端:
- 扩展 StatsController,新增趋势分析(/trends)和今日待办(/today-todos)接口
- 更新 application-dev.yml 数据库配置(端口3306,允许公钥检索)
- 完善 pom.xml Maven 编译器插件和 Lombok 版本配置
- 添加 build-with-idea.sh 构建脚本

前端:
- 新增 Register.vue 注册页面
- 优化 Dashboard 仪表盘布局和数据统计展示
- 改进 MainLayout 侧边栏样式和品牌展示
- 更新 Login 登录页面样式
- 新增 theme.css 主题样式文件
- 扩展 API 接口(statsTrends、todayTodos)
- 更新路由和全局样式

文档:
- 添加功能检查报告和功能列表文档
2026-02-11 16:11:31 +08:00

271 lines
8.1 KiB
Bash
Executable File

#!/bin/bash
# 爱维宠物医院管理平台 - 打包启动一条龙脚本
# 使用 IntelliJ IDEA 内置 JDK 和 Maven
# 支持 IDEA 和 IDEA CE 版本
# 查找 IDEA 安装路径
if [ -d "/Applications/IntelliJ IDEA.app" ]; then
IDEA_HOME="/Applications/IntelliJ IDEA.app"
elif [ -d "/Applications/IntelliJ IDEA CE.app" ]; then
IDEA_HOME="/Applications/IntelliJ IDEA CE.app"
else
echo "❌ 错误: 未找到 IntelliJ IDEA 安装目录"
echo "请确保 IDEA 安装在 /Applications 目录下"
exit 1
fi
# 设置 IDEA 内置 JDK
export JAVA_HOME="$IDEA_HOME/Contents/jbr/Contents/Home"
export PATH="$JAVA_HOME/bin:$PATH"
# 设置 IDEA 内置 Maven
MAVEN_BIN="$IDEA_HOME/Contents/plugins/maven/lib/maven3/bin/mvn"
if [ ! -f "$MAVEN_BIN" ]; then
echo "❌ 错误: 未找到 IDEA 内置 Maven"
exit 1
fi
# 脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$SCRIPT_DIR"
# 默认配置
JAR_NAME="pet-hospital-1.0.0.jar"
JAR_PATH="target/$JAR_NAME"
SERVER_PORT="8080"
ACTIVE_PROFILE="dev"
SKIP_TESTS="-DskipTests"
BACKGROUND=false
DEBUG_MODE=false
JVM_OPTS="-Xms512m -Xmx1g"
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 显示帮助信息
show_help() {
echo "爱维宠物医院管理平台 - 打包启动脚本"
echo ""
echo "用法: $0 [选项]"
echo ""
echo "选项:"
echo " -p, --port PORT 指定服务端口号 (默认: 8080)"
echo " -e, --env ENV 指定环境配置 (默认: dev, 可选: dev/prod)"
echo " -t, --test 运行测试 (默认跳过测试)"
echo " -b, --background 后台运行"
echo " -d, --debug 开启调试模式 (端口: 5005)"
echo " -c, --clean 仅清理,不打包"
echo " -s, --stop 停止正在运行的服务"
echo " -l, --logs 查看后台运行日志"
echo " -h, --help 显示帮助信息"
echo ""
echo "示例:"
echo " $0 # 打包并启动"
echo " $0 -p 8081 # 使用端口 8081 启动"
echo " $0 -e prod # 使用生产环境配置"
echo " $0 -b # 后台运行"
echo " $0 -d # 调试模式"
echo " $0 -s # 停止服务"
echo " $0 -l # 查看日志"
}
# 解析参数
while [[ $# -gt 0 ]]; do
case $1 in
-p|--port)
SERVER_PORT="$2"
shift 2
;;
-e|--env)
ACTIVE_PROFILE="$2"
shift 2
;;
-t|--test)
SKIP_TESTS=""
shift
;;
-b|--background)
BACKGROUND=true
shift
;;
-d|--debug)
DEBUG_MODE=true
shift
;;
-c|--clean)
echo "🧹 清理项目..."
"$MAVEN_BIN" clean
echo "✅ 清理完成"
exit 0
;;
-s|--stop)
echo "🛑 停止服务..."
PID=$(lsof -ti:$SERVER_PORT 2>/dev/null || echo "")
if [ -n "$PID" ]; then
kill $PID 2>/dev/null
sleep 2
if ps -p $PID > /dev/null 2>&1; then
kill -9 $PID 2>/dev/null
fi
echo "✅ 服务已停止 (端口: $SERVER_PORT)"
else
# 尝试通过进程名查找
PID=$(pgrep -f "$JAR_NAME" | head -1)
if [ -n "$PID" ]; then
kill $PID 2>/dev/null
sleep 2
if ps -p $PID > /dev/null 2>&1; then
kill -9 $PID 2>/dev/null
fi
echo "✅ 服务已停止"
else
echo "⚠️ 未找到运行中的服务"
fi
fi
exit 0
;;
-l|--logs)
if [ -f "$SCRIPT_DIR/app.log" ]; then
echo "📋 查看日志 (按 Ctrl+C 退出)..."
tail -f "$SCRIPT_DIR/app.log"
else
echo "❌ 未找到日志文件"
fi
exit 0
;;
-h|--help)
show_help
exit 0
;;
*)
echo "❌ 未知选项: $1"
show_help
exit 1
;;
esac
done
# 检查端口是否被占用
check_port() {
if lsof -Pi :$SERVER_PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
echo -e "${YELLOW}⚠️ 警告: 端口 $SERVER_PORT 已被占用${NC}"
echo ""
echo "占用端口的进程:"
lsof -Pi :$SERVER_PORT -sTCP:LISTEN
echo ""
read -p "是否停止现有进程并继续? (y/n): " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
PID=$(lsof -ti:$SERVER_PORT)
kill $PID 2>/dev/null
sleep 2
echo -e "${GREEN}✅ 已释放端口 $SERVER_PORT${NC}"
else
echo -e "${RED}❌ 操作已取消${NC}"
exit 1
fi
fi
}
# 显示环境信息
show_info() {
echo -e "${BLUE}═══════════════════════════════════════${NC}"
echo -e "${BLUE} 爱维宠物医院管理平台 - 打包启动脚本${NC}"
echo -e "${BLUE}═══════════════════════════════════════${NC}"
echo ""
echo -e "${GREEN}📦 使用 IDEA 内置 JDK:${NC} $JAVA_HOME"
echo -e "${GREEN}🔧 Java 版本:${NC}"
java -version 2>&1 | head -1
echo ""
echo -e "${GREEN}🚀 运行配置:${NC}"
echo " 端口: $SERVER_PORT"
echo " 环境: $ACTIVE_PROFILE"
echo " 调试: $([ "$DEBUG_MODE" = true ] && echo "开启 (端口: 5005)" || echo "关闭")"
echo " 后台: $([ "$BACKGROUND" = true ] && echo "是" || echo "否")"
echo ""
}
# 打包项目
build_project() {
echo -e "${BLUE}📦 开始打包项目...${NC}"
echo ""
if ! "$MAVEN_BIN" clean package $SKIP_TESTS; then
echo ""
echo -e "${RED}❌ 打包失败!${NC}"
exit 1
fi
echo ""
echo -e "${GREEN}✅ 打包成功!${NC}"
echo ""
}
# 启动应用
start_app() {
if [ ! -f "$JAR_PATH" ]; then
echo -e "${RED}❌ 错误: 未找到 jar 文件: $JAR_PATH${NC}"
exit 1
fi
check_port
# 构建启动命令
JAVA_OPTS="$JVM_OPTS"
if [ "$DEBUG_MODE" = true ]; then
JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"
echo -e "${YELLOW}🐛 调试模式已开启,可在 IDEA 中配置远程调试 (端口: 5005)${NC}"
fi
echo -e "${BLUE}🚀 正在启动应用...${NC}"
echo ""
if [ "$BACKGROUND" = true ]; then
# 后台运行
nohup java $JAVA_OPTS -jar "$JAR_PATH" \
--server.port=$SERVER_PORT \
--spring.profiles.active=$ACTIVE_PROFILE \
> "$SCRIPT_DIR/app.log" 2>&1 &
APP_PID=$!
echo $APP_PID > "$SCRIPT_DIR/app.pid"
echo -e "${GREEN}✅ 应用已在后台启动${NC}"
echo " 进程ID: $APP_PID"
echo " 访问地址: http://localhost:$SERVER_PORT"
echo " 日志文件: $SCRIPT_DIR/app.log"
echo ""
echo "查看日志: $0 --logs"
echo "停止服务: $0 --stop"
else
# 前台运行
echo -e "${GREEN}✅ 应用启动成功!${NC}"
echo " 访问地址: http://localhost:$SERVER_PORT"
echo " API 文档: http://localhost:$SERVER_PORT/swagger-ui.html"
echo ""
echo -e "${YELLOW}按 Ctrl+C 停止服务${NC}"
echo "═══════════════════════════════════════"
echo ""
java $JAVA_OPTS -jar "$JAR_PATH" \
--server.port=$SERVER_PORT \
--spring.profiles.active=$ACTIVE_PROFILE
fi
}
# 主流程
main() {
show_info
build_project
start_app
}
main